[svn:parrot] r48171 - in branches/gsoc_instrument: . runtime/parrot/library/Instrument src/dynpmc t/dynpmc tools/build

khairul at svn.parrot.org khairul at svn.parrot.org
Sat Jul 24 16:24:40 UTC 2010


Author: khairul
Date: Sat Jul 24 16:24:39 2010
New Revision: 48171
URL: https://trac.parrot.org/parrot/changeset/48171

Log:
Added tests for InstrumentVtable + Regenerated vtable stubs.

Added:
   branches/gsoc_instrument/t/dynpmc/instrumentvtable.t   (contents, props changed)
Modified:
   branches/gsoc_instrument/MANIFEST
   branches/gsoc_instrument/runtime/parrot/library/Instrument/EventLibrary.nqp
   branches/gsoc_instrument/src/dynpmc/instrument.pmc
   branches/gsoc_instrument/src/dynpmc/instrumentclass.pmc
   branches/gsoc_instrument/src/dynpmc/instrumentstubbase.pmc
   branches/gsoc_instrument/src/dynpmc/instrumentvtable.pmc
   branches/gsoc_instrument/tools/build/gen_vtable_stubs.pl

Modified: branches/gsoc_instrument/MANIFEST
==============================================================================
--- branches/gsoc_instrument/MANIFEST	Sat Jul 24 10:17:38 2010	(r48170)
+++ branches/gsoc_instrument/MANIFEST	Sat Jul 24 16:24:39 2010	(r48171)
@@ -1690,6 +1690,7 @@
 t/dynpmc/instrument.t                                       [test]
 t/dynpmc/instrumentgc.t                                     [test]
 t/dynpmc/instrumentop.t                                     [test]
+t/dynpmc/instrumentvtable.t                                 [test]
 t/dynpmc/os.t                                               [test]
 t/dynpmc/pccmethod_test.t                                   [test]
 t/dynpmc/rational.t                                         [test]

Modified: branches/gsoc_instrument/runtime/parrot/library/Instrument/EventLibrary.nqp
==============================================================================
--- branches/gsoc_instrument/runtime/parrot/library/Instrument/EventLibrary.nqp	Sat Jul 24 10:17:38 2010	(r48170)
+++ branches/gsoc_instrument/runtime/parrot/library/Instrument/EventLibrary.nqp	Sat Jul 24 16:24:39 2010	(r48171)
@@ -258,7 +258,7 @@
                 $class.remove_method_hook($_);
 
                 my $event := $method_prefix ~ $_;
-                $dispatcher.register($event, $!callback);
+                $dispatcher.deregister($event, $!callback);
             }
 
             CATCH {
@@ -266,7 +266,6 @@
                 # We are trying to disable a hook that wasn't inserted.
                 # TODO: Ensure that the exception came from a place that we are expecting.
                 #       Otherwise rethrow. (How to do that in NQP?)
-                say("Disable: " ~ $!);
             }
         }
 

Modified: branches/gsoc_instrument/src/dynpmc/instrument.pmc
==============================================================================
--- branches/gsoc_instrument/src/dynpmc/instrument.pmc	Sat Jul 24 10:17:38 2010	(r48170)
+++ branches/gsoc_instrument/src/dynpmc/instrument.pmc	Sat Jul 24 16:24:39 2010	(r48171)
@@ -608,6 +608,34 @@
     /* Detect any dynlib loading, for example during load_bytecode. */
     detect_loadlib(interp);
 
+    /* Refresh the probes. */
+    {
+        PMC *iter, *probes;
+        STRING *enable, *disable, *attr_enabled;
+
+        enable  = CONST_STRING(supervisor, "enable");
+        disable = CONST_STRING(supervisor, "disable");
+        attr_enabled = CONST_STRING(supervisor, "$!is_enabled");
+
+        GETATTR_Instrument_probes(supervisor, core->supervisor_pmc, probes);
+        iter = VTABLE_get_iter(supervisor, probes);
+
+        while (VTABLE_get_bool(supervisor, iter)) {
+            PMC *key, *obj, *enabled;
+            key = VTABLE_shift_pmc(supervisor, iter);
+            obj = VTABLE_get_pmc_keyed(supervisor, probes, key);
+
+            /* If this probe is disabled, ignore. */
+            enabled = VTABLE_get_attr_str(supervisor, obj, attr_enabled);
+            if (!VTABLE_get_integer(supervisor, enabled)) {
+                continue;
+            }
+
+            Parrot_pcc_invoke_method_from_c_args(supervisor, obj, disable, "->");
+            Parrot_pcc_invoke_method_from_c_args(supervisor, obj, enable,  "->");
+        }
+    }
+
     /* Setup an exception handler to handle exits and unhandled exceptions. */
     if (setjmp(exc_handler.resume)) {
         /* Check for exit or unhandled exception. */

Modified: branches/gsoc_instrument/src/dynpmc/instrumentclass.pmc
==============================================================================
--- branches/gsoc_instrument/src/dynpmc/instrumentclass.pmc	Sat Jul 24 10:17:38 2010	(r48170)
+++ branches/gsoc_instrument/src/dynpmc/instrumentclass.pmc	Sat Jul 24 16:24:39 2010	(r48171)
@@ -74,7 +74,7 @@
         method_list = Parrot_pmc_new(INTERP, enum_class_ResizableStringArray);
         iter        = VTABLE_get_iter(supervised, methods);
 
-        while(VTABLE_get_bool(supervised, iter)) {
+        while (VTABLE_get_bool(supervised, iter)) {
             PMC *key;
 
             key = VTABLE_shift_pmc(supervised, iter);
@@ -225,7 +225,7 @@
             key = VTABLE_shift_pmc(INTERP, iter);
             count = VTABLE_get_integer_keyed(INTERP, attr->instrumented_methods, key);
 
-            if(count > 0) {
+            if (count > 0) {
                 VTABLE_push_pmc(INTERP, list, key);
             }
         }

Modified: branches/gsoc_instrument/src/dynpmc/instrumentstubbase.pmc
==============================================================================
--- branches/gsoc_instrument/src/dynpmc/instrumentstubbase.pmc	Sat Jul 24 10:17:38 2010	(r48170)
+++ branches/gsoc_instrument/src/dynpmc/instrumentstubbase.pmc	Sat Jul 24 16:24:39 2010	(r48171)
@@ -92,6 +92,9 @@
         Parrot_InstrumentStubBase_attributes * const attr = PARROT_INSTRUMENTSTUBBASE(SELF);
 
         Parrot_gc_mark_PMC_alive_fun(INTERP, attr->hook_count);
+
+        parrot_mark_hash(INTERP, attr->group_items);
+        parrot_mark_hash(INTERP, attr->item_groups);
     }
 
 /*

Modified: branches/gsoc_instrument/src/dynpmc/instrumentvtable.pmc
==============================================================================
--- branches/gsoc_instrument/src/dynpmc/instrumentvtable.pmc	Sat Jul 24 10:17:38 2010	(r48170)
+++ branches/gsoc_instrument/src/dynpmc/instrumentvtable.pmc	Sat Jul 24 16:24:39 2010	(r48171)
@@ -274,7 +274,7 @@
                 PMC *override;
                 override = Parrot_oo_find_vtable_override_for_class(supervised, _class, name);
 
-                if(PMC_IS_NULL(override)) {
+                if (PMC_IS_NULL(override)) {
                     /* No override. */
                     /* Simply replace the stub with the original entry. */
                     entry = (size_t **) parrot_hash_get(INTERP, attr->name_offset, item);
@@ -4553,7 +4553,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->init(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -4567,6 +4566,8 @@
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "init"));
 
+
+    ((_vtable *)orig_vtable)->init(interp, pmc);
     return;
 }
 
@@ -4583,7 +4584,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->init_pmc(interp, pmc, initializer);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, initializer);
@@ -4598,6 +4598,8 @@
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "init_pmc"));
 
+
+    ((_vtable *)orig_vtable)->init_pmc(interp, pmc, initializer);
     return;
 }
 
@@ -4615,7 +4617,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->instantiate(interp, pmc, sig);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, sig);
@@ -4630,6 +4631,8 @@
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "instantiate"));
 
+
+    ret = ((_vtable *)orig_vtable)->instantiate(interp, pmc, sig);
     return ret;
 }
 
