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

khairul at svn.parrot.org khairul at svn.parrot.org
Tue Jul 20 19:35:17 UTC 2010


Author: khairul
Date: Tue Jul 20 19:35:16 2010
New Revision: 48134
URL: https://trac.parrot.org/parrot/changeset/48134

Log:
Rough cut of instrumenting methods + vtable overrides + Regenerated vtable stubs.

Added:
   branches/gsoc_instrument/src/dynpmc/instrumentclass.pmc   (contents, props changed)
   branches/gsoc_instrument/src/dynpmc/instrumentobject.pmc   (contents, props changed)
Modified:
   branches/gsoc_instrument/MANIFEST
   branches/gsoc_instrument/runtime/parrot/library/Instrument/EventLibrary.nqp
   branches/gsoc_instrument/src/dynpmc/Defines.in
   branches/gsoc_instrument/src/dynpmc/Rules.in
   branches/gsoc_instrument/src/dynpmc/instrument.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	Tue Jul 20 18:42:27 2010	(r48133)
+++ branches/gsoc_instrument/MANIFEST	Tue Jul 20 19:35:16 2010	(r48134)
@@ -1276,7 +1276,9 @@
 src/dynpmc/foo2.pmc                                         []
 src/dynpmc/gziphandle.pmc                                   []
 src/dynpmc/instrument.pmc                                   []
+src/dynpmc/instrumentclass.pmc                              []
 src/dynpmc/instrumentgc.pmc                                 []
+src/dynpmc/instrumentobject.pmc                             []
 src/dynpmc/instrumentop.pmc                                 []
 src/dynpmc/instrumentvtable.pmc                             []
 src/dynpmc/main.pasm                                        []

Modified: branches/gsoc_instrument/runtime/parrot/library/Instrument/EventLibrary.nqp
==============================================================================
--- branches/gsoc_instrument/runtime/parrot/library/Instrument/EventLibrary.nqp	Tue Jul 20 18:42:27 2010	(r48133)
+++ branches/gsoc_instrument/runtime/parrot/library/Instrument/EventLibrary.nqp	Tue Jul 20 19:35:16 2010	(r48134)
@@ -145,9 +145,9 @@
 };
 
 # Incomplete.
-# Inspect VTABLE.
-# Inspect methods.
-# Must handle dynloaded libraries.
+# Inspect VTABLE. (Should be done for vtable overrides too)
+# Inspect methods. (I think it works. Need tests to find out)
+# Must handle dynloaded libraries.(Done)
 class Instrument::Event::Class is Instrument::Event {
     has @!class_names;
     has @!vtable_probes;
@@ -205,6 +205,15 @@
                 }
             }
 
+            # Register the method probes.
+            my $method_prefix := $event_prefix ~ 'method::';
+            for @!method_probes {
+                $class.insert_method_hook($_);
+
+                my $event := $method_prefix ~ $_;
+                $dispatcher.register($event, $!callback);
+            }
+
             CATCH {
                 # Something was not found.
                 # Push this probe to the todo list.
@@ -225,12 +234,11 @@
         };
 
         for (@!class_names) {
-
             my $class_name   := $_;
             my $class        := $!instr_obj.instrument_class($class_name);
             my $event_prefix := 'Class::' ~ $class_name ~ '::';
 
-            # Register the vtable probes.
+            # Deregister the vtable probes.
             my $vtable_prefix := $event_prefix ~ 'vtable::';
             for @!vtable_probes {
                 my @hooks := $class.get_hook_list($_);
@@ -244,6 +252,15 @@
                 }
             }
 
+            # Deregister the method probes.
+            my $method_prefix := $event_prefix ~ 'method::';
+            for @!method_probes {
+                $class.remove_method_hook($_);
+
+                my $event := $method_prefix ~ $_;
+                $dispatcher.register($event, $!callback);
+            }
+
             CATCH {
                 # Ignore the exception.
                 # We are trying to disable a hook that wasn't inserted.
@@ -288,7 +305,7 @@
             $_.disable();
             $_.enable();
         }
-    }
+    };
 };
 
 # vim: ft=perl6 expandtab shiftwidth=4:

Modified: branches/gsoc_instrument/src/dynpmc/Defines.in
==============================================================================
--- branches/gsoc_instrument/src/dynpmc/Defines.in	Tue Jul 20 18:42:27 2010	(r48133)
+++ branches/gsoc_instrument/src/dynpmc/Defines.in	Tue Jul 20 19:35:16 2010	(r48134)
@@ -26,14 +26,18 @@
     src/dynpmc/instrumentstubbase.pmc \
     src/dynpmc/instrumentgc.pmc \
     src/dynpmc/instrumentop.pmc \
-    src/dynpmc/instrumentvtable.pmc
+    src/dynpmc/instrumentvtable.pmc \
+    src/dynpmc/instrumentclass.pmc \
+    src/dynpmc/instrumentobject.pmc
 
 DYNPMC_INSTRUMENT_OBJS = \
     src/dynpmc/instrument$(O) \
     src/dynpmc/instrumentstubbase$(O) \
     src/dynpmc/instrumentgc$(O) \
     src/dynpmc/instrumentop$(O) \
-    src/dynpmc/instrumentvtable$(O)
+    src/dynpmc/instrumentvtable$(O) \
+    src/dynpmc/instrumentclass$(O) \
+    src/dynpmc/instrumentobject$(O)
 
 DYNPMC_H_FILES = \
     include/parrot/caches.h \

Modified: branches/gsoc_instrument/src/dynpmc/Rules.in
==============================================================================
--- branches/gsoc_instrument/src/dynpmc/Rules.in	Tue Jul 20 18:42:27 2010	(r48133)
+++ branches/gsoc_instrument/src/dynpmc/Rules.in	Tue Jul 20 19:35:16 2010	(r48134)
@@ -248,3 +248,27 @@
 src/dynpmc/instrumentvtable.dump: src/dynpmc/instrumentvtable.pmc vtable.dump $(CLASS_O_FILES) \
     src/dynpmc/instrumentstubbase.dump
 	$(PMC2CD) src/dynpmc/instrumentvtable.pmc
+
+src/dynpmc/pmc_instrumentclass.h : src/dynpmc/instrumentclass.c
+
+src/dynpmc/instrumentclass$(O): src/dynpmc/instrumentclass.c $(DYNPMC_H_FILES) \
+    src/dynpmc/pmc_instrumentclass.h
+
+src/dynpmc/instrumentclass.c: src/dynpmc/instrumentclass.dump
+	$(PMC2CC) src/dynpmc/instrumentclass.pmc
+
+src/dynpmc/instrumentclass.dump: src/dynpmc/instrumentclass.pmc vtable.dump $(CLASS_O_FILES) \
+    src/dynpmc/instrumentvtable.dump
+	$(PMC2CD) src/dynpmc/instrumentclass.pmc
+
+src/dynpmc/pmc_instrumentobject.h : src/dynpmc/instrumentobject.c
+
+src/dynpmc/instrumentobject$(O): src/dynpmc/instrumentobject.c $(DYNPMC_H_FILES) \
+    src/dynpmc/pmc_instrumentobject.h
+
+src/dynpmc/instrumentobject.c: src/dynpmc/instrumentobject.dump
+	$(PMC2CC) src/dynpmc/instrumentobject.pmc
+
+src/dynpmc/instrumentobject.dump: src/dynpmc/instrumentobject.pmc vtable.dump $(CLASS_O_FILES) \
+    src/dynpmc/instrumentclass.dump
+	$(PMC2CD) src/dynpmc/instrumentobject.pmc

