Ticket #650 (new cage)

Opened 5 years ago

Last modified 4 years ago

Pmc2c requires major refactoring.

Reported by: bacek Owned by:
Priority: normal Milestone:
Component: build Version: 1.1.0
Severity: medium Keywords:
Cc: Language:
Patch status: Platform:

Description (last modified by bacek) (diff)

After working on #631 Pmc2c has changed and requires some refactorings. For example

* PMC/RO.pm isn't used heavily anymore.

* Handling of %extra_vt in PMCEmitter.pm can be simplified.

* Code for support "old" style MMD should be removed.

* etc.

Change History

  Changed 5 years ago by jkeenan

  • description modified (diff)

  Changed 5 years ago by bacek

  • description modified (diff)

  Changed 5 years ago by jkeenan

  • owner set to cotto
  • component changed from none to pmc2c

in reply to: ↑ description   Changed 5 years ago by jkeenan

Replying to bacek:

* PMC/RO.pm isn't used heavily anymore.

Here's where that file is mentioned in our source code.

fns . | xargs grep -nE 'PMC(/|::)RO'
./lib/Parrot/Pmc2c/PMC/default.pm:50:    my $ro = 
    Parrot::Pmc2c::PMC::RO->new($self);
./lib/Parrot/Pmc2c/PMC/RO.pm:23:package Parrot::Pmc2c::PMC::RO;
./lib/Parrot/Pmc2c/PMC/RO.pm:68:
            @{ ref($self) . '::ISA' } = "Parrot::Pmc2c::PMC::RO";
./lib/Parrot/Pmc2c/PMCEmitter.pm:32:use Parrot::Pmc2c::PMC::RO ();
./lib/Parrot/Pmc2c/PMCEmitter.pm:218:
    $self->ro( Parrot::Pmc2c::PMC::RO->new($self) )
./lib/Parrot/Pmc2c/Method.pm:205:    lib/Parrot/Pmc2c/PMC/RO.pm
./ports/cygwin/README:846: /usr/lib/parrot/1.0.0/tools/lib/Parrot/Pmc2c/PMC/RO.pm
./ports/cygwin/README:1232: 
    /usr/share/doc/parrot/1.0.0/html/lib/Parrot/Pmc2c/PMC/RO.pm.html
./config/auto/pmc.pm:69:    lib/Parrot/Pmc2c/PMC/RO.pm
./MANIFEST:1161:lib/Parrot/Pmc2c/PMC/RO.pm      [devel]lib

./lib/Parrot/Pmc2c/PMC/RO.pm is also the subject of TT #1240.

  Changed 4 years ago by coke

  • component changed from pmc2c to build

  Changed 4 years ago by cotto

  • owner cotto deleted

in reply to: ↑ description   Changed 4 years ago by jkeenan

Replying to bacek:

* Handling of %extra_vt in PMCEmitter.pm can be simplified.

PMCEmitter.pm no longer exists. This is what I found when grepping:

$ ack extra_vt *
lib/Parrot/Pmc2c/PMC.pm
1051:    my %extra_vt;
1052:    $extra_vt{ro} = $self->{ro} if $self->{ro};
1126:    for my $k ( keys %extra_vt ) {
1470:    my $get_extra_vtable = '';
1473:        $get_extra_vtable .= "    vt = Parrot_default_ro_get_vtable(interp);\n";
1476:        $get_extra_vtable .= "    vt = Parrot_${first_parent}_ro_get_vtable(interp);\n";
1480:        $get_extra_vtable .= "    Parrot_${parent_name}_ro_update_vtable(vt);\n";
1499:    $get_extra_vtable .= "    Parrot_${classname}_ro_update_vtable(vt);\n";
1507:$get_extra_vtable

kid51

in reply to: ↑ description   Changed 4 years ago by jkeenan

Replying to bacek:

After working on #631 Pmc2c has changed and requires some refactorings. For example

* Code for support "old" style MMD should be removed.

bacek, can you elaborate on that?

Thanks.

kid51

  Changed 4 years ago by bacek

Old "mmd" stuff was removed in d0f90ddbe1. Additional vtables handling is lta though.

-- Bacek

Note: See TracTickets for help on using tickets.