@@ -4646,7 +4649,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->morph(interp, pmc, type);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, type);
@@ -4664,6 +4666,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "morph"));
 
+
+    ((_vtable *)orig_vtable)->morph(interp, pmc, type);
     return;
 }
 
@@ -4680,7 +4684,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->mark(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -4694,6 +4697,8 @@
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "mark"));
 
+
+    ((_vtable *)orig_vtable)->mark(interp, pmc);
     return;
 }
 
@@ -4710,7 +4715,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->destroy(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -4724,6 +4728,8 @@
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "destroy"));
 
+
+    ((_vtable *)orig_vtable)->destroy(interp, pmc);
     return;
 }
 
@@ -4741,7 +4747,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_namespace(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -4755,6 +4760,8 @@
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "get_namespace"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_namespace(interp, pmc);
     return ret;
 }
 
@@ -4772,7 +4779,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->getprop(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -4789,6 +4795,8 @@
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "getprop"));
 
+
+    ret = ((_vtable *)orig_vtable)->getprop(interp, pmc, key);
     return ret;
 }
 
@@ -4805,7 +4813,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->setprop(interp, pmc, key, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -4823,6 +4830,8 @@
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "setprop"));
 
+
+    ((_vtable *)orig_vtable)->setprop(interp, pmc, key, value);
     return;
 }
 
@@ -4839,7 +4848,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->delprop(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -4856,6 +4864,8 @@
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "delprop"));
 
+
+    ((_vtable *)orig_vtable)->delprop(interp, pmc, key);
     return;
 }
 
@@ -4873,7 +4883,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->getprops(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -4887,6 +4896,8 @@
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "getprops"));
 
+
+    ret = ((_vtable *)orig_vtable)->getprops(interp, pmc);
     return ret;
 }
 
@@ -4904,7 +4915,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->type(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -4918,6 +4928,8 @@
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "type"));
 
+
+    ret = ((_vtable *)orig_vtable)->type(interp, pmc);
     return ret;
 }
 
@@ -4935,7 +4947,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->name(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -4949,6 +4960,8 @@
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "name"));
 
+
+    ret = ((_vtable *)orig_vtable)->name(interp, pmc);
     return ret;
 }
 
@@ -4966,7 +4979,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->clone(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -4980,6 +4992,8 @@
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "clone"));
 
+
+    ret = ((_vtable *)orig_vtable)->clone(interp, pmc);
     return ret;
 }
 
@@ -4997,7 +5011,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->clone_pmc(interp, pmc, args);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, args);
@@ -5012,6 +5025,8 @@
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "clone_pmc"));
 
+
+    ret = ((_vtable *)orig_vtable)->clone_pmc(interp, pmc, args);
     return ret;
 }
 
@@ -5029,7 +5044,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->find_method(interp, pmc, method_name);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -5046,6 +5060,8 @@
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "find_method"));
 
+
+    ret = ((_vtable *)orig_vtable)->find_method(interp, pmc, method_name);
     return ret;
 }
 
@@ -5063,7 +5079,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_integer(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -5077,6 +5092,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_integer"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_integer(interp, pmc);
     return ret;
 }
 
@@ -5094,7 +5111,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_integer_keyed(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, key);
@@ -5109,6 +5125,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_integer_keyed"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_integer_keyed(interp, pmc, key);
     return ret;
 }
 
@@ -5126,7 +5144,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_integer_keyed_int(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -5143,6 +5160,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_integer_keyed_int"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_integer_keyed_int(interp, pmc, key);
     return ret;
 }
 
@@ -5160,7 +5179,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_integer_keyed_str(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -5177,6 +5195,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_integer_keyed_str"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_integer_keyed_str(interp, pmc, key);
     return ret;
 }
 
@@ -5194,7 +5214,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_number(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -5208,6 +5227,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_number"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_number(interp, pmc);
     return ret;
 }
 
@@ -5225,7 +5246,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_number_keyed(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, key);
@@ -5240,6 +5260,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_number_keyed"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_number_keyed(interp, pmc, key);
     return ret;
 }
 
@@ -5257,7 +5279,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_number_keyed_int(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -5274,6 +5295,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_number_keyed_int"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_number_keyed_int(interp, pmc, key);
     return ret;
 }
 
@@ -5291,7 +5314,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_number_keyed_str(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -5308,6 +5330,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_number_keyed_str"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_number_keyed_str(interp, pmc, key);
     return ret;
 }
 
@@ -5325,7 +5349,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_string(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -5339,6 +5362,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_string"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_string(interp, pmc);
     return ret;
 }
 
@@ -5356,7 +5381,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_repr(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -5370,6 +5394,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_repr"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_repr(interp, pmc);
     return ret;
 }
 
@@ -5387,7 +5413,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_string_keyed(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, key);
@@ -5402,6 +5427,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_string_keyed"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_string_keyed(interp, pmc, key);
     return ret;
 }
 
@@ -5419,7 +5446,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_string_keyed_int(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -5436,6 +5462,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_string_keyed_int"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_string_keyed_int(interp, pmc, key);
     return ret;
 }
 
@@ -5453,7 +5481,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_string_keyed_str(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -5470,6 +5497,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_string_keyed_str"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_string_keyed_str(interp, pmc, key);
     return ret;
 }
 
@@ -5487,7 +5516,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_bool(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -5501,6 +5529,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_bool"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_bool(interp, pmc);
     return ret;
 }
 
@@ -5518,7 +5548,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_pmc(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -5532,6 +5561,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_pmc"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_pmc(interp, pmc);
     return ret;
 }
 
@@ -5549,7 +5580,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_pmc_keyed(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, key);
@@ -5564,6 +5594,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_pmc_keyed"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_pmc_keyed(interp, pmc, key);
     return ret;
 }
 
@@ -5581,7 +5613,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_pmc_keyed_int(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -5598,6 +5629,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_pmc_keyed_int"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_pmc_keyed_int(interp, pmc, key);
     return ret;
 }
 
@@ -5615,7 +5648,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_pmc_keyed_str(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -5632,6 +5664,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_pmc_keyed_str"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_pmc_keyed_str(interp, pmc, key);
     return ret;
 }
 
@@ -5649,7 +5683,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_pointer(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -5663,6 +5696,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_pointer"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_pointer(interp, pmc);
     return ret;
 }
 
@@ -5680,7 +5715,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_pointer_keyed(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, key);
@@ -5695,6 +5729,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_pointer_keyed"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_pointer_keyed(interp, pmc, key);
     return ret;
 }
 
@@ -5712,7 +5748,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_pointer_keyed_int(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -5729,6 +5764,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_pointer_keyed_int"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_pointer_keyed_int(interp, pmc, key);
     return ret;
 }
 
@@ -5746,7 +5783,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_pointer_keyed_str(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -5763,6 +5799,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_pointer_keyed_str"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_pointer_keyed_str(interp, pmc, key);
     return ret;
 }
 
@@ -5779,7 +5817,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_integer_native(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -5796,6 +5833,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_integer_native"));
 
+
+    ((_vtable *)orig_vtable)->set_integer_native(interp, pmc, value);
     return;
 }
 
@@ -5812,7 +5851,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_integer_keyed(interp, pmc, key, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, key);
@@ -5830,6 +5868,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_integer_keyed"));
 
+
+    ((_vtable *)orig_vtable)->set_integer_keyed(interp, pmc, key, value);
     return;
 }
 
@@ -5846,7 +5886,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_integer_keyed_int(interp, pmc, key, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -5866,6 +5905,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_integer_keyed_int"));
 
+
+    ((_vtable *)orig_vtable)->set_integer_keyed_int(interp, pmc, key, value);
     return;
 }
 
@@ -5882,7 +5923,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_integer_keyed_str(interp, pmc, key, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -5902,6 +5942,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_integer_keyed_str"));
 
+
+    ((_vtable *)orig_vtable)->set_integer_keyed_str(interp, pmc, key, value);
     return;
 }
 
@@ -5918,7 +5960,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_number_native(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Float);
@@ -5935,6 +5976,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_number_native"));
 
+
+    ((_vtable *)orig_vtable)->set_number_native(interp, pmc, value);
     return;
 }
 
@@ -5951,7 +5994,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_number_keyed(interp, pmc, key, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, key);
@@ -5969,6 +6011,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_number_keyed"));
 
