[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