Modified: branches/gsoc_instrument/src/dynpmc/instrument.pmc
==============================================================================
--- branches/gsoc_instrument/src/dynpmc/instrument.pmc	Tue Jul 20 18:42:27 2010	(r48133)
+++ branches/gsoc_instrument/src/dynpmc/instrument.pmc	Tue Jul 20 19:35:16 2010	(r48134)
@@ -563,7 +563,7 @@
             class_instr = VTABLE_get_pmc_keyed_str(INTERP, attr->instrument_classes, classname);
         }
         else {
-            class_type  = Parrot_pmc_get_type_str(INTERP, CONST_STRING(INTERP, "InstrumentVtable"));
+            class_type  = Parrot_pmc_get_type_str(INTERP, CONST_STRING(INTERP, "InstrumentClass"));
             class_instr = Parrot_pmc_new_init(INTERP, class_type, SELF);
 
             () = PCCINVOKE(INTERP, class_instr, "attach_to_class", STRING *classname);
@@ -574,6 +574,19 @@
         RETURN(PMC *class_instr);
     }
 
+    METHOD instrument_object(PMC *classname) {
+        Parrot_Instrument_attributes * const attr = PARROT_INSTRUMENT(SELF);
+        INTVAL  class_type;
+        PMC    *class_instr;
+
+        class_type  = Parrot_pmc_get_type_str(INTERP, CONST_STRING(INTERP, "InstrumentObject"));
+        class_instr = Parrot_pmc_new_init(INTERP, class_type, SELF);
+
+        () = PCCINVOKE(INTERP, class_instr, "attach_to_object", PMC *classname);
+
+        RETURN(PMC *class_instr);
+    }
+
 }
 
 /*

Added: branches/gsoc_instrument/src/dynpmc/instrumentclass.pmc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_instrument/src/dynpmc/instrumentclass.pmc	Tue Jul 20 19:35:16 2010	(r48134)
@@ -0,0 +1,164 @@
+/*
+Copyright (C) 2010, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/dynpmc/instrumentclass.pmc - Interface to instrument a class's methods.
+
+=head1 DESCRIPTION
+
+C<InstrumentClass> extends InstrumentVtable and provides methods to
+instrument a class's methods. Generally methods are invokables, so
+to know when a method is called, simply instrumenting the invoke vtable
+entry of the method is enough.
+
+=head2 TODO
+
+1. Documentation.
+2. Figure out how to access the params.
+
+=head2 Methods
+
+=over 4
+
+=cut
+
+*/
+
+#include "pmc_instrument.h"
+
+pmclass InstrumentClass auto_attrs dynpmc group instrument_group extends InstrumentVtable {
+    ATTR PMC *instrumented_methods;
+
+/*
+
+=item C<void init_pmc(PMC *instrument)>
+
+Perform a partial initialization. The remaining attributes are initialised
+upon calling 'attach_to_class' in PARENT.
+
+=cut
+
+*/
+
+    VTABLE void init_pmc(PMC *instrument) {
+        Parrot_InstrumentClass_attributes * const attr = PARROT_INSTRUMENTCLASS(SELF);
+        SUPER(instrument);
+
+        attr->instrumented_methods = Parrot_pmc_new(INTERP, enum_class_Hash);
+    }
+
+/*
+
+=item C<PMC* get_method_list()>
+
+Returns a list of methods in the class that InstrumentClass is attached to.
+
+=cut
+
+*/
+
+    METHOD get_method_list() {
+        Parrot_InstrumentClass_attributes * const attr = PARROT_INSTRUMENTCLASS(SELF);
+        PMC *_class;
+        PMC *methods;
+        Parrot_Interp supervised;
+
+        GETATTR_Instrument_supervised(INTERP, attr->instrument, supervised);
+
+        _class  = Parrot_oo_get_class_str(supervised, attr->class_name);
+        methods = VTABLE_inspect_str(supervised, _class, CONST_STRING(INTERP, "methods"));
+
+        RETURN(PMC *methods);
+    }
+
+/*
+
+=item C<void insert_method_hook(STRING *method)>
+
+Instruments the method by the given name to raise an event when it
+is called.
+
+=cut
+
+*/
+
+    METHOD insert_method_hook(STRING *method) {
+        Parrot_InstrumentClass_attributes * const attr = PARROT_INSTRUMENTCLASS(SELF);
+        PMC *_class, *methods, *method_sub;
+        PMC *instr_obj, *rename, *rename_hash;
+        STRING *invoke;
+         Parrot_Interp supervised;
+
+        invoke = CONST_STRING(INTERP, "invoke");
+
+        GETATTR_Instrument_supervised(INTERP, attr->instrument, supervised);
+
+        _class  = Parrot_oo_get_class_str(supervised, attr->class_name);
+        (PMC *methods) = PCCINVOKE(INTERP, _class, "methods");
+        method_sub     = VTABLE_get_pmc_keyed_str(INTERP, methods, method);
+
+        (PMC *instr_obj) =
+            PCCINVOKE(INTERP, attr->instrument, "instrument_object", PMC *method_sub);
+
+        /* Instrument its invoke vtable entry. */
+        () = PCCINVOKE(INTERP, instr_obj, "insert_hook", STRING *invoke);
+
+        /* Add an entry into the rename_hash attribute so that when an event
+           is raised, the event properly named. */
+        rename = Parrot_pmc_new(INTERP, enum_class_ResizableStringArray);
+        VTABLE_push_string(INTERP, rename , CONST_STRING(INTERP, "Class"));
+        VTABLE_push_string(INTERP, rename , attr->class_name);
+        VTABLE_push_string(INTERP, rename , CONST_STRING(INTERP, "method"));
+        VTABLE_push_string(INTERP, rename , method);
+
+        GETATTR_InstrumentVtable_rename_hash(INTERP, instr_obj, rename_hash);
+        VTABLE_set_pmc_keyed_str(INTERP, rename_hash, invoke, rename);
+    }
+
+/*
+
+=item C<void remove_method_hook(STRING *method)>
+
+Removes the instrumentation of the given method.
+
+=cut
+
+*/
+
+    METHOD remove_method_hook(STRING *method) {
+        /*
+        TODO: NYI
+        */
+    }
+
+/*
+
+=item C<PMC* get_method_instrumented_list()>
+
+Returns a list of methods that has active instrumentation.
+
+=cut
+
+*/
+
+    METHOD get_method_instrumented_list() {
+        /*
+        TODO: NYI
+        */
+    }
+}
+
+/*
+
+=back
+
+*/
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */

Added: branches/gsoc_instrument/src/dynpmc/instrumentobject.pmc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_instrument/src/dynpmc/instrumentobject.pmc	Tue Jul 20 19:35:16 2010	(r48134)
@@ -0,0 +1,90 @@
+/*
+Copyright (C) 2010, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/dynpmc/instrumentobject.pmc - Interface to instrument a class instance.
+
+=head1 DESCRIPTION
+
+C<InstrumentObject> allows any PMC instance to be instrumented on a
+per object basis.
+
+=head2 Methods
+
+=over 4
+
+=cut
+
+*/
+
+#include "pmc_instrument.h"
+
+extern
+void setup_vtable_individual_hashes(PARROT_INTERP, Hash *orig_hash, Hash *instr_hash,
+                                    _vtable *vt_orig, _vtable *vt_instr);
+
+pmclass InstrumentObject auto_attrs dynpmc group instrument_group extends InstrumentClass {
+
+/*
+
+=item C<void attach_to_class(STRING *classname)>
+
+Overrides the PARENT's method and throws an exception as
+we are instrumenting an object, not a class.
+
+=cut
+
+*/
+
+    METHOD attach_to_class(STRING *classname) {
+        /* Instrumenting an object, not a class. */
+        Parrot_ex_throw_from_c_args(INTERP, NULL, 1,
+                                    "Attach %Ss to an object using 'attach_to_object' instead.",
+                                   VTABLE_name(INTERP, SELF));
+    }
+
+/*
+
+=item C<void attach_to_object(PMC *object)>
+
+Prepares the object for instrumentation.
+
+=cut
+
+*/
+
+    METHOD attach_to_object(PMC *object) {
+        Parrot_InstrumentObject_attributes * const attr = PARROT_INSTRUMENTOBJECT(SELF);
+        Parrot_Interp supervised;
+
+        GETATTR_Instrument_supervised(INTERP, attr->instrument, supervised);
+
+        attr->class_name          = VTABLE_name(INTERP, object);
+        attr->instrumented_struct = mem_gc_allocate_zeroed_typed(supervised, _vtable);
+        attr->original_struct     = object->vtable;
+        mem_copy_n_typed(attr->instrumented_struct, attr->original_struct, 1, _vtable);
+        object->vtable = (_vtable *) attr->instrumented_struct;
+
+        parrot_hash_put(INTERP, attr->registry, attr->instrumented_struct, SELF);
+
+        setup_vtable_individual_hashes(INTERP, attr->name_original, attr->name_offset,
+                                       (_vtable *) attr->original_struct,
+                                       (_vtable *) attr->instrumented_struct);
+    }
+}
+
+/*
+
+=back
+
+*/
+
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */

Modified: branches/gsoc_instrument/src/dynpmc/instrumentvtable.pmc
==============================================================================
--- branches/gsoc_instrument/src/dynpmc/instrumentvtable.pmc	Tue Jul 20 18:42:27 2010	(r48133)
+++ branches/gsoc_instrument/src/dynpmc/instrumentvtable.pmc	Tue Jul 20 19:35:16 2010	(r48134)
@@ -4,12 +4,18 @@
 
 =head1 NAME
 
-src/dynpmc/instrumentpmc.pmc - Interface to instrument a PMC's vtable.
+src/dynpmc/instrumentvtable.pmc - Interface to instrument a PMC's vtable.
 
 =head1 DESCRIPTION
 
-C<InstrumentPMC> is a PMC class that provides an interface to
-instrument a PMC.
+C<InstrumentVtable> is a PMC class that provides an interface to
+instrument a PMC's vtable entries.
+
+=head1 TODO
+
+1. Documentation
+2. Tests
+3. Remove the vtable override instrumentation.
 
 =head2 Methods
 
@@ -24,8 +30,8 @@
 #include "pmc_instrument.h"
 
 /* Helper Prototypes. */