+
+    ((_vtable *)orig_vtable)->set_number_keyed(interp, pmc, key, value);
     return;
 }
 
@@ -5985,7 +6029,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_number_keyed_int(interp, pmc, key, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -6005,6 +6048,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_number_keyed_int"));
 
+
+    ((_vtable *)orig_vtable)->set_number_keyed_int(interp, pmc, key, value);
     return;
 }
 
@@ -6021,7 +6066,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_number_keyed_str(interp, pmc, key, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -6041,6 +6085,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_number_keyed_str"));
 
+
+    ((_vtable *)orig_vtable)->set_number_keyed_str(interp, pmc, key, value);
     return;
 }
 
@@ -6057,7 +6103,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_string_native(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -6074,6 +6119,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_string_native"));
 
+
+    ((_vtable *)orig_vtable)->set_string_native(interp, pmc, value);
     return;
 }
 
@@ -6090,7 +6137,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->assign_string_native(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -6107,6 +6153,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "assign_string_native"));
 
+
+    ((_vtable *)orig_vtable)->assign_string_native(interp, pmc, value);
     return;
 }
 
@@ -6123,7 +6171,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_string_keyed(interp, pmc, key, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, key);
@@ -6141,6 +6188,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_string_keyed"));
 
+
+    ((_vtable *)orig_vtable)->set_string_keyed(interp, pmc, key, value);
     return;
 }
 
@@ -6157,7 +6206,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_string_keyed_int(interp, pmc, key, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -6177,6 +6225,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_string_keyed_int"));
 
+
+    ((_vtable *)orig_vtable)->set_string_keyed_int(interp, pmc, key, value);
     return;
 }
 
@@ -6193,7 +6243,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_string_keyed_str(interp, pmc, key, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -6213,6 +6262,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_string_keyed_str"));
 
+
+    ((_vtable *)orig_vtable)->set_string_keyed_str(interp, pmc, key, value);
     return;
 }
 
@@ -6229,7 +6280,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_bool(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -6246,6 +6296,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_bool"));
 
+
+    ((_vtable *)orig_vtable)->set_bool(interp, pmc, value);
     return;
 }
 
@@ -6262,7 +6314,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_pmc(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -6277,6 +6328,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_pmc"));
 
+
+    ((_vtable *)orig_vtable)->set_pmc(interp, pmc, value);
     return;
 }
 
@@ -6293,7 +6346,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->assign_pmc(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -6308,6 +6360,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "assign_pmc"));
 
+
+    ((_vtable *)orig_vtable)->assign_pmc(interp, pmc, value);
     return;
 }
 
@@ -6324,7 +6378,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_pmc_keyed(interp, pmc, key, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, key);
@@ -6340,6 +6393,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_pmc_keyed"));
 
+
+    ((_vtable *)orig_vtable)->set_pmc_keyed(interp, pmc, key, value);
     return;
 }
 
@@ -6356,7 +6411,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_pmc_keyed_int(interp, pmc, key, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -6374,6 +6428,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_pmc_keyed_int"));
 
+
+    ((_vtable *)orig_vtable)->set_pmc_keyed_int(interp, pmc, key, value);
     return;
 }
 
@@ -6390,7 +6446,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_pmc_keyed_str(interp, pmc, key, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -6408,6 +6463,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_pmc_keyed_str"));
 
+
+    ((_vtable *)orig_vtable)->set_pmc_keyed_str(interp, pmc, key, value);
     return;
 }
 
@@ -6424,7 +6481,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_pointer(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Pointer);
@@ -6441,6 +6497,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_pointer"));
 
+
+    ((_vtable *)orig_vtable)->set_pointer(interp, pmc, value);
     return;
 }
 
@@ -6457,7 +6515,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_pointer_keyed(interp, pmc, key, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, key);
@@ -6475,6 +6532,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_pointer_keyed"));
 
+
+    ((_vtable *)orig_vtable)->set_pointer_keyed(interp, pmc, key, value);
     return;
 }
 
@@ -6491,7 +6550,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_pointer_keyed_int(interp, pmc, key, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -6511,6 +6569,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_pointer_keyed_int"));
 
+
+    ((_vtable *)orig_vtable)->set_pointer_keyed_int(interp, pmc, key, value);
     return;
 }
 
@@ -6527,7 +6587,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_pointer_keyed_str(interp, pmc, key, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -6547,6 +6606,8 @@
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_pointer_keyed_str"));
 
+
+    ((_vtable *)orig_vtable)->set_pointer_keyed_str(interp, pmc, key, value);
     return;
 }
 
@@ -6564,7 +6625,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->elements(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -6578,6 +6638,8 @@
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "elements"));
 
+
+    ret = ((_vtable *)orig_vtable)->elements(interp, pmc);
     return ret;
 }
 
@@ -6595,7 +6657,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->pop_integer(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -6609,6 +6670,8 @@
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "pop_integer"));
 
+
+    ret = ((_vtable *)orig_vtable)->pop_integer(interp, pmc);
     return ret;
 }
 
@@ -6626,7 +6689,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->pop_float(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -6640,6 +6702,8 @@
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "pop_float"));
 
+
+    ret = ((_vtable *)orig_vtable)->pop_float(interp, pmc);
     return ret;
 }
 
@@ -6657,7 +6721,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->pop_string(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -6671,6 +6734,8 @@
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "pop_string"));
 
+
+    ret = ((_vtable *)orig_vtable)->pop_string(interp, pmc);
     return ret;
 }
 
@@ -6688,7 +6753,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->pop_pmc(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -6702,6 +6766,8 @@
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "pop_pmc"));
 
+
+    ret = ((_vtable *)orig_vtable)->pop_pmc(interp, pmc);
     return ret;
 }
 
@@ -6718,7 +6784,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->push_integer(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -6735,6 +6800,8 @@
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "push_integer"));
 
+
+    ((_vtable *)orig_vtable)->push_integer(interp, pmc, value);
     return;
 }
 
@@ -6751,7 +6818,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->push_float(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Float);
@@ -6768,6 +6834,8 @@
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "push_float"));
 
+
+    ((_vtable *)orig_vtable)->push_float(interp, pmc, value);
     return;
 }
 
@@ -6784,7 +6852,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->push_string(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -6801,6 +6868,8 @@
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "push_string"));
 
+
+    ((_vtable *)orig_vtable)->push_string(interp, pmc, value);
     return;
 }
 
@@ -6817,7 +6886,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->push_pmc(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -6832,6 +6900,8 @@
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "push_pmc"));
 
+
+    ((_vtable *)orig_vtable)->push_pmc(interp, pmc, value);
     return;
 }
 
@@ -6849,7 +6919,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->shift_integer(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -6863,6 +6932,8 @@
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "shift_integer"));
 
+
+    ret = ((_vtable *)orig_vtable)->shift_integer(interp, pmc);
     return ret;
 }
 
@@ -6880,7 +6951,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->shift_float(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -6894,6 +6964,8 @@
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "shift_float"));
 
+
+    ret = ((_vtable *)orig_vtable)->shift_float(interp, pmc);
     return ret;
 }
 
@@ -6911,7 +6983,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->shift_string(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -6925,6 +6996,8 @@
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "shift_string"));
 
+
+    ret = ((_vtable *)orig_vtable)->shift_string(interp, pmc);
     return ret;
 }
 
@@ -6942,7 +7015,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->shift_pmc(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -6956,6 +7028,8 @@
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "shift_pmc"));
 
+
+    ret = ((_vtable *)orig_vtable)->shift_pmc(interp, pmc);
     return ret;
 }
 
@@ -6972,7 +7046,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->unshift_integer(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -6989,6 +7062,8 @@
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "unshift_integer"));
 
+
+    ((_vtable *)orig_vtable)->unshift_integer(interp, pmc, value);
     return;
 }
 
@@ -7005,7 +7080,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->unshift_float(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Float);
@@ -7022,6 +7096,8 @@
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "unshift_float"));
 
+
+    ((_vtable *)orig_vtable)->unshift_float(interp, pmc, value);
     return;
 }
 
@@ -7038,7 +7114,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->unshift_string(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -7055,6 +7130,8 @@
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "unshift_string"));
 
+
+    ((_vtable *)orig_vtable)->unshift_string(interp, pmc, value);
     return;
 }
 
