Ticket #650 (new cage)

Opened 13 years ago

Last modified 11 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 13 years ago by jkeenan

  • description modified (diff)

  Changed 13 years ago by bacek

  • description modified (diff)

  Changed 13 years ago by jkeenan

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

in reply to: ↑ description   Changed 12 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 12 years ago by coke

  • component changed from pmc2c to build

  Changed 11 years ago by cotto

  • owner cotto deleted

in reply to: ↑ description   Changed 11 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 11 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 11 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.