-void raise_vtable_event(PARROT_INTERP, Parrot_Interp supervised, PMC *pmc,
-                        PMC *data, STRING *group, STRING *type);
+void raise_vtable_event(PARROT_INTERP, Parrot_Interp supervised,
+                        PMC *instr, PMC *pmc, PMC *data, STRING *group, STRING *type);
 void setup_vtable_common_hashes(PARROT_INTERP);
 void destroy_vtable_common_hashes(PARROT_INTERP);
 void setup_vtable_individual_hashes(PARROT_INTERP, Hash *orig_hash, Hash *instr_hash,
@@ -39,8 +45,10 @@
 static Hash   *vtable_item_groups = NULL;
 
 pmclass InstrumentVtable auto_attrs dynpmc group instrument_group extends InstrumentStubBase {
-    ATTR size_t        class_index;
-    ATTR Parrot_Interp supervisor;
+    ATTR size_t         class_index;
+    ATTR STRING        *class_name;
+    ATTR Parrot_Interp  supervisor;
+    ATTR PMC           *rename_hash;
 
 /*
 
@@ -59,12 +67,14 @@
 
         /* Initialise the attributes.
            Other attributes are deferred to after attaching to a class. */
-        attr->supervisor = INTERP;
+        attr->supervisor  = INTERP;
+        attr->rename_hash = Parrot_pmc_new(INTERP, enum_class_Hash);
 
         /* Initialise the static hashes. */
         setup_vtable_common_hashes(INTERP);
 
         /* Update the attributes to point to the static hashes. */
+        attr->registry    = vtable_registry;
         attr->name_stubs  = vtable_name_stubs;
         attr->group_items = vtable_group_items;
         attr->item_groups = vtable_item_groups;
@@ -107,7 +117,8 @@
         GETATTR_Instrument_supervised(INTERP, attr->instrument, supervised);
 
         /* Find the class. */
-        attr->class_index     = Parrot_pmc_get_type_str(supervised, classname);
+        attr->class_index = Parrot_pmc_get_type_str(supervised, classname);
+        attr->class_name  = classname;
 
         /* class_index must not be 0. (0 = default). */
         if (attr->class_index == 0) {
@@ -123,13 +134,100 @@
         supervised->vtables[attr->class_index] = (_vtable *) attr->instrumented_struct;
 
         /* Register the instrumented vtable to SELF. */
-        parrot_hash_put(INTERP, vtable_registry, attr->instrumented_struct, SELF);
+        parrot_hash_put(INTERP, attr->registry, attr->instrumented_struct, SELF);
 
         /* Build the vtable hashes, passing a sample vtable to build the offsets. */
         setup_vtable_individual_hashes(INTERP, attr->name_original, attr->name_offset,
                                        (_vtable *) attr->original_struct,
                                        (_vtable *) attr->instrumented_struct);
     }
+
+/*
+
+=item C<void insert_hook(STRING *name)>
+
+Inserts the stub function for the entry given by name.
+If name denotes a group, inserts stubs for all functions in that group.
+
+=cut
+
+*/
+
+    METHOD insert_hook(STRING *name) {
+        Parrot_InstrumentVtable_attributes * const attr = PARROT_INSTRUMENTVTABLE(SELF);
+        PMC *_class;
+        PMC *override;
+        Parrot_Interp supervised;
+        PMC *list;
+        PMC *iter;
+
+        GETATTR_Instrument_supervised(INTERP, attr->instrument, supervised);
+        _class   = Parrot_oo_get_class_str(supervised, attr->class_name);
+
+        (PMC *list) = PCCINVOKE(INTERP, SELF, "get_hook_list", STRING *name);
+
+        iter = VTABLE_get_iter(INTERP, list);
+        while (VTABLE_get_bool(INTERP, iter)) {
+            INTVAL count;
+            PMC *item_pmc = VTABLE_shift_pmc(INTERP, iter);
+            STRING *item  = VTABLE_get_string(INTERP, item_pmc);
+            size_t **entry, *func;
+
+            /* Check if the entry has already been instrumented. */
+            count = VTABLE_get_integer_keyed_str(INTERP, attr->hook_count, item);
+            if (count == 0) {
+                /* Look for a vtable override. */
+                override = Parrot_oo_find_vtable_override_for_class(supervised, _class, name);
+
+                if (PMC_IS_NULL(override)) {
+                    /* No override. */
+                    /* Replace the entry with the stub. */
+                    entry = (size_t **) parrot_hash_get(INTERP, attr->name_offset, item);
+                    func  = (size_t *)  parrot_hash_get(INTERP, attr->name_stubs, item);
+                    if (entry == NULL || func == NULL) {
+                        Parrot_ex_throw_from_c_args(INTERP, NULL, 1,
+                                                    "%Ss : c Unknown function, '%Ss'",
+                                                    VTABLE_name(INTERP, SELF), item);
+                    }
+                    *entry = func;
+                }
+                else {
+                    /* It appears that there is a vtable override.
+                       Instrument the invoke vtable entry of the override.
+                       (which is assumed to be invokable, otherwise it won't be much
+                        of an override.) */
+                    PMC *instr_obj, *rename, *rename_hash, *group;
+                    STRING *invoke;
+
+                    invoke = CONST_STRING(INTERP, "invoke");
+
+                    (PMC *instr_obj) =
+                        PCCINVOKE(INTERP, attr->instrument, "instrument_object", PMC *override);
+
+                    /* Instrument its invoke vtable entry. */
+                    () = PCCINVOKE(INTERP, instr_obj, "insert_hook", STRING *invoke);
+
+                    /* Add an entry into the rename_hash attribute so that when an event
+                       is raised, the event properly named. */
+                    group  = (PMC *) parrot_hash_get(INTERP, attr->item_groups, name);
+                    rename = Parrot_pmc_new(INTERP, enum_class_ResizableStringArray);
+                    VTABLE_push_string(INTERP, rename , CONST_STRING(INTERP, "Class"));
+                    VTABLE_push_string(INTERP, rename , attr->class_name);
+                    VTABLE_push_string(INTERP, rename , CONST_STRING(INTERP, "vtable"));
+                    VTABLE_push_string(INTERP, rename ,
+                                       VTABLE_get_string_keyed_int(INTERP, group, 0));
+                    VTABLE_push_string(INTERP, rename , name);
+
+                    GETATTR_InstrumentVtable_rename_hash(INTERP, instr_obj, rename_hash);
+                    VTABLE_set_pmc_keyed_str(INTERP, rename_hash, invoke, rename);
+                }
+            }
+
+            /* Update the count. */
+            count++;
+            VTABLE_set_integer_keyed_str(INTERP, attr->hook_count, item, count);
+        }
+    }
 }
 
 /*
@@ -137,21 +235,27 @@
  */
 
 void raise_vtable_event(PARROT_INTERP, Parrot_Interp supervised,
-                        PMC *pmc, PMC *data, STRING *group, STRING *type) {
+                        PMC *instr, PMC *pmc, PMC *data, STRING *group, STRING *type) {
     Parrot_Context_info info;
-    PMC *task_hash, *task;
+    PMC *task_hash, *task, *rename_hash;
     PMC *event_arr;
 
     /* Get the current context info. */
     Parrot_Context_get_info(interp, CURRENT_CONTEXT(supervised), &info);
 
     /* Set the event type. */
-    event_arr = Parrot_pmc_new(interp, enum_class_ResizableStringArray);
-    VTABLE_push_string(interp, event_arr, CONST_STRING(interp, "Class"));
-    VTABLE_push_string(interp, event_arr, pmc->vtable->whoami);
-    VTABLE_push_string(interp, event_arr, CONST_STRING(interp, "vtable"));
-    VTABLE_push_string(interp, event_arr, group);
-    VTABLE_push_string(interp, event_arr, type);
+    GETATTR_InstrumentVtable_rename_hash(interp, instr, rename_hash);
+    if (VTABLE_exists_keyed_str(interp, rename_hash, type)) {
+        event_arr = VTABLE_get_pmc_keyed_str(interp, rename_hash, type);
+    }
+    else {
+        event_arr = Parrot_pmc_new(interp, enum_class_ResizableStringArray);
+        VTABLE_push_string(interp, event_arr, CONST_STRING(interp, "Class"));
+        VTABLE_push_string(interp, event_arr, pmc->vtable->whoami);
+        VTABLE_push_string(interp, event_arr, CONST_STRING(interp, "vtable"));
+        VTABLE_push_string(interp, event_arr, group);
+        VTABLE_push_string(interp, event_arr, type);
+    }
 
     /* Populate data with common items. */
     VTABLE_set_pmc_keyed_str(interp, data,
@@ -4357,7 +4461,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -4365,7 +4469,7 @@
     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);
 
 
@@ -4374,7 +4478,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "init"));
 
@@ -4387,7 +4491,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -4395,7 +4499,7 @@
     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);
 
@@ -4405,7 +4509,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "init_pmc"));
 
@@ -4418,7 +4522,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -4427,7 +4531,7 @@
     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);
 
@@ -4437,7 +4541,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "instantiate"));
 
@@ -4450,7 +4554,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -4458,7 +4562,7 @@
     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);
 
@@ -4468,10 +4572,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "morph"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "morph"));
 
@@ -4484,7 +4588,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -4492,7 +4596,7 @@
     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);
 
 
@@ -4501,7 +4605,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "mark"));
 
@@ -4514,7 +4618,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -4522,7 +4626,7 @@
     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);
 
 
@@ -4531,7 +4635,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "destroy"));
 
@@ -4544,7 +4648,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -4553,7 +4657,7 @@
     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);
 
 
@@ -4562,7 +4666,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "get_namespace"));
 
@@ -4575,7 +4679,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -4584,7 +4688,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, key);
@@ -4596,7 +4700,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "getprop"));
 
@@ -4609,7 +4713,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -4617,7 +4721,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, key);
@@ -4630,7 +4734,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "setprop"));
 
@@ -4643,7 +4747,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -4651,7 +4755,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, key);
@@ -4663,7 +4767,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "delprop"));
 
@@ -4676,7 +4780,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -4685,7 +4789,7 @@
     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);
 
 
@@ -4694,7 +4798,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "getprops"));
 
@@ -4707,7 +4811,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -4716,7 +4820,7 @@
     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);
 
 
@@ -4725,7 +4829,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "type"));
 
@@ -4738,7 +4842,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     STRING* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -4747,7 +4851,7 @@
     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);
 
 
@@ -4756,7 +4860,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "name"));
 
@@ -4769,7 +4873,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -4778,7 +4882,7 @@
     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);
 
 
@@ -4787,7 +4891,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "clone"));
 
@@ -4800,7 +4904,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -4809,7 +4913,7 @@
     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);
 
@@ -4819,7 +4923,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "clone_pmc"));
 
@@ -4832,7 +4936,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -4841,7 +4945,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, method_name);
@@ -4853,7 +4957,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "core"),
                    CONST_STRING(supervisor, "find_method"));
 
@@ -4866,7 +4970,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -4875,7 +4979,7 @@
     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);
 
 
@@ -4884,7 +4988,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_integer"));
 
@@ -4897,7 +5001,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -4906,7 +5010,7 @@
     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);
 
@@ -4916,7 +5020,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_integer_keyed"));
 
@@ -4929,7 +5033,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -4938,7 +5042,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, key);
@@ -4950,7 +5054,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_integer_keyed_int"));
 
@@ -4963,7 +5067,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -4972,7 +5076,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, key);
@@ -4984,7 +5088,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_integer_keyed_str"));
 