@@ -7071,7 +7148,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->unshift_pmc(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -7086,6 +7162,8 @@
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "unshift_pmc"));
 
+
+    ((_vtable *)orig_vtable)->unshift_pmc(interp, pmc, value);
     return;
 }
 
@@ -7102,7 +7180,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->splice(interp, pmc, value, offset, count);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -7123,6 +7200,8 @@
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "splice"));
 
+
+    ((_vtable *)orig_vtable)->splice(interp, pmc, value, offset, count);
     return;
 }
 
@@ -7140,7 +7219,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->add(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -7156,6 +7234,8 @@
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "add"));
 
+
+    ret = ((_vtable *)orig_vtable)->add(interp, pmc, value, dest);
     return ret;
 }
 
@@ -7173,7 +7253,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->add_int(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -7191,6 +7270,8 @@
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "add_int"));
 
+
+    ret = ((_vtable *)orig_vtable)->add_int(interp, pmc, value, dest);
     return ret;
 }
 
@@ -7208,7 +7289,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->add_float(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Float);
@@ -7226,6 +7306,8 @@
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "add_float"));
 
+
+    ret = ((_vtable *)orig_vtable)->add_float(interp, pmc, value, dest);
     return ret;
 }
 
@@ -7242,7 +7324,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_add(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -7260,6 +7341,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_add"));
 
+
+    ((_vtable *)orig_vtable)->i_add(interp, pmc, value);
     return;
 }
 
@@ -7276,7 +7359,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_add_int(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -7296,6 +7378,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_add_int"));
 
+
+    ((_vtable *)orig_vtable)->i_add_int(interp, pmc, value);
     return;
 }
 
@@ -7312,7 +7396,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_add_float(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Float);
@@ -7332,6 +7415,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_add_float"));
 
+
+    ((_vtable *)orig_vtable)->i_add_float(interp, pmc, value);
     return;
 }
 
@@ -7349,7 +7434,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->subtract(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -7365,6 +7449,8 @@
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "subtract"));
 
+
+    ret = ((_vtable *)orig_vtable)->subtract(interp, pmc, value, dest);
     return ret;
 }
 
@@ -7382,7 +7468,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->subtract_int(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -7400,6 +7485,8 @@
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "subtract_int"));
 
+
+    ret = ((_vtable *)orig_vtable)->subtract_int(interp, pmc, value, dest);
     return ret;
 }
 
@@ -7417,7 +7504,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->subtract_float(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Float);
@@ -7435,6 +7521,8 @@
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "subtract_float"));
 
+
+    ret = ((_vtable *)orig_vtable)->subtract_float(interp, pmc, value, dest);
     return ret;
 }
 
@@ -7451,7 +7539,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_subtract(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -7469,6 +7556,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_subtract"));
 
+
+    ((_vtable *)orig_vtable)->i_subtract(interp, pmc, value);
     return;
 }
 
@@ -7485,7 +7574,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_subtract_int(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -7505,6 +7593,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_subtract_int"));
 
+
+    ((_vtable *)orig_vtable)->i_subtract_int(interp, pmc, value);
     return;
 }
 
@@ -7521,7 +7611,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_subtract_float(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Float);
@@ -7541,6 +7630,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_subtract_float"));
 
+
+    ((_vtable *)orig_vtable)->i_subtract_float(interp, pmc, value);
     return;
 }
 
@@ -7558,7 +7649,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->multiply(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -7574,6 +7664,8 @@
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "multiply"));
 
+
+    ret = ((_vtable *)orig_vtable)->multiply(interp, pmc, value, dest);
     return ret;
 }
 
@@ -7591,7 +7683,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->multiply_int(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -7609,6 +7700,8 @@
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "multiply_int"));
 
+
+    ret = ((_vtable *)orig_vtable)->multiply_int(interp, pmc, value, dest);
     return ret;
 }
 
@@ -7626,7 +7719,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->multiply_float(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Float);
@@ -7644,6 +7736,8 @@
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "multiply_float"));
 
+
+    ret = ((_vtable *)orig_vtable)->multiply_float(interp, pmc, value, dest);
     return ret;
 }
 
@@ -7660,7 +7754,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_multiply(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -7678,6 +7771,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_multiply"));
 
+
+    ((_vtable *)orig_vtable)->i_multiply(interp, pmc, value);
     return;
 }
 
@@ -7694,7 +7789,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_multiply_int(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -7714,6 +7808,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_multiply_int"));
 
+
+    ((_vtable *)orig_vtable)->i_multiply_int(interp, pmc, value);
     return;
 }
 
@@ -7730,7 +7826,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_multiply_float(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Float);
@@ -7750,6 +7845,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_multiply_float"));
 
+
+    ((_vtable *)orig_vtable)->i_multiply_float(interp, pmc, value);
     return;
 }
 
@@ -7767,7 +7864,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->divide(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -7783,6 +7879,8 @@
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "divide"));
 
+
+    ret = ((_vtable *)orig_vtable)->divide(interp, pmc, value, dest);
     return ret;
 }
 
@@ -7800,7 +7898,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->divide_int(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -7818,6 +7915,8 @@
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "divide_int"));
 
+
+    ret = ((_vtable *)orig_vtable)->divide_int(interp, pmc, value, dest);
     return ret;
 }
 
@@ -7835,7 +7934,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->divide_float(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Float);
@@ -7853,6 +7951,8 @@
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "divide_float"));
 
+
+    ret = ((_vtable *)orig_vtable)->divide_float(interp, pmc, value, dest);
     return ret;
 }
 
@@ -7869,7 +7969,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_divide(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -7887,6 +7986,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_divide"));
 
+
+    ((_vtable *)orig_vtable)->i_divide(interp, pmc, value);
     return;
 }
 
@@ -7903,7 +8004,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_divide_int(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -7923,6 +8023,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_divide_int"));
 
+
+    ((_vtable *)orig_vtable)->i_divide_int(interp, pmc, value);
     return;
 }
 
@@ -7939,7 +8041,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_divide_float(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Float);
@@ -7959,6 +8060,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_divide_float"));
 
+
+    ((_vtable *)orig_vtable)->i_divide_float(interp, pmc, value);
     return;
 }
 
@@ -7976,7 +8079,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->floor_divide(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -7992,6 +8094,8 @@
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "floor_divide"));
 
+
+    ret = ((_vtable *)orig_vtable)->floor_divide(interp, pmc, value, dest);
     return ret;
 }
 
@@ -8009,7 +8113,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->floor_divide_int(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -8027,6 +8130,8 @@
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "floor_divide_int"));
 
+
+    ret = ((_vtable *)orig_vtable)->floor_divide_int(interp, pmc, value, dest);
     return ret;
 }
 
@@ -8044,7 +8149,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->floor_divide_float(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Float);
@@ -8062,6 +8166,8 @@
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "floor_divide_float"));
 
+
+    ret = ((_vtable *)orig_vtable)->floor_divide_float(interp, pmc, value, dest);
     return ret;
 }
 
@@ -8078,7 +8184,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_floor_divide(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -8096,6 +8201,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_floor_divide"));
 
+
+    ((_vtable *)orig_vtable)->i_floor_divide(interp, pmc, value);
     return;
 }
 
@@ -8112,7 +8219,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_floor_divide_int(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -8132,6 +8238,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_floor_divide_int"));
 
+
+    ((_vtable *)orig_vtable)->i_floor_divide_int(interp, pmc, value);
     return;
 }
 
@@ -8148,7 +8256,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_floor_divide_float(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Float);
@@ -8168,6 +8275,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_floor_divide_float"));
 
+
+    ((_vtable *)orig_vtable)->i_floor_divide_float(interp, pmc, value);
     return;
 }
 
@@ -8185,7 +8294,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->modulus(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -8201,6 +8309,8 @@
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "modulus"));
 
+
+    ret = ((_vtable *)orig_vtable)->modulus(interp, pmc, value, dest);
     return ret;
 }
 
@@ -8218,7 +8328,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->modulus_int(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -8236,6 +8345,8 @@
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "modulus_int"));
 
+
+    ret = ((_vtable *)orig_vtable)->modulus_int(interp, pmc, value, dest);
     return ret;
 }
 
@@ -8253,7 +8364,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->modulus_float(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Float);
@@ -8271,6 +8381,8 @@
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "modulus_float"));
 
