[svn:parrot] r49310 - branches/generational_gc/lib/Parrot/Pmc2c
bacek at svn.parrot.org
bacek at svn.parrot.org
Sat Sep 25 00:58:48 UTC 2010
Author: bacek
Date: Sat Sep 25 00:58:48 2010
New Revision: 49310
URL: https://trac.parrot.org/parrot/changeset/49310
Log:
Generate wb_get_vtable function
Modified:
branches/generational_gc/lib/Parrot/Pmc2c/PMCEmitter.pm
Modified: branches/generational_gc/lib/Parrot/Pmc2c/PMCEmitter.pm
==============================================================================
--- branches/generational_gc/lib/Parrot/Pmc2c/PMCEmitter.pm Sat Sep 25 00:58:31 2010 (r49309)
+++ branches/generational_gc/lib/Parrot/Pmc2c/PMCEmitter.pm Sat Sep 25 00:58:48 2010 (r49310)
@@ -1000,11 +1000,30 @@
return vt;
}
+EOC
+
+ $get_extra_vtable = '';
+
+ if ($first_parent eq 'default') {
+ $get_extra_vtable .= " vt = Parrot_default_wb_get_vtable(interp);\n";
+ }
+ else {
+ $get_extra_vtable .= " vt = Parrot_${first_parent}_wb_get_vtable(interp);\n";
+ }
+
+ foreach my $parent_name ( @other_parents ) {
+ $get_extra_vtable .= " Parrot_${parent_name}_wb_update_vtable(vt);\n";
+ }
+
+ $get_extra_vtable .= " Parrot_${classname}_wb_update_vtable(vt);\n";
+
+ $cout .= <<"EOC";
$export
PARROT_CANNOT_RETURN_NULL
PARROT_WARN_UNUSED_RESULT
VTABLE* Parrot_${classname}_wb_get_vtable(PARROT_INTERP) {
VTABLE *vt;
+$get_extra_vtable
return vt;
}
More information about the parrot-commits
mailing list