@@ -4997,7 +5101,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     FLOATVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -5006,7 +5110,7 @@
     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);
 
 
@@ -5015,7 +5119,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_number"));
 
@@ -5028,7 +5132,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     FLOATVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -5037,7 +5141,7 @@
     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);
 
@@ -5047,7 +5151,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_number_keyed"));
 
@@ -5060,7 +5164,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     FLOATVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -5069,7 +5173,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, key);
@@ -5081,7 +5185,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_number_keyed_int"));
 
@@ -5094,7 +5198,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     FLOATVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -5103,7 +5207,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, key);
@@ -5115,7 +5219,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_number_keyed_str"));
 
@@ -5128,7 +5232,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     STRING* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -5137,7 +5241,7 @@
     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);
 
 
@@ -5146,7 +5250,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_string"));
 
@@ -5159,7 +5263,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     STRING* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -5168,7 +5272,7 @@
     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);
 
 
@@ -5177,7 +5281,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_repr"));
 
@@ -5190,7 +5294,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     STRING* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -5199,7 +5303,7 @@
     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);
 
@@ -5209,7 +5313,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_string_keyed"));
 
@@ -5222,7 +5326,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     STRING* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -5231,7 +5335,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, key);
@@ -5243,7 +5347,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_string_keyed_int"));
 
@@ -5256,7 +5360,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     STRING* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -5265,7 +5369,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, key);
@@ -5277,7 +5381,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_string_keyed_str"));
 
@@ -5290,7 +5394,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -5299,7 +5403,7 @@
     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);
 
 
@@ -5308,7 +5412,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_bool"));
 
@@ -5321,7 +5425,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -5330,7 +5434,7 @@
     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);
 
 
@@ -5339,7 +5443,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_pmc"));
 
@@ -5352,7 +5456,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -5361,7 +5465,7 @@
     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);
 
@@ -5371,7 +5475,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_pmc_keyed"));
 
@@ -5384,7 +5488,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -5393,7 +5497,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, key);
@@ -5405,7 +5509,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_pmc_keyed_int"));
 
@@ -5418,7 +5522,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -5427,7 +5531,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, key);
@@ -5439,7 +5543,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_pmc_keyed_str"));
 
@@ -5452,7 +5556,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     void* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -5461,7 +5565,7 @@
     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);
 
 
@@ -5470,7 +5574,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_pointer"));
 
@@ -5483,7 +5587,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     void* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -5492,7 +5596,7 @@
     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);
 
@@ -5502,7 +5606,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_pointer_keyed"));
 
@@ -5515,7 +5619,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     void* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -5524,7 +5628,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, key);
@@ -5536,7 +5640,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_pointer_keyed_int"));
 
@@ -5549,7 +5653,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     void* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -5558,7 +5662,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, key);
@@ -5570,7 +5674,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "get_pointer_keyed_str"));
 
@@ -5583,7 +5687,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -5591,7 +5695,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, value);
@@ -5603,7 +5707,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_integer_native"));
 
@@ -5616,7 +5720,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -5624,7 +5728,7 @@
     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);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -5637,7 +5741,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_integer_keyed"));
 
@@ -5650,7 +5754,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -5658,7 +5762,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, key);
@@ -5673,7 +5777,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_integer_keyed_int"));
 
@@ -5686,7 +5790,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -5694,7 +5798,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, key);
@@ -5709,7 +5813,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_integer_keyed_str"));
 
@@ -5722,7 +5826,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -5730,7 +5834,7 @@
     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);
     VTABLE_set_number_native(supervisor, temp, value);
@@ -5742,7 +5846,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_number_native"));
 
@@ -5755,7 +5859,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -5763,7 +5867,7 @@
     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);
     temp = Parrot_pmc_new(supervisor, enum_class_Float);
@@ -5776,7 +5880,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_number_keyed"));
 
@@ -5789,7 +5893,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -5797,7 +5901,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, key);
@@ -5812,7 +5916,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_number_keyed_int"));
 
@@ -5825,7 +5929,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -5833,7 +5937,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, key);
@@ -5848,7 +5952,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_number_keyed_str"));
 
@@ -5861,7 +5965,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -5869,7 +5973,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, value);
@@ -5881,7 +5985,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_string_native"));
 
@@ -5894,7 +5998,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -5902,7 +6006,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, value);
@@ -5914,7 +6018,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "assign_string_native"));
 
@@ -5927,7 +6031,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -5935,7 +6039,7 @@
     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);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -5948,7 +6052,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_string_keyed"));
 
@@ -5961,7 +6065,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -5969,7 +6073,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, key);
@@ -5984,7 +6088,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_string_keyed_int"));
 
@@ -5997,7 +6101,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -6005,7 +6109,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, key);
@@ -6020,7 +6124,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_string_keyed_str"));
 
@@ -6033,7 +6137,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -6041,7 +6145,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, value);
@@ -6053,7 +6157,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_bool"));
 
@@ -6066,7 +6170,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -6074,7 +6178,7 @@
     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);
 
@@ -6084,7 +6188,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_pmc"));
 
@@ -6097,7 +6201,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -6105,7 +6209,7 @@
     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);
 
@@ -6115,7 +6219,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "assign_pmc"));
 
@@ -6128,7 +6232,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -6136,7 +6240,7 @@
     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);
     VTABLE_push_pmc(supervisor, params, value);
@@ -6147,7 +6251,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_pmc_keyed"));
 
@@ -6160,7 +6264,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -6168,7 +6272,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, key);
@@ -6181,7 +6285,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_pmc_keyed_int"));
 
@@ -6194,7 +6298,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -6202,7 +6306,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, key);
@@ -6215,7 +6319,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_pmc_keyed_str"));
 
@@ -6228,7 +6332,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -6236,7 +6340,7 @@
     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);
     VTABLE_set_pointer(supervisor, temp, value);
@@ -6248,7 +6352,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_pointer"));
 
@@ -6261,7 +6365,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -6269,7 +6373,7 @@
     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);
     temp = Parrot_pmc_new(supervisor, enum_class_Pointer);
@@ -6282,7 +6386,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_pointer_keyed"));
 
@@ -6295,7 +6399,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -6303,7 +6407,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, key);
@@ -6318,7 +6422,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_pointer_keyed_int"));
 
@@ -6331,7 +6435,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -6339,7 +6443,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, key);
@@ -6354,7 +6458,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetch"),
                    CONST_STRING(supervisor, "set_pointer_keyed_str"));
 
@@ -6367,7 +6471,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -6376,7 +6480,7 @@
     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);
 
 
@@ -6385,7 +6489,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "elements"));
 
@@ -6398,7 +6502,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -6407,7 +6511,7 @@
     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);
 
 
@@ -6416,7 +6520,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "pop_integer"));
 
@@ -6429,7 +6533,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     FLOATVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -6438,7 +6542,7 @@
     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);
 
 
@@ -6447,7 +6551,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "pop_float"));
 
@@ -6460,7 +6564,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     STRING* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -6469,7 +6573,7 @@
     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);
 
 
@@ -6478,7 +6582,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "pop_string"));
 
@@ -6491,7 +6595,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -6500,7 +6604,7 @@
     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);
 
 
@@ -6509,7 +6613,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "pop_pmc"));
 
@@ -6522,7 +6626,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -6530,7 +6634,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, value);
@@ -6542,7 +6646,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "push_integer"));
 
