Ticket #882: pmc2c_super_dynpmc.patch

File pmc2c_super_dynpmc.patch, 0.8 KB (added by flh, 5 years ago)
  • lib/Parrot/Pmc2c/MethodEmitter.pm

     
    267267            \bSUPER\b         # Macro: SUPER 
    268268            \(\s*(.*?)\)      # capture argument list 
    269269          }x, 
    270             sub { "interp->vtables[$supertype]->$name(" . full_arguments($1) . ')' } 
     270            sub { 
     271              if($pmc->is_dynamic($super)) { 
     272                return "Parrot_" . $super . 
     273                  "_get_vtable(interp)->$name(" . full_arguments($1) . 
     274                  ')'; 
     275              } 
     276              else { 
     277                return "interp->vtables[$supertype]->$name(" . full_arguments($1) . ')'; 
     278              } 
     279            } 
    271280        ); 
    272281    } 
    273282