+
+    ret = ((_vtable *)orig_vtable)->modulus_float(interp, pmc, value, dest);
     return ret;
 }
 
@@ -8287,7 +8399,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_modulus(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -8305,6 +8416,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_modulus"));
 
+
+    ((_vtable *)orig_vtable)->i_modulus(interp, pmc, value);
     return;
 }
 
@@ -8321,7 +8434,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_modulus_int(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -8341,6 +8453,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_modulus_int"));
 
+
+    ((_vtable *)orig_vtable)->i_modulus_int(interp, pmc, value);
     return;
 }
 
@@ -8357,7 +8471,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_modulus_float(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Float);
@@ -8377,6 +8490,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_modulus_float"));
 
+
+    ((_vtable *)orig_vtable)->i_modulus_float(interp, pmc, value);
     return;
 }
 
@@ -8393,7 +8508,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->increment(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -8410,6 +8524,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "increment"));
 
+
+    ((_vtable *)orig_vtable)->increment(interp, pmc);
     return;
 }
 
@@ -8426,7 +8542,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->decrement(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -8443,6 +8558,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "decrement"));
 
+
+    ((_vtable *)orig_vtable)->decrement(interp, pmc);
     return;
 }
 
@@ -8460,7 +8577,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->absolute(interp, pmc, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, dest);
@@ -8475,6 +8591,8 @@
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "absolute"));
 
+
+    ret = ((_vtable *)orig_vtable)->absolute(interp, pmc, dest);
     return ret;
 }
 
@@ -8491,7 +8609,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_absolute(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -8508,6 +8625,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_absolute"));
 
+
+    ((_vtable *)orig_vtable)->i_absolute(interp, pmc);
     return;
 }
 
@@ -8525,7 +8644,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->neg(interp, pmc, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, dest);
@@ -8540,6 +8658,8 @@
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "neg"));
 
+
+    ret = ((_vtable *)orig_vtable)->neg(interp, pmc, dest);
     return ret;
 }
 
@@ -8556,7 +8676,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_neg(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -8573,6 +8692,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_neg"));
 
+
+    ((_vtable *)orig_vtable)->i_neg(interp, pmc);
     return;
 }
 
@@ -8590,7 +8711,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->is_equal(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -8605,6 +8725,8 @@
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "is_equal"));
 
+
+    ret = ((_vtable *)orig_vtable)->is_equal(interp, pmc, value);
     return ret;
 }
 
@@ -8622,7 +8744,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->is_equal_num(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -8637,6 +8758,8 @@
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "is_equal_num"));
 
+
+    ret = ((_vtable *)orig_vtable)->is_equal_num(interp, pmc, value);
     return ret;
 }
 
@@ -8654,7 +8777,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->is_equal_string(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -8669,6 +8791,8 @@
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "is_equal_string"));
 
+
+    ret = ((_vtable *)orig_vtable)->is_equal_string(interp, pmc, value);
     return ret;
 }
 
@@ -8686,7 +8810,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->is_same(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -8701,6 +8824,8 @@
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "is_same"));
 
+
+    ret = ((_vtable *)orig_vtable)->is_same(interp, pmc, value);
     return ret;
 }
 
@@ -8718,7 +8843,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->cmp(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -8733,6 +8857,8 @@
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "cmp"));
 
+
+    ret = ((_vtable *)orig_vtable)->cmp(interp, pmc, value);
     return ret;
 }
 
@@ -8750,7 +8876,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->cmp_num(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -8765,6 +8890,8 @@
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "cmp_num"));
 
+
+    ret = ((_vtable *)orig_vtable)->cmp_num(interp, pmc, value);
     return ret;
 }
 
@@ -8782,7 +8909,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->cmp_string(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -8797,6 +8923,8 @@
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "cmp_string"));
 
+
+    ret = ((_vtable *)orig_vtable)->cmp_string(interp, pmc, value);
     return ret;
 }
 
@@ -8814,7 +8942,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->cmp_pmc(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -8829,6 +8956,8 @@
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "cmp_pmc"));
 
+
+    ret = ((_vtable *)orig_vtable)->cmp_pmc(interp, pmc, value);
     return ret;
 }
 
@@ -8846,7 +8975,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->logical_or(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -8862,6 +8990,8 @@
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "logical_or"));
 
+
+    ret = ((_vtable *)orig_vtable)->logical_or(interp, pmc, value, dest);
     return ret;
 }
 
@@ -8879,7 +9009,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->logical_and(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -8895,6 +9024,8 @@
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "logical_and"));
 
+
+    ret = ((_vtable *)orig_vtable)->logical_and(interp, pmc, value, dest);
     return ret;
 }
 
@@ -8912,7 +9043,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->logical_xor(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -8928,6 +9058,8 @@
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "logical_xor"));
 
+
+    ret = ((_vtable *)orig_vtable)->logical_xor(interp, pmc, value, dest);
     return ret;
 }
 
@@ -8945,7 +9077,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->logical_not(interp, pmc, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, dest);
@@ -8960,6 +9091,8 @@
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "logical_not"));
 
+
+    ret = ((_vtable *)orig_vtable)->logical_not(interp, pmc, dest);
     return ret;
 }
 
@@ -8976,7 +9109,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_logical_not(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -8993,6 +9125,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_logical_not"));
 
+
+    ((_vtable *)orig_vtable)->i_logical_not(interp, pmc);
     return;
 }
 
@@ -9010,7 +9144,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->concatenate(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -9026,6 +9159,8 @@
                    CONST_STRING(supervisor, "string"),
                    CONST_STRING(supervisor, "concatenate"));
 
+
+    ret = ((_vtable *)orig_vtable)->concatenate(interp, pmc, value, dest);
     return ret;
 }
 
@@ -9043,7 +9178,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->concatenate_str(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -9061,6 +9195,8 @@
                    CONST_STRING(supervisor, "string"),
                    CONST_STRING(supervisor, "concatenate_str"));
 
+
+    ret = ((_vtable *)orig_vtable)->concatenate_str(interp, pmc, value, dest);
     return ret;
 }
 
@@ -9077,7 +9213,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_concatenate(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -9095,6 +9230,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_concatenate"));
 
+
+    ((_vtable *)orig_vtable)->i_concatenate(interp, pmc, value);
     return;
 }
 
@@ -9111,7 +9248,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_concatenate_str(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -9131,6 +9267,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_concatenate_str"));
 
+
+    ((_vtable *)orig_vtable)->i_concatenate_str(interp, pmc, value);
     return;
 }
 
@@ -9148,7 +9286,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->repeat(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -9164,6 +9301,8 @@
                    CONST_STRING(supervisor, "string"),
                    CONST_STRING(supervisor, "repeat"));
 
+
+    ret = ((_vtable *)orig_vtable)->repeat(interp, pmc, value, dest);
     return ret;
 }
 
@@ -9181,7 +9320,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->repeat_int(interp, pmc, value, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -9199,6 +9337,8 @@
                    CONST_STRING(supervisor, "string"),
                    CONST_STRING(supervisor, "repeat_int"));
 
+
+    ret = ((_vtable *)orig_vtable)->repeat_int(interp, pmc, value, dest);
     return ret;
 }
 
@@ -9215,7 +9355,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_repeat(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, value);
@@ -9233,6 +9372,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_repeat"));
 
+
+    ((_vtable *)orig_vtable)->i_repeat(interp, pmc, value);
     return;
 }
 
@@ -9249,7 +9390,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->i_repeat_int(interp, pmc, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -9269,6 +9409,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_repeat_int"));
 
+
+    ((_vtable *)orig_vtable)->i_repeat_int(interp, pmc, value);
     return;
 }
 
@@ -9285,7 +9427,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->substr(interp, pmc, offset, length, dest);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -9306,6 +9447,8 @@
                    CONST_STRING(supervisor, "string"),
                    CONST_STRING(supervisor, "substr"));
 
+
+    ((_vtable *)orig_vtable)->substr(interp, pmc, offset, length, dest);
     return;
 }
 
@@ -9323,7 +9466,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->substr_str(interp, pmc, offset, length);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -9343,6 +9485,8 @@
                    CONST_STRING(supervisor, "string"),
                    CONST_STRING(supervisor, "substr_str"));
 