@@ -6555,7 +6659,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -6563,7 +6667,7 @@
     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);
     VTABLE_set_number_native(supervisor, temp, value);
@@ -6575,7 +6679,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "push_float"));
 
@@ -6588,7 +6692,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -6596,7 +6700,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, value);
@@ -6608,7 +6712,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "push_string"));
 
@@ -6621,7 +6725,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -6629,7 +6733,7 @@
     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);
 
@@ -6639,7 +6743,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "push_pmc"));
 
@@ -6652,7 +6756,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -6661,7 +6765,7 @@
     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);
 
 
@@ -6670,7 +6774,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "shift_integer"));
 
@@ -6683,7 +6787,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     FLOATVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -6692,7 +6796,7 @@
     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);
 
 
@@ -6701,7 +6805,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "shift_float"));
 
@@ -6714,7 +6818,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     STRING* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -6723,7 +6827,7 @@
     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);
 
 
@@ -6732,7 +6836,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "shift_string"));
 
@@ -6745,7 +6849,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -6754,7 +6858,7 @@
     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);
 
 
@@ -6763,7 +6867,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "shift_pmc"));
 
@@ -6776,7 +6880,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -6784,7 +6888,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, value);
@@ -6796,7 +6900,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "unshift_integer"));
 
@@ -6809,7 +6913,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -6817,7 +6921,7 @@
     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);
     VTABLE_set_number_native(supervisor, temp, value);
@@ -6829,7 +6933,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "unshift_float"));
 
@@ -6842,7 +6946,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -6850,7 +6954,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, value);
@@ -6862,7 +6966,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "unshift_string"));
 
@@ -6875,7 +6979,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -6883,7 +6987,7 @@
     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);
 
@@ -6893,7 +6997,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "unshift_pmc"));
 
@@ -6906,7 +7010,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -6914,7 +7018,7 @@
     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);
     temp = Parrot_pmc_new(supervisor, enum_class_Integer);
@@ -6930,7 +7034,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "fetchsize"),
                    CONST_STRING(supervisor, "splice"));
 
@@ -6943,7 +7047,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -6952,7 +7056,7 @@
     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);
     VTABLE_push_pmc(supervisor, params, dest);
@@ -6963,7 +7067,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "add"));
 
@@ -6976,7 +7080,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -6985,7 +7089,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, value);
@@ -6998,7 +7102,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "add_int"));
 
@@ -7011,7 +7115,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -7020,7 +7124,7 @@
     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);
     VTABLE_set_number_native(supervisor, temp, value);
@@ -7033,7 +7137,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "add_float"));
 
@@ -7046,7 +7150,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -7054,7 +7158,7 @@
     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);
 
@@ -7064,10 +7168,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "i_add"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_add"));
 
@@ -7080,7 +7184,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -7088,7 +7192,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, value);
@@ -7100,10 +7204,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "i_add_int"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_add_int"));
 
@@ -7116,7 +7220,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -7124,7 +7228,7 @@
     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);
     VTABLE_set_number_native(supervisor, temp, value);
@@ -7136,10 +7240,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "i_add_float"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_add_float"));
 
@@ -7152,7 +7256,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -7161,7 +7265,7 @@
     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);
     VTABLE_push_pmc(supervisor, params, dest);
@@ -7172,7 +7276,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "subtract"));
 
@@ -7185,7 +7289,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -7194,7 +7298,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, value);
@@ -7207,7 +7311,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "subtract_int"));
 
@@ -7220,7 +7324,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -7229,7 +7333,7 @@
     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);
     VTABLE_set_number_native(supervisor, temp, value);
@@ -7242,7 +7346,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "subtract_float"));
 
@@ -7255,7 +7359,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -7263,7 +7367,7 @@
     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);
 
@@ -7273,10 +7377,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "i_subtract"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_subtract"));
 
@@ -7289,7 +7393,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -7297,7 +7401,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, value);
@@ -7309,10 +7413,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "i_subtract_int"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_subtract_int"));
 
@@ -7325,7 +7429,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -7333,7 +7437,7 @@
     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);
     VTABLE_set_number_native(supervisor, temp, value);
@@ -7345,10 +7449,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "i_subtract_float"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_subtract_float"));
 
@@ -7361,7 +7465,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -7370,7 +7474,7 @@
     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);
     VTABLE_push_pmc(supervisor, params, dest);
@@ -7381,7 +7485,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "multiply"));
 
@@ -7394,7 +7498,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -7403,7 +7507,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, value);
@@ -7416,7 +7520,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "multiply_int"));
 
@@ -7429,7 +7533,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -7438,7 +7542,7 @@
     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);
     VTABLE_set_number_native(supervisor, temp, value);
@@ -7451,7 +7555,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "multiply_float"));
 
@@ -7464,7 +7568,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -7472,7 +7576,7 @@
     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);
 
@@ -7482,10 +7586,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "i_multiply"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_multiply"));
 
@@ -7498,7 +7602,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -7506,7 +7610,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, value);
@@ -7518,10 +7622,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "i_multiply_int"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_multiply_int"));
 
@@ -7534,7 +7638,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -7542,7 +7646,7 @@
     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);
     VTABLE_set_number_native(supervisor, temp, value);
@@ -7554,10 +7658,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "i_multiply_float"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_multiply_float"));
 
@@ -7570,7 +7674,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -7579,7 +7683,7 @@
     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);
     VTABLE_push_pmc(supervisor, params, dest);
@@ -7590,7 +7694,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "divide"));
 
@@ -7603,7 +7707,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -7612,7 +7716,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, value);
@@ -7625,7 +7729,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "divide_int"));
 
@@ -7638,7 +7742,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -7647,7 +7751,7 @@
     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);
     VTABLE_set_number_native(supervisor, temp, value);
@@ -7660,7 +7764,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "divide_float"));
 
@@ -7673,7 +7777,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -7681,7 +7785,7 @@
     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);
 
@@ -7691,10 +7795,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "i_divide"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_divide"));
 
@@ -7707,7 +7811,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -7715,7 +7819,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, value);
@@ -7727,10 +7831,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "i_divide_int"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_divide_int"));
 
@@ -7743,7 +7847,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -7751,7 +7855,7 @@
     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);
     VTABLE_set_number_native(supervisor, temp, value);
@@ -7763,10 +7867,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "i_divide_float"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_divide_float"));
 
@@ -7779,7 +7883,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -7788,7 +7892,7 @@
     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);
     VTABLE_push_pmc(supervisor, params, dest);
@@ -7799,7 +7903,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "floor_divide"));
 
@@ -7812,7 +7916,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -7821,7 +7925,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, value);
@@ -7834,7 +7938,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "floor_divide_int"));
 
@@ -7847,7 +7951,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -7856,7 +7960,7 @@
     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);
     VTABLE_set_number_native(supervisor, temp, value);
@@ -7869,7 +7973,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "floor_divide_float"));
 
@@ -7882,7 +7986,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -7890,7 +7994,7 @@
     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);
 
@@ -7900,10 +8004,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "i_floor_divide"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_floor_divide"));
 
@@ -7916,7 +8020,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -7924,7 +8028,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, value);
@@ -7936,10 +8040,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "i_floor_divide_int"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_floor_divide_int"));
 
@@ -7952,7 +8056,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -7960,7 +8064,7 @@
     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);
     VTABLE_set_number_native(supervisor, temp, value);
@@ -7972,10 +8076,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "i_floor_divide_float"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_floor_divide_float"));
 
@@ -7988,7 +8092,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -7997,7 +8101,7 @@
     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);
     VTABLE_push_pmc(supervisor, params, dest);
@@ -8008,7 +8112,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "modulus"));
 
@@ -8021,7 +8125,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -8030,7 +8134,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, value);
@@ -8043,7 +8147,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "modulus_int"));
 
@@ -8056,7 +8160,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -8065,7 +8169,7 @@
     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);
     VTABLE_set_number_native(supervisor, temp, value);
@@ -8078,7 +8182,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "modulus_float"));
 
@@ -8091,7 +8195,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -8099,7 +8203,7 @@
     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);
 
@@ -8109,10 +8213,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "i_modulus"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_modulus"));
 
@@ -8125,7 +8229,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -8133,7 +8237,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, value);
@@ -8145,10 +8249,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "i_modulus_int"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_modulus_int"));
 
@@ -8161,7 +8265,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -8169,7 +8273,7 @@
     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);
     VTABLE_set_number_native(supervisor, temp, value);
@@ -8181,10 +8285,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "i_modulus_float"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_modulus_float"));
 
@@ -8197,7 +8301,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -8205,7 +8309,7 @@
     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);
 
 
@@ -8214,10 +8318,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "increment"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "increment"));
 
@@ -8230,7 +8334,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -8238,7 +8342,7 @@
     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);
 
 
@@ -8247,10 +8351,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "decrement"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "decrement"));
 
@@ -8263,7 +8367,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -8272,7 +8376,7 @@
     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);
 
@@ -8282,7 +8386,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "absolute"));
 
@@ -8295,7 +8399,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -8303,7 +8407,7 @@
     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);
 
 
@@ -8312,10 +8416,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "i_absolute"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_absolute"));
 
@@ -8328,7 +8432,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -8337,7 +8441,7 @@
     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);
 
@@ -8347,7 +8451,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "neg"));
 
@@ -8360,7 +8464,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -8368,7 +8472,7 @@
     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);
 
 
@@ -8377,10 +8481,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "math"),
                    CONST_STRING(supervisor, "i_neg"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_neg"));
 
@@ -8393,7 +8497,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -8402,7 +8506,7 @@
     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);
 
@@ -8412,7 +8516,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "is_equal"));
 
@@ -8425,7 +8529,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -8434,7 +8538,7 @@
     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);
 
@@ -8444,7 +8548,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "is_equal_num"));
 
@@ -8457,7 +8561,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -8466,7 +8570,7 @@
     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);
 
@@ -8476,7 +8580,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "is_equal_string"));
 
@@ -8489,7 +8593,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -8498,7 +8602,7 @@
     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);
 
@@ -8508,7 +8612,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "is_same"));
 
@@ -8521,7 +8625,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -8530,7 +8634,7 @@
     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);
 
@@ -8540,7 +8644,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "cmp"));
 
@@ -8553,7 +8657,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -8562,7 +8666,7 @@
     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);
 
@@ -8572,7 +8676,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "cmp_num"));
 
@@ -8585,7 +8689,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -8594,7 +8698,7 @@
     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);
 
@@ -8604,7 +8708,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "cmp_string"));
 
@@ -8617,7 +8721,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -8626,7 +8730,7 @@
     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);
 
@@ -8636,7 +8740,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "cmp_pmc"));
 
@@ -8649,7 +8753,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -8658,7 +8762,7 @@
     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);
     VTABLE_push_pmc(supervisor, params, dest);
@@ -8669,7 +8773,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "logical_or"));
 
@@ -8682,7 +8786,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -8691,7 +8795,7 @@
     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);
     VTABLE_push_pmc(supervisor, params, dest);
@@ -8702,7 +8806,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "logical_and"));
 
@@ -8715,7 +8819,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -8724,7 +8828,7 @@
     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);
     VTABLE_push_pmc(supervisor, params, dest);
@@ -8735,7 +8839,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "logical_xor"));
 
@@ -8748,7 +8852,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -8757,7 +8861,7 @@
     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);
 
@@ -8767,7 +8871,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "logical_not"));
 
@@ -8780,7 +8884,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -8788,7 +8892,7 @@
     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);
 
 
@@ -8797,10 +8901,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "cmp"),
                    CONST_STRING(supervisor, "i_logical_not"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_logical_not"));
 
@@ -8813,7 +8917,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -8822,7 +8926,7 @@
     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);
     VTABLE_push_pmc(supervisor, params, dest);
@@ -8833,7 +8937,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "string"),
                    CONST_STRING(supervisor, "concatenate"));
 
@@ -8846,7 +8950,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -8855,7 +8959,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, value);
@@ -8868,7 +8972,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "string"),
                    CONST_STRING(supervisor, "concatenate_str"));
 
@@ -8881,7 +8985,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -8889,7 +8993,7 @@
     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);
 
@@ -8899,10 +9003,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "string"),
                    CONST_STRING(supervisor, "i_concatenate"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_concatenate"));
 
@@ -8915,7 +9019,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -8923,7 +9027,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, value);
@@ -8935,10 +9039,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "string"),
                    CONST_STRING(supervisor, "i_concatenate_str"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_concatenate_str"));
 
@@ -8951,7 +9055,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -8960,7 +9064,7 @@
     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);
     VTABLE_push_pmc(supervisor, params, dest);
@@ -8971,7 +9075,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "string"),
                    CONST_STRING(supervisor, "repeat"));
 
@@ -8984,7 +9088,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -8993,7 +9097,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, value);
@@ -9006,7 +9110,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "string"),
                    CONST_STRING(supervisor, "repeat_int"));
 
@@ -9019,7 +9123,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -9027,7 +9131,7 @@
     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);
 
@@ -9037,10 +9141,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "string"),
                    CONST_STRING(supervisor, "i_repeat"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_repeat"));
 
@@ -9053,7 +9157,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -9061,7 +9165,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, value);
@@ -9073,10 +9177,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "string"),
                    CONST_STRING(supervisor, "i_repeat_int"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "i_repeat_int"));
 
@@ -9089,7 +9193,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -9097,7 +9201,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, offset);
@@ -9113,7 +9217,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "string"),
                    CONST_STRING(supervisor, "substr"));
 
@@ -9126,7 +9230,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     STRING* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -9135,7 +9239,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, offset);
@@ -9150,7 +9254,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "string"),
                    CONST_STRING(supervisor, "substr_str"));
 
@@ -9163,7 +9267,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -9172,7 +9276,7 @@
     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);
 
@@ -9182,7 +9286,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "exists"),
                    CONST_STRING(supervisor, "exists_keyed"));
 
@@ -9195,7 +9299,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -9204,7 +9308,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, key);
@@ -9216,7 +9320,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "exists"),
                    CONST_STRING(supervisor, "exists_keyed_int"));
 
@@ -9229,7 +9333,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -9238,7 +9342,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, key);
@@ -9250,7 +9354,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "exists"),
                    CONST_STRING(supervisor, "exists_keyed_str"));
 
@@ -9263,7 +9367,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -9272,7 +9376,7 @@
     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);
 
 
@@ -9281,7 +9385,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "defined"));
 
@@ -9294,7 +9398,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -9303,7 +9407,7 @@
     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);
 
@@ -9313,7 +9417,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "defined_keyed"));
 
