[svn:parrot] r38596 - branches/tt631_part3/lib/Parrot/Pmc2c
bacek at svn.parrot.org
bacek at svn.parrot.org
Fri May 8 10:41:36 UTC 2009
Author: bacek
Date: Fri May 8 10:41:35 2009
New Revision: 38596
URL: https://trac.parrot.org/parrot/changeset/38596
Log:
Always generate Parrot_Foo_ro_update_vtable function.
Modified:
branches/tt631_part3/lib/Parrot/Pmc2c/PMCEmitter.pm
Modified: branches/tt631_part3/lib/Parrot/Pmc2c/PMCEmitter.pm
==============================================================================
--- branches/tt631_part3/lib/Parrot/Pmc2c/PMCEmitter.pm Fri May 8 10:41:17 2009 (r38595)
+++ branches/tt631_part3/lib/Parrot/Pmc2c/PMCEmitter.pm Fri May 8 10:41:35 2009 (r38596)
@@ -827,28 +827,23 @@
EOC
- my %extra_vt;
- $extra_vt{ro} = $self->{ro} if $self->{ro};
-
- for my $k (keys %extra_vt) {
-
- my $vtable_updates = '';
- foreach my $vt_method ( @{ $self->$k->vtable->names} ) {
-
- next unless ($self->$k->implements_vtable($vt_method));
+ # Generate RO vtable for implemented non-updating methods
+ $vtable_updates = '';
+ foreach my $name ( @{ $self->vtable->names} ) {
+ next if $self->vtable_method_does_write($name);
+ next unless exists $self->{has_method}{$name};
- $vtable_updates .= " vt->$vt_method = Parrot_${classname}_${k}_${vt_method};\n";
- }
+ $vtable_updates .= " vt->$name = Parrot_${classname}_${name};\n";
+ }
- $cout .= <<"EOC";
+ $cout .= <<"EOC";
-PARROT_EXPORT VTABLE *Parrot_${classname}_${k}_update_vtable(VTABLE *vt) {
+PARROT_EXPORT VTABLE *Parrot_${classname}_ro_update_vtable(VTABLE *vt) {
$vtable_updates
return vt;
}
EOC
- }
$cout;
}
More information about the parrot-commits
mailing list