+
+    ret = ((_vtable *)orig_vtable)->substr_str(interp, pmc, offset, length);
     return ret;
 }
 
@@ -9360,7 +9504,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->exists_keyed(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, key);
@@ -9375,6 +9518,8 @@
                    CONST_STRING(supervisor, "exists"),
                    CONST_STRING(supervisor, "exists_keyed"));
 
+
+    ret = ((_vtable *)orig_vtable)->exists_keyed(interp, pmc, key);
     return ret;
 }
 
@@ -9392,7 +9537,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->exists_keyed_int(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -9409,6 +9553,8 @@
                    CONST_STRING(supervisor, "exists"),
                    CONST_STRING(supervisor, "exists_keyed_int"));
 
+
+    ret = ((_vtable *)orig_vtable)->exists_keyed_int(interp, pmc, key);
     return ret;
 }
 
@@ -9426,7 +9572,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->exists_keyed_str(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -9443,6 +9588,8 @@
                    CONST_STRING(supervisor, "exists"),
                    CONST_STRING(supervisor, "exists_keyed_str"));
 
+
+    ret = ((_vtable *)orig_vtable)->exists_keyed_str(interp, pmc, key);
     return ret;
 }
 
@@ -9460,7 +9607,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->defined(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -9474,6 +9620,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "defined"));
 
+
+    ret = ((_vtable *)orig_vtable)->defined(interp, pmc);
     return ret;
 }
 
@@ -9491,7 +9639,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->defined_keyed(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, key);
@@ -9506,6 +9653,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "defined_keyed"));
 
+
+    ret = ((_vtable *)orig_vtable)->defined_keyed(interp, pmc, key);
     return ret;
 }
 
@@ -9523,7 +9672,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->defined_keyed_int(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -9540,6 +9688,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "defined_keyed_int"));
 
+
+    ret = ((_vtable *)orig_vtable)->defined_keyed_int(interp, pmc, key);
     return ret;
 }
 
@@ -9557,7 +9707,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->defined_keyed_str(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -9574,6 +9723,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "defined_keyed_str"));
 
+
+    ret = ((_vtable *)orig_vtable)->defined_keyed_str(interp, pmc, key);
     return ret;
 }
 
@@ -9590,7 +9741,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->delete_keyed(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, key);
@@ -9605,6 +9755,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "delete_keyed"));
 
+
+    ((_vtable *)orig_vtable)->delete_keyed(interp, pmc, key);
     return;
 }
 
@@ -9621,7 +9773,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->delete_keyed_int(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -9638,6 +9789,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "delete_keyed_int"));
 
+
+    ((_vtable *)orig_vtable)->delete_keyed_int(interp, pmc, key);
     return;
 }
 
@@ -9654,7 +9807,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->delete_keyed_str(interp, pmc, key);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -9671,6 +9823,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "delete_keyed_str"));
 
+
+    ((_vtable *)orig_vtable)->delete_keyed_str(interp, pmc, key);
     return;
 }
 
@@ -9688,7 +9842,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_iter(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -9702,6 +9855,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "get_iter"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_iter(interp, pmc);
     return ret;
 }
 
@@ -9719,7 +9874,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->hashvalue(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -9733,6 +9887,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "hashvalue"));
 
+
+    ret = ((_vtable *)orig_vtable)->hashvalue(interp, pmc);
     return ret;
 }
 
@@ -9750,7 +9906,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->invoke(interp, pmc, next);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Pointer);
@@ -9767,6 +9922,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "invoke"));
 
+
+    ret = ((_vtable *)orig_vtable)->invoke(interp, pmc, next);
     return ret;
 }
 
@@ -9784,7 +9941,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->can(interp, pmc, method);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -9801,6 +9957,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "can"));
 
+
+    ret = ((_vtable *)orig_vtable)->can(interp, pmc, method);
     return ret;
 }
 
@@ -9818,7 +9976,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->does_pmc(interp, pmc, role);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, role);
@@ -9833,6 +9990,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "does_pmc"));
 
+
+    ret = ((_vtable *)orig_vtable)->does_pmc(interp, pmc, role);
     return ret;
 }
 
@@ -9850,7 +10009,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->does(interp, pmc, role);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -9867,6 +10025,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "does"));
 
+
+    ret = ((_vtable *)orig_vtable)->does(interp, pmc, role);
     return ret;
 }
 
@@ -9884,7 +10044,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->isa_pmc(interp, pmc, _class);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, _class);
@@ -9899,6 +10058,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "isa_pmc"));
 
+
+    ret = ((_vtable *)orig_vtable)->isa_pmc(interp, pmc, _class);
     return ret;
 }
 
@@ -9916,7 +10077,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->isa(interp, pmc, _class);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -9933,6 +10093,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "isa"));
 
+
+    ret = ((_vtable *)orig_vtable)->isa(interp, pmc, _class);
     return ret;
 }
 
@@ -9950,7 +10112,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_attr_str(interp, pmc, idx);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -9967,6 +10128,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "get_attr_str"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_attr_str(interp, pmc, idx);
     return ret;
 }
 
@@ -9984,7 +10147,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_attr_keyed(interp, pmc, key, idx);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, key);
@@ -10002,6 +10164,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "get_attr_keyed"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_attr_keyed(interp, pmc, key, idx);
     return ret;
 }
 
@@ -10018,7 +10182,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_attr_str(interp, pmc, idx, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -10039,6 +10202,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "set_attr_str"));
 
+
+    ((_vtable *)orig_vtable)->set_attr_str(interp, pmc, idx, value);
     return;
 }
 
@@ -10055,7 +10220,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->set_attr_keyed(interp, pmc, key, idx, value);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, key);
@@ -10077,6 +10241,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "set_attr_keyed"));
 
+
+    ((_vtable *)orig_vtable)->set_attr_keyed(interp, pmc, key, idx, value);
     return;
 }
 
@@ -10094,7 +10260,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->get_class(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -10108,6 +10273,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "get_class"));
 
+
+    ret = ((_vtable *)orig_vtable)->get_class(interp, pmc);
     return ret;
 }
 
@@ -10124,7 +10291,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->add_parent(interp, pmc, parent);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, parent);
@@ -10142,6 +10308,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "add_parent"));
 
+
+    ((_vtable *)orig_vtable)->add_parent(interp, pmc, parent);
     return;
 }
 
@@ -10158,7 +10326,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->remove_parent(interp, pmc, parent);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, parent);
@@ -10176,6 +10343,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "remove_parent"));
 
+
+    ((_vtable *)orig_vtable)->remove_parent(interp, pmc, parent);
     return;
 }
 
@@ -10192,7 +10361,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->add_role(interp, pmc, role);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, role);
@@ -10210,6 +10378,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "add_role"));
 
+
+    ((_vtable *)orig_vtable)->add_role(interp, pmc, role);
     return;
 }
 
@@ -10226,7 +10396,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->remove_role(interp, pmc, role);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, role);
@@ -10244,6 +10413,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "remove_role"));
 
+
+    ((_vtable *)orig_vtable)->remove_role(interp, pmc, role);
     return;
 }
 
@@ -10260,7 +10431,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->add_attribute(interp, pmc, name, type);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -10281,6 +10451,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "add_attribute"));
 
+
+    ((_vtable *)orig_vtable)->add_attribute(interp, pmc, name, type);
     return;
 }
 
@@ -10297,7 +10469,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->remove_attribute(interp, pmc, name);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -10317,6 +10488,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "remove_attribute"));
 
+
+    ((_vtable *)orig_vtable)->remove_attribute(interp, pmc, name);
     return;
 }
 
@@ -10333,7 +10506,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->add_method(interp, pmc, method_name, sub_pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -10354,6 +10526,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "add_method"));
 
+
+    ((_vtable *)orig_vtable)->add_method(interp, pmc, method_name, sub_pmc);
     return;
 }
 
@@ -10370,7 +10544,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->remove_method(interp, pmc, method_name);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -10390,6 +10563,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "remove_method"));
 
+
+    ((_vtable *)orig_vtable)->remove_method(interp, pmc, method_name);
     return;
 }
 
@@ -10406,7 +10581,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->add_vtable_override(interp, pmc, vtable_name, sub_pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -10427,6 +10601,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "add_vtable_override"));
 
+
+    ((_vtable *)orig_vtable)->add_vtable_override(interp, pmc, vtable_name, sub_pmc);
     return;
 }
 
@@ -10443,7 +10619,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->remove_vtable_override(interp, pmc, vtable_name);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -10463,6 +10638,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "remove_vtable_override"));
 
+
+    ((_vtable *)orig_vtable)->remove_vtable_override(interp, pmc, vtable_name);
     return;
 }
 
@@ -10480,7 +10657,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->inspect(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -10494,6 +10670,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "inspect"));
 
+
+    ret = ((_vtable *)orig_vtable)->inspect(interp, pmc);
     return ret;
 }
 
@@ -10511,7 +10689,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->inspect_str(interp, pmc, what);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -10528,6 +10705,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "inspect_str"));
 
+
+    ret = ((_vtable *)orig_vtable)->inspect_str(interp, pmc, what);
     return ret;
 }
 
@@ -10544,7 +10723,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->freeze(interp, pmc, info);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, info);
@@ -10559,6 +10737,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "freeze"));
 
+
+    ((_vtable *)orig_vtable)->freeze(interp, pmc, info);
     return;
 }
 
@@ -10575,7 +10755,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->thaw(interp, pmc, info);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, info);
@@ -10593,6 +10772,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "thaw"));
 
+
+    ((_vtable *)orig_vtable)->thaw(interp, pmc, info);
     return;
 }
 
@@ -10609,7 +10790,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->thawfinish(interp, pmc, info);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, info);
@@ -10627,6 +10807,8 @@
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "thawfinish"));
 
+
+    ((_vtable *)orig_vtable)->thawfinish(interp, pmc, info);
     return;
 }
 
@@ -10643,7 +10825,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->visit(interp, pmc, info);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     VTABLE_push_pmc(supervisor, params, info);
@@ -10658,6 +10839,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "visit"));
 
+
+    ((_vtable *)orig_vtable)->visit(interp, pmc, info);
     return;
 }
 
@@ -10674,7 +10857,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->share(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -10688,6 +10870,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "share"));
 
+
+    ((_vtable *)orig_vtable)->share(interp, pmc);
     return;
 }
 
@@ -10705,7 +10889,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ret = ((_vtable *)orig_vtable)->share_ro(interp, pmc);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
 
@@ -10719,6 +10902,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "share_ro"));
 
+
+    ret = ((_vtable *)orig_vtable)->share_ro(interp, pmc);
     return ret;
 }
 
@@ -10735,7 +10920,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-    ((_vtable *)orig_vtable)->init_int(interp, pmc, initializer);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
     VTABLE_push_pmc(supervisor, params, pmc);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -10752,6 +10936,8 @@
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "init_int"));
 
+
+    ((_vtable *)orig_vtable)->init_int(interp, pmc, initializer);
     return;
 }
 

Added: branches/gsoc_instrument/t/dynpmc/instrumentvtable.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_instrument/t/dynpmc/instrumentvtable.t	Sat Jul 24 16:24:39 2010	(r48171)
@@ -0,0 +1,408 @@
+#!./parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/dynpmc/instrumentvtable.t - test the InstrumentVtable dynpmc
+
+=head1 SYNOPSIS
+
+        % prove t/dynpmc/instrumentvtable.t
+
+=head1 DESCRIPTION
+
+Tests the vtable notification interface provided by the InstrumentVtable pmc.
+
+=cut
+
+.include 'call_bits.pasm'
+.loadlib 'os'
+
+.sub main :main
+    .include 'test_more.pir'
+
+    # Load the Instrument library.
+    load_bytecode 'Instrument/InstrumentLib.pbc'
+
+    plan(22)
+
+    setup()
+    test_creation()
+    test_attaching()
+    test_insertion()
+    test_removal()
+    test_notification()
+    cleanup()
+
+    .return()
+.end
+
+
+.sub setup
+    # Create a simple program to test that events are raised.
+    .local string program
+    program = <<'PROG'
+.sub main :main
+    $P0 = new ['TestClass']
+    $I0 = isa $P0, 'TestClass'
+.end
+
+.namespace ['TestClass']
+.sub '' :anon :init :load
+    $P0 = newclass ['TestClass']
+.end
+
+# Test override.
+.sub init :vtable :method
+    # Do nothing.
+.end
+
+PROG
+
+    # Write to file.
+    .local pmc fh
+    fh = new ['FileHandle']
+    fh.'open'('t/dynpmc/instrumentvtable-test1.pir', 'w')
+    fh.'puts'(program)
+    fh.'close'()
+.end
+
+.sub cleanup
+    # Remove the test program.
+    .local pmc os
+    os = new ['OS']
+    os.'rm'('t/dynpmc/instrumentvtable-test1.pir')
+.end
+
+.sub test_creation
+    # InstrumentVtable is supposed to be instantiated with
+    # an Instrument instance.
+    # Check:
+    # 1. init throws an exception.
+    # 2. init_pmc initialises without any exception.
+    $P0 = new ['Instrument']
+
+    ## Scenario 1: Call init.
+
+    # Set up exception handler.
+    $P1 = new ['ExceptionHandler']
+    set_addr $P1, INIT_OK
+    push_eh $P1
+
+    $P2 = new ['InstrumentVtable']
+
+    ok(0, 'Creation: Init did not throw exception.')
+
+    goto INIT_END
+
+    INIT_OK:
+      ok(1, 'Creation: Init threw exception.')
+    INIT_END:
+
+    ## Scenario 2: Call init_pmc.
+    $P3 = new ['InstrumentVtable'], $P0
+    $I0 = isa $P3, 'InstrumentVtable'
+    is($I0, 1, 'Creation: init_pmc successful.')
+.end
+
+.sub test_attaching
+    # Test attaching an InstrumentVtable instance to a class.
+    # Check:
+    # 1. Attaching to an exisiting class is fine.
+    # 2. Attaching to a non-existent class throws an exception.
+    $P0 = new ['Instrument']
+
+    ## Scenario 1: Attach to an existing class (Sub)
+    $P1 = new ['InstrumentVtable'], $P0
+    $P1.'attach_to_class'('Sub')
+    ok(1, 'Attach: Existing class ok.')
+
+    ## Scenario 2: Attach to a non-existing class (Suba)
+    # Set up exception handler.
+    $P2 = new ['ExceptionHandler']
+    set_addr $P2, ATTACH_OK
+    push_eh $P2
+
+    $P1 = new ['InstrumentVtable'], $P0
+    $P1.'attach_to_class'('Suba')
+
+    ok(0, 'Attach: Attaching to non-existent class did not throw exception.')
+
+    goto ATTACH_END
+
+    ATTACH_OK:
+      ok(1, 'Attach: Attaching to non-existent class threw exception.')
+    ATTACH_END:
+.end
+
+.sub test_insertion
+    # Test inserting a hook into the vtables of a class.
+    # Check:
+    # 1. Insert 1 hook and check that there is 1 hook in the hook list.
+    # 2. Insert 1 hook twice and check that there is only 1 entry in the hook list.
+    # 3. Insert 2 different hooks and check that there are 2 entries in the hook list.
+    # 4. Insert a hook group and check that the hook list matches that in the group.
+    #    (Group is obtained by querying the get_hook_list method.)
+    $P0 = new ['Instrument']
+
+    ## Scenario 1: Insert 1 hook.
+    $P1 = new ['InstrumentVtable'], $P0
+    $P1.'attach_to_class'('Sub')
+    $P1.'insert_hook'('init')
+    $P2 = $P1.'get_instrumented_list'()
+
+    $I0 = $P2
+    $S0 = $P2[0]
+    is($I0, 1, 'Insert: 1: Count ok.')
+    is($S0, 'init', 'Insert: 1: Name ok.')
+
+    ## Scenario 2: Insert 1 hook twice.
+    $P1 = new ['InstrumentVtable'], $P0
+    $P1.'attach_to_class'('Sub')
+    $P1.'insert_hook'('init')
+    $P1.'insert_hook'('init')
+    $P2 = $P1.'get_instrumented_list'()
+
+    $I0 = $P2
+    $S0 = $P2[0]
+    is($I0, 1, 'Insert: 2: Count ok.')
+    is($S0, 'init', 'Insert: 2: Name ok.')
+
+    ## Scenario 3: Insert 2 different hooks.
+    $P1 = new ['InstrumentVtable'], $P0
+    $P1.'attach_to_class'('Sub')
+    $P1.'insert_hook'('init')
+    $P1.'insert_hook'('init_pmc')
+    $P2 = $P1.'get_instrumented_list'()
+
+    $I0 = $P2
+    $I1 = find_in_list($P2, 'init')
+    $I2 = find_in_list($P2, 'init_pmc')
+    $I3 = $I1 + $I2
+    is($I0, 2, 'Insert: 3: Count ok.')
+    is($I3, 2, 'Insert: 3: Name ok.')
+
+    ## Scenario 4: Insert a group of hooks.
+    $P1 = new ['InstrumentVtable'], $P0
+    $P1.'attach_to_class'('Sub')
+    $P1.'insert_hook'('write')
+    $P2 = $P1.'get_instrumented_list'()
+    $P3 = $P1.'get_hook_list'('write')
+
+    $I0 = $P2
+    $I1 = $P3
+    $I2 = is_same_set($P2, $P3)
+    is($I0, $I1, 'Insert: 4: Count ok.')
+    is($I2, 1, 'Insert: 4: Group ok.')
+.end
+
+.sub test_removal
+    # Test removal of inserted hooks into the vtable of a class.
+    # Check:
+    # 1. Removal of an inserted hook.
+    # 2. A hook inserted twice and removed once will still be active.
+    # 3. Removing a group of hooks.
+    # 4. Removing a non-existent hook will throw an exception.
+    $P0 = new ['Instrument']
+
+    ## Scenario 1: Remove a single hook.
+    $P1 = new ['InstrumentVtable'], $P0
+    $P1.'attach_to_class'('Sub')
+    $P1.'insert_hook'('init')
+    $P1.'remove_hook'('init')
+    $P2 = $P1.'get_instrumented_list'()
+
+    $I0 = $P2
+    is($I0, 0, 'Remove: 1: Count ok.')
+
+    ## Scenario 2: Remove a hook inserted twice.
+    $P1 = new ['InstrumentVtable'], $P0
+    $P1.'attach_to_class'('Sub')
+    $P1.'insert_hook'('init')
+    $P1.'insert_hook'('init')
+    $P1.'remove_hook'('init')
+    $P2 = $P1.'get_instrumented_list'()
+
+    $I0 = $P2
+    $S0 = $P2[0]
+    is($I0, 1, 'Remove: 2: Count ok.')
+    is($S0, 'init', 'Remove: 2: Name ok.')
+
+    ## Scenario 3: Remove a group of hooks.
+    $P1 = new ['InstrumentVtable'], $P0
+    $P1.'attach_to_class'('Sub')
+    $P1.'insert_hook'('write')
+    $P1.'remove_hook'('write')
+    $P2 = $P1.'get_instrumented_list'()
+
+    $I0 = $P2
+    is($I0, 0, 'Remove: 3: Count ok.')
+
+    ## Scenario 4: Remove a non-existent hook.
+    $P2 = new ['ExceptionHandler']
+    set_addr $P2, ATTACH_OK
+    push_eh $P2
+
+    $P1 = new ['InstrumentVtable'], $P0
+    $P1.'attach_to_class'('Sub')
+    $P1.'remove_hook'('init')
+
+    ok(0, 'Remove: 4: Removing a non-existent hook did not throw exception.')
+
+    goto ATTACH_END
+
+    ATTACH_OK:
+      ok(1, 'Remove: 4: Removing a non-existent hook threw exception.')
+    ATTACH_END:
+.end
+
+.sub test_notification
+    # Test that notifications work, a class that is defined/loaded at runtime
+    #  is instrumented and also vtable overrides work.
+    # In short, TestClass is only defined at runtime, has vtable overrides,
+    #  and this tests all of it.
+    # Uses Instrument::Event::Class.
+    # Check:
+    # 1. The event is raised.
+    $P0 = new ['Instrument']
+    $P1 = get_hll_global ['Instrument';'Event'], 'Class'
+    $P2 = $P1.'new'()
+
+    $P2.'inspect_class'('TestClass')
+    $P2.'inspect_vtable'('init')
+    $P2.'callback'('test_notification_cb')
+
+    $P0.'attach'($P2)
+
+    # Set the arg list.
+    $S0  = 't/dynpmc/instrumentvtable-test1.pir'
+    $P3 = new ['ResizableStringArray']
+    push $P3, $S0
+
+    # Prepare the globals.
+    $P4 = new ['Hash']
+    set_global '%notification', $P4
+
+    $P0.'run'($S0, $P3)
+
+    # Check that the callback was called.
+    # Check that the event was fired.
+    $P9 = get_global '%notification'
+
+    # Event fired.
+    $I0 = $P9['called']
+    is($I0, 1, 'Event: Event fired.')
+
+    # Test line.
+    $I0 = $P9['line']
+    is($I0, 2, 'Event: Line ok.')
+
+    # Test file.
+    $S0 = $P9['file']
+    is($S0, 't/dynpmc/instrumentvtable-test1.pir', 'Event: File ok.')
+
+    # Test sub.
+    $S0 = $P9['sub']
+    is($S0, 'main', 'Event: Sub ok.')
+
+    # Test event.
+    $P10 = $P9['event']
+    $S0  = join '::', $P10
+    is($S0, 'Class::TestClass::vtable::core::init', 'Event: Event ok')
+.end
+
+.sub test_notification_cb
+    .param pmc data
+
+    $P0 = get_global '%notification'
+    $P0['called'] = 1
+
+    $P1 = data['event']
+    $P0['event']  = $P1
+
+    $I0 = data['line']
+    $P0['line']   = $I0
+
+    $S0 = data['file']
+    $P0['file']   = $S0
+
+    $S0 = data['sub']
+    $P0['sub']    = $S0
+.end
+
+
+## Helper: Find an item in the list.
+.sub find_in_list
+    .param pmc list
+    .param pmc item
+
+    $I0 = list
+
+    TOP:
+        dec $I0
+        unless $I0 >= 0 goto END
+
+        $P0 = list[$I0]
+        if $P0 == item goto FOUND
+
+        goto TOP
+    END:
+
+    # Not found.
+    .return(0)
+
+    FOUND:
+    .return(1)
+.end
+
+# Helper sub: Check if 2 sets with unique items are the same.
+.sub is_same_set
+    .param pmc arr1
+    .param pmc arr2
+    .local pmc hash
+
+    $I0 = arr1
+    $I1 = arr2
+    if $I0 != $I1 goto NO
+
+    hash = new ['Hash']
+
+    # Build the comparison hash
+    $I3 = 0
+    INSERT_LOOP:
+      if $I3 >= $I0 goto END_INSERT_LOOP
+
+      $S0       = arr1[$I3]
+      hash[$S0] = 1
+
+      inc $I3
+      goto INSERT_LOOP
+    END_INSERT_LOOP:
+
+    # Check the contents of arr2
+    $I3 = 0
+    CHECK_LOOP:
+      if $I3 >= $I0 goto END_CHECK_LOOP
+
+      $S0 = arr2[$I3]
+      $I4 = exists hash[$S0]
+
+      if $I4 == 0 goto NO
+
+      inc $I3
+      goto CHECK_LOOP
+    END_CHECK_LOOP:
+
+    YES:
+      .return(1)
+
+    NO:
+      .return(0)
+.end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/gsoc_instrument/tools/build/gen_vtable_stubs.pl
==============================================================================
--- branches/gsoc_instrument/tools/build/gen_vtable_stubs.pl	Sat Jul 24 10:17:38 2010	(r48170)
+++ branches/gsoc_instrument/tools/build/gen_vtable_stubs.pl	Sat Jul 24 16:24:39 2010	(r48171)
@@ -241,7 +241,6 @@
     GETATTR_InstrumentVtable_original_struct(interp, instr_vt, orig_vtable);
     GETATTR_InstrumentVtable_supervisor(interp, instr_vt, supervisor);
 
-   $ret_ret ((_vtable *)orig_vtable)->$name($param_list_flat);
     params = Parrot_pmc_new(supervisor, enum_class_ResizablePMCArray);
 $instr_params
 
@@ -251,6 +250,8 @@
         params);
 
 $events
+
+   $ret_ret ((_vtable *)orig_vtable)->$name($param_list_flat);
     return$ret_last;
 }
 


More information about the parrot-commits mailing list