@@ -9326,7 +9430,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -9335,7 +9439,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, key);
@@ -9347,7 +9451,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "defined_keyed_int"));
 
@@ -9360,7 +9464,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -9369,7 +9473,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, key);
@@ -9381,7 +9485,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "defined_keyed_str"));
 
@@ -9394,7 +9498,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -9402,7 +9506,7 @@
     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);
 
@@ -9412,7 +9516,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "delete_keyed"));
 
@@ -9425,7 +9529,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -9433,7 +9537,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, key);
@@ -9445,7 +9549,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "delete_keyed_int"));
 
@@ -9458,7 +9562,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -9466,7 +9570,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, key);
@@ -9478,7 +9582,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "delete_keyed_str"));
 
@@ -9491,7 +9595,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -9500,7 +9604,7 @@
     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);
 
 
@@ -9509,7 +9613,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "get_iter"));
 
@@ -9522,7 +9626,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -9531,7 +9635,7 @@
     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);
 
 
@@ -9540,7 +9644,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "hashvalue"));
 
@@ -9553,7 +9657,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     opcode_t* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -9562,7 +9666,7 @@
     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);
     VTABLE_set_pointer(supervisor, temp, next);
@@ -9574,7 +9678,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "invoke"));
 
@@ -9587,7 +9691,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -9596,7 +9700,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, method);
@@ -9608,7 +9712,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "can"));
 
@@ -9621,7 +9725,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -9630,7 +9734,7 @@
     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);
 
@@ -9640,7 +9744,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "does_pmc"));
 
@@ -9653,7 +9757,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -9662,7 +9766,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, role);
@@ -9674,7 +9778,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "does"));
 
@@ -9687,7 +9791,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -9696,7 +9800,7 @@
     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);
 
@@ -9706,7 +9810,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "isa_pmc"));
 
@@ -9719,7 +9823,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     INTVAL ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -9728,7 +9832,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, _class);
@@ -9740,7 +9844,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "isa"));
 
@@ -9753,7 +9857,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -9762,7 +9866,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, idx);
@@ -9774,7 +9878,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "get_attr_str"));
 
@@ -9787,7 +9891,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -9796,7 +9900,7 @@
     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);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -9809,7 +9913,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "get_attr_keyed"));
 
@@ -9822,7 +9926,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -9830,7 +9934,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, idx);
@@ -9843,10 +9947,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "set_attr_str"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "set_attr_str"));
 
@@ -9859,7 +9963,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -9867,7 +9971,7 @@
     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);
     temp = Parrot_pmc_new(supervisor, enum_class_String);
@@ -9881,10 +9985,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "set_attr_keyed"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "set_attr_keyed"));
 
@@ -9897,7 +10001,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -9906,7 +10010,7 @@
     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);
 
 
@@ -9915,7 +10019,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "get_class"));
 
@@ -9928,7 +10032,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -9936,7 +10040,7 @@
     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);
 
@@ -9946,10 +10050,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "add_parent"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "add_parent"));
 
@@ -9962,7 +10066,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -9970,7 +10074,7 @@
     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);
 
@@ -9980,10 +10084,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "remove_parent"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "remove_parent"));
 
@@ -9996,7 +10100,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -10004,7 +10108,7 @@
     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);
 
@@ -10014,10 +10118,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "add_role"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "add_role"));
 
@@ -10030,7 +10134,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -10038,7 +10142,7 @@
     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);
 
@@ -10048,10 +10152,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "remove_role"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "remove_role"));
 
@@ -10064,7 +10168,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -10072,7 +10176,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, name);
@@ -10085,10 +10189,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "add_attribute"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "add_attribute"));
 
@@ -10101,7 +10205,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -10109,7 +10213,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, name);
@@ -10121,10 +10225,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "remove_attribute"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "remove_attribute"));
 
@@ -10137,7 +10241,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -10145,7 +10249,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, method_name);
@@ -10158,10 +10262,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "add_method"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "add_method"));
 
@@ -10174,7 +10278,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -10182,7 +10286,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, method_name);
@@ -10194,10 +10298,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "remove_method"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "remove_method"));
 
@@ -10210,7 +10314,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -10218,7 +10322,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, vtable_name);
@@ -10231,10 +10335,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "add_vtable_override"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "add_vtable_override"));
 
@@ -10247,7 +10351,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -10255,7 +10359,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, vtable_name);
@@ -10267,10 +10371,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "remove_vtable_override"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "remove_vtable_override"));
 
@@ -10283,7 +10387,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -10292,7 +10396,7 @@
     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);
 
 
@@ -10301,7 +10405,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "inspect"));
 
@@ -10314,7 +10418,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -10323,7 +10427,7 @@
     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);
     VTABLE_set_string_native(supervisor, temp, what);
@@ -10335,7 +10439,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "inspect_str"));
 
@@ -10348,7 +10452,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -10356,7 +10460,7 @@
     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);
 
@@ -10366,7 +10470,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "freeze"));
 
@@ -10379,7 +10483,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -10387,7 +10491,7 @@
     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);
 
@@ -10397,10 +10501,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "thaw"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "thaw"));
 
@@ -10413,7 +10517,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -10421,7 +10525,7 @@
     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);
 
@@ -10431,10 +10535,10 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "thawfinish"));
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "write"),
                    CONST_STRING(supervisor, "thawfinish"));
 
@@ -10447,7 +10551,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -10455,7 +10559,7 @@
     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);
 
@@ -10465,7 +10569,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "visit"));
 
@@ -10478,7 +10582,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -10486,7 +10590,7 @@
     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);
 
 
@@ -10495,7 +10599,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "share"));
 
@@ -10508,7 +10612,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
     PMC* ret;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
@@ -10517,7 +10621,7 @@
     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);
 
 
@@ -10526,7 +10630,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "share_ro"));
 
@@ -10539,7 +10643,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -10547,7 +10651,7 @@
     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);
     VTABLE_set_integer_native(supervisor, temp, initializer);
@@ -10559,7 +10663,7 @@
         CONST_STRING(supervisor, "parameters"),
         params);
 
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "main"),
                    CONST_STRING(supervisor, "init_int"));
 

Modified: branches/gsoc_instrument/tools/build/gen_vtable_stubs.pl
==============================================================================
--- branches/gsoc_instrument/tools/build/gen_vtable_stubs.pl	Tue Jul 20 18:42:27 2010	(r48133)
+++ branches/gsoc_instrument/tools/build/gen_vtable_stubs.pl	Tue Jul 20 19:35:16 2010	(r48134)
@@ -221,7 +221,7 @@
     foreach $group (@{$groups}) {
         $group = lc $group;
         $events .= <<EVENT;
-    raise_vtable_event(supervisor, interp, pmc, data,
+    raise_vtable_event(supervisor, interp, instr_vt, pmc, data,
                    CONST_STRING(supervisor, "$group"),
                    CONST_STRING(supervisor, "$name"));
 EVENT
@@ -234,7 +234,7 @@
     void *orig_vtable;
     Parrot_Interp supervisor;
     PMC *temp;
-    PMC *params = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC *params;
 $ret_dec
     instr_vt = (PMC *) parrot_hash_get(interp, vtable_registry, pmc->vtable);
 
@@ -242,7 +242,7 @@
     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
 
     data = Parrot_pmc_new(supervisor, enum_class_Hash);


More information about the parrot-commits mailing list