[svn:parrot] r48277 - in trunk: compilers/imcc compilers/opsc/src/Ops/Trans include/parrot src src/call src/ops src/pmc src/runcore

plobsing at svn.parrot.org plobsing at svn.parrot.org
Tue Aug 3 05:51:02 UTC 2010


Author: plobsing
Date: Tue Aug  3 05:51:00 2010
New Revision: 48277
URL: https://trac.parrot.org/parrot/changeset/48277

Log:
Coallesce PackFile_Constant allocations into an array held in PackFile_ConstTable.
Reduces Rakudo startup by 0.4%

Modified:
   trunk/compilers/imcc/pbc.c
   trunk/compilers/opsc/src/Ops/Trans/C.pm
   trunk/include/parrot/call.h
   trunk/include/parrot/context.h
   trunk/include/parrot/packfile.h
   trunk/include/parrot/pmc_freeze.h
   trunk/src/call/context_accessors.c
   trunk/src/debug.c
   trunk/src/embed.c
   trunk/src/hash.c
   trunk/src/ops/core_ops.c
   trunk/src/packdump.c
   trunk/src/packfile.c
   trunk/src/packout.c
   trunk/src/pbc_merge.c
   trunk/src/pmc/callcontext.pmc
   trunk/src/pmc/eval.pmc
   trunk/src/pmc/imageio.pmc
   trunk/src/pmc/packfileconstanttable.pmc
   trunk/src/pmc/sub.pmc
   trunk/src/pmc_freeze.c
   trunk/src/runcore/trace.c

Modified: trunk/compilers/imcc/pbc.c
==============================================================================
--- trunk/compilers/imcc/pbc.c	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/compilers/imcc/pbc.c	Tue Aug  3 05:51:00 2010	(r48277)
@@ -352,14 +352,11 @@
     const size_t oldcount = interp->code->const_table->const_count;
     const size_t newcount = oldcount + 1;
 
-    /* Allocate a new constant */
-    PackFile_Constant *new_constant = PackFile_Constant_new(interp);
-
     /* Update the constant count and reallocate */
     if (interp->code->const_table->constants) {
         interp->code->const_table->constants =
             mem_gc_realloc_n_typed_zeroed(interp, interp->code->const_table->constants,
-                newcount, oldcount, PackFile_Constant *);
+                newcount, oldcount, PackFile_Constant);
     }
     else {
         /* initialize rlookup cache */
@@ -369,10 +366,9 @@
             (hash_comp_fn)STRING_compare_distinct_cs_enc;
 
         interp->code->const_table->constants =
-            mem_gc_allocate_n_zeroed_typed(interp, newcount, PackFile_Constant *);
+            mem_gc_allocate_n_zeroed_typed(interp, newcount, PackFile_Constant);
     }
 
-    interp->code->const_table->constants[oldcount] = new_constant;
     interp->code->const_table->const_count         = newcount;
 
     return oldcount;
@@ -394,7 +390,7 @@
 {
     ASSERT_ARGS(add_const_table_pmc)
     const int newitem = add_const_table(interp);
-    PackFile_Constant * const constant = interp->code->const_table->constants[newitem];
+    PackFile_Constant * const constant = &interp->code->const_table->constants[newitem];
 
     constant->type  = PFC_PMC;
     constant->u.key = pmc;
@@ -418,7 +414,7 @@
 {
     ASSERT_ARGS(add_const_table_key)
     const int newitem = add_const_table(interp);
-    PackFile_Constant * const constant = interp->code->const_table->constants[newitem];
+    PackFile_Constant * const constant = &interp->code->const_table->constants[newitem];
 
     constant->type  = PFC_KEY;
     constant->u.key = key;
@@ -1062,7 +1058,7 @@
     /* otherwise... */
     {
         int                k        = add_const_table(interp);
-        PackFile_Constant *constant = table->constants[k];
+        PackFile_Constant *constant = &table->constants[k];
         constant->type              = PFC_STRING;
         constant->u.string          = s;
 
@@ -1091,7 +1087,7 @@
     const int      k = add_const_table(interp);
     STRING * const s = Parrot_str_new(interp, buf, 0);
 
-    PackFile_Constant * const constant = interp->code->const_table->constants[k];
+    PackFile_Constant * const constant = &interp->code->const_table->constants[k];
 
     constant->type     = PFC_NUMBER;
     constant->u.number = Parrot_str_to_num(interp, s);
@@ -1136,7 +1132,7 @@
         r = pcc_sub->multi[i];
 
         if (r->set == 'S') {
-            STRING * const type_name = ct->constants[r->color]->u.string;
+            STRING * const type_name = ct->constants[r->color].u.string;
             const INTVAL type_num    = Parrot_pmc_get_type_str(interp, type_name);
 
             if (type_num == enum_type_undef) {
@@ -1149,7 +1145,7 @@
         }
         else {
             PARROT_ASSERT(r->set == 'K');
-            sig_pmc = ct->constants[r->color]->u.key;
+            sig_pmc = ct->constants[r->color].u.key;
         }
 
         VTABLE_set_pmc_keyed_int(interp, multi_sig, i, sig_pmc);
@@ -1180,10 +1176,10 @@
                int need_lex)
 {
     ASSERT_ARGS(create_lexinfo)
-    PMC                *lex_info    = NULL;
-    SymHash            *hsh         = &unit->hash;
-    PackFile_Constant **constants   = interp->code->const_table->constants;
-    const INTVAL        lex_info_id = Parrot_get_ctx_HLL_type(interp,
+    PMC               *lex_info    = NULL;
+    SymHash           *hsh         = &unit->hash;
+    PackFile_Constant *constants   = interp->code->const_table->constants;
+    const INTVAL       lex_info_id = Parrot_get_ctx_HLL_type(interp,
                                         enum_class_LexInfo);
     unsigned int        i;
 
@@ -1208,7 +1204,7 @@
                     Parrot_Sub_attributes *sub;
                     PARROT_ASSERT(k >= 0);
 
-                    lex_name = constants[k]->u.string;
+                    lex_name = constants[k].u.string;
                     PARROT_ASSERT(PObj_is_string_TEST(lex_name));
 
                     PMC_get_sub(interp, sub_pmc, sub);
@@ -1403,7 +1399,7 @@
     Sub_comp_get_FLAGS(sub) |= (r->pcc_sub->pragma & SUB_COMP_FLAG_MASK);
 
     r->color  = add_const_str(interp, IMCC_string_from_reg(interp, r));
-    sub->name = ct->constants[r->color]->u.string;
+    sub->name = ct->constants[r->color].u.string;
 
     /* If the unit has no subid, set the subid to match the name. */
     if (!unit->subid)
@@ -1420,18 +1416,18 @@
             IMCC_string_from_reg(interp, unit->subid));
     }
 
-    sub->subid = ct->constants[unit->subid->color]->u.string;
+    sub->subid = ct->constants[unit->subid->color].u.string;
     ns_pmc     = NULL;
 
     if (ns_const >= 0 && ns_const < ct->const_count) {
-        switch (ct->constants[ns_const]->type) {
+        switch (ct->constants[ns_const].type) {
           case PFC_KEY:
-            ns_pmc = ct->constants[ns_const]->u.key;
+            ns_pmc = ct->constants[ns_const].u.key;
             break;
           case PFC_STRING:
             ns_pmc = Parrot_pmc_new_constant(interp, enum_class_String);
             VTABLE_set_string_native(interp, ns_pmc,
-                ct->constants[ns_const]->u.string);
+                ct->constants[ns_const].u.string);
             break;
           default:
             break;
@@ -1524,8 +1520,8 @@
 
     /* store the sub */
     {
-        const int            k          = add_const_table(interp);
-        PackFile_Constant   * const pfc = ct->constants[k];
+        const int                   k = add_const_table(interp);
+        PackFile_Constant * const pfc = &ct->constants[k];
 
         pfc->type     = PFC_PMC;
         pfc->u.key    = sub_pmc;
@@ -2150,7 +2146,7 @@
 {
     ASSERT_ARGS(verify_signature)
     PMC    *changed_sig    = NULL;
-    PMC    * const sig_arr = interp->code->const_table->constants[pc[-1]]->u.key;
+    PMC    * const sig_arr = interp->code->const_table->constants[pc[-1]].u.key;
     int     needed         = 0;
     int     no_consts      = (ins->opnum == PARROT_OP_get_results_pc
                            || ins->opnum == PARROT_OP_get_params_pc);

Modified: trunk/compilers/opsc/src/Ops/Trans/C.pm
==============================================================================
--- trunk/compilers/opsc/src/Ops/Trans/C.pm	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/compilers/opsc/src/Ops/Trans/C.pm	Tue Aug  3 05:51:00 2010	(r48277)
@@ -25,10 +25,10 @@
         :ki("IREG(NUM)"),
 
         :ic("cur_opcode[NUM]"),
-        :nc("CONST(NUM)->u.number"),
-        :pc("CONST(NUM)->u.key"),
-        :sc("CONST(NUM)->u.string"),
-        :kc("CONST(NUM)->u.key"),
+        :nc("CONST(NUM).u.number"),
+        :pc("CONST(NUM).u.key"),
+        :sc("CONST(NUM).u.string"),
+        :kc("CONST(NUM).u.key"),
         :kic("cur_opcode[NUM]")
     );
 

Modified: trunk/include/parrot/call.h
==============================================================================
--- trunk/include/parrot/call.h	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/include/parrot/call.h	Tue Aug  3 05:51:00 2010	(r48277)
@@ -307,7 +307,7 @@
     ||  *(pc) == PARROT_OP_get_results_pc    \
     ||  *(pc) == PARROT_OP_get_params_pc     \
     ||  *(pc) == PARROT_OP_set_returns_pc) { \
-        PMC * const sig = (seg)->const_table->constants[(pc)[1]]->u.key; \
+        PMC * const sig = (seg)->const_table->constants[(pc)[1]].u.key; \
         (n) += VTABLE_elements((interp), sig); \
     } \
 } while (0)

Modified: trunk/include/parrot/context.h
==============================================================================
--- trunk/include/parrot/context.h	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/include/parrot/context.h	Tue Aug  3 05:51:00 2010	(r48277)
@@ -105,7 +105,7 @@
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 PARROT_PURE_FUNCTION
-struct PackFile_Constant ** Parrot_pcc_get_constants_func(SHIM_INTERP,
+struct PackFile_Constant * Parrot_pcc_get_constants_func(SHIM_INTERP,
     ARGIN(PMC *ctx))
         __attribute__nonnull__(2);
 
@@ -220,7 +220,7 @@
 PARROT_CAN_RETURN_NULL
 void Parrot_pcc_set_constants_func(SHIM_INTERP,
     ARGIN(PMC *ctx),
-    ARGIN_NULLOK(struct PackFile_Constant **constants))
+    ARGIN_NULLOK(struct PackFile_Constant *constants))
         __attribute__nonnull__(2);
 
 PARROT_EXPORT
@@ -452,10 +452,10 @@
 #  define Parrot_pcc_get_signature(i, c) (CONTEXT_STRUCT(c)->current_sig)
 #  define Parrot_pcc_set_signature(i, c, value) (CONTEXT_STRUCT(c)->current_sig = (value))
 
-#  define Parrot_pcc_get_int_constant(i, c, idx) (CONTEXT_STRUCT(c)->constants[(idx)]->u.integer)
-#  define Parrot_pcc_get_num_constant(i, c, idx) (CONTEXT_STRUCT(c)->constants[(idx)]->u.number)
-#  define Parrot_pcc_get_string_constant(i, c, idx) (CONTEXT_STRUCT(c)->constants[(idx)]->u.string)
-#  define Parrot_pcc_get_pmc_constant(i, c, idx) (CONTEXT_STRUCT(c)->constants[(idx)]->u.key)
+#  define Parrot_pcc_get_int_constant(i, c, idx) (CONTEXT_STRUCT(c)->constants[(idx)].u.integer)
+#  define Parrot_pcc_get_num_constant(i, c, idx) (CONTEXT_STRUCT(c)->constants[(idx)].u.number)
+#  define Parrot_pcc_get_string_constant(i, c, idx) (CONTEXT_STRUCT(c)->constants[(idx)].u.string)
+#  define Parrot_pcc_get_pmc_constant(i, c, idx) (CONTEXT_STRUCT(c)->constants[(idx)].u.key)
 
 #  define Parrot_pcc_get_recursion_depth(i, c) (CONTEXT_STRUCT(c)->recursion_depth)
 #  define Parrot_pcc_dec_recursion_depth(i, c) (--CONTEXT_STRUCT(c)->recursion_depth)

Modified: trunk/include/parrot/packfile.h
==============================================================================
--- trunk/include/parrot/packfile.h	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/include/parrot/packfile.h	Tue Aug  3 05:51:00 2010	(r48277)
@@ -261,7 +261,7 @@
 typedef struct PackFile_ConstTable {
     PackFile_Segment           base;
     opcode_t                   const_count;
-    PackFile_Constant        **constants;
+    PackFile_Constant         *constants;
     PackFile_ByteCode         *code;  /* where this segment belongs to */
 
     PMC                       *string_hash; /* Hash for lookup strings and numbers */

Modified: trunk/include/parrot/pmc_freeze.h
==============================================================================
--- trunk/include/parrot/pmc_freeze.h	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/include/parrot/pmc_freeze.h	Tue Aug  3 05:51:00 2010	(r48277)
@@ -155,7 +155,7 @@
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
-PMC* Parrot_thaw(PARROT_INTERP, ARGIN(STRING *image))
+PMC * Parrot_thaw(PARROT_INTERP, ARGIN(STRING *image))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 

Modified: trunk/src/call/context_accessors.c
==============================================================================
--- trunk/src/call/context_accessors.c	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/src/call/context_accessors.c	Tue Aug  3 05:51:00 2010	(r48277)
@@ -49,11 +49,11 @@
 
 /*
 
-=item C<struct PackFile_Constant ** Parrot_pcc_get_constants_func(PARROT_INTERP,
+=item C<struct PackFile_Constant * Parrot_pcc_get_constants_func(PARROT_INTERP,
 PMC *ctx)>
 
 =item C<void Parrot_pcc_set_constants_func(PARROT_INTERP, PMC *ctx, struct
-PackFile_Constant **constants)>
+PackFile_Constant *constants)>
 
 Get/set constants from context.
 
@@ -64,7 +64,7 @@
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 PARROT_PURE_FUNCTION
-struct PackFile_Constant **
+struct PackFile_Constant *
 Parrot_pcc_get_constants_func(SHIM_INTERP, ARGIN(PMC *ctx))
 {
     ASSERT_ARGS(Parrot_pcc_get_constants_func)
@@ -75,7 +75,7 @@
 PARROT_CAN_RETURN_NULL
 void
 Parrot_pcc_set_constants_func(SHIM_INTERP, ARGIN(PMC *ctx),
-        ARGIN_NULLOK(struct PackFile_Constant **constants))
+        ARGIN_NULLOK(struct PackFile_Constant *constants))
 {
     ASSERT_ARGS(Parrot_pcc_set_constants_func)
     Parrot_Context * const c = CONTEXT_STRUCT(ctx);
@@ -681,8 +681,8 @@
 {
     ASSERT_ARGS(Parrot_pcc_get_int_constant_func)
     const Parrot_Context * const c = CONTEXT_STRUCT(ctx);
-    PARROT_ASSERT(c->constants[idx]->type == 'i');
-    return c->constants[idx]->u.integer;
+    PARROT_ASSERT(c->constants[idx].type == 'i');
+    return c->constants[idx].u.integer;
 }
 
 PARROT_EXPORT
@@ -693,8 +693,8 @@
 {
     ASSERT_ARGS(Parrot_pcc_get_num_constant_func)
     const Parrot_Context * const c = CONTEXT_STRUCT(ctx);
-    PARROT_ASSERT(c->constants[idx]->type == 'n');
-    return c->constants[idx]->u.number;
+    PARROT_ASSERT(c->constants[idx].type == 'n');
+    return c->constants[idx].u.number;
 }
 
 PARROT_EXPORT
@@ -705,8 +705,8 @@
 {
     ASSERT_ARGS(Parrot_pcc_get_string_constant_func)
     const Parrot_Context * const c = CONTEXT_STRUCT(ctx);
-    PARROT_ASSERT(c->constants[idx]->type == 's');
-    return c->constants[idx]->u.string;
+    PARROT_ASSERT(c->constants[idx].type == 's');
+    return c->constants[idx].u.string;
 }
 
 PARROT_EXPORT
@@ -717,9 +717,9 @@
 {
     ASSERT_ARGS(Parrot_pcc_get_pmc_constant_func)
     const Parrot_Context * const c = CONTEXT_STRUCT(ctx);
-    PARROT_ASSERT((c->constants[idx]->type == 'k')
-            || (c->constants[idx]->type == 'p'));
-    return c->constants[idx]->u.key;
+    PARROT_ASSERT((c->constants[idx].type == 'k')
+            || (c->constants[idx].type == 'p'));
+    return c->constants[idx].u.key;
 }
 
 /*

Modified: trunk/src/debug.c
==============================================================================
--- trunk/src/debug.c	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/src/debug.c	Tue Aug  3 05:51:00 2010	(r48277)
@@ -2323,7 +2323,7 @@
           case PARROT_ARG_NC:
             {
                 /* Convert the float to a string */
-                const FLOATVAL f = interp->code->const_table->constants[op[j]]->u.number;
+                const FLOATVAL f = interp->code->const_table->constants[op[j]].u.number;
                 Parrot_snprintf(interp, buf, sizeof (buf), FLOATVAL_FMT, f);
                 strcpy(&dest[size], buf);
                 size += strlen(buf);
@@ -2331,13 +2331,13 @@
             break;
           case PARROT_ARG_SC:
             dest[size++] = '"';
-            if (interp->code->const_table->constants[op[j]]-> u.string->strlen) {
+            if (interp->code->const_table->constants[op[j]].u.string->strlen) {
                 char * const unescaped =
                     Parrot_str_to_cstring(interp, interp->code->
-                           const_table->constants[op[j]]->u.string);
+                           const_table->constants[op[j]].u.string);
                 char * const escaped =
                     PDB_escape(interp, unescaped, interp->code->const_table->
-                           constants[op[j]]->u.string->strlen);
+                           constants[op[j]].u.string->strlen);
                 if (escaped) {
                     strcpy(&dest[size], escaped);
                     size += strlen(escaped);
@@ -2361,7 +2361,7 @@
             break;
           case PARROT_ARG_KC:
             {
-                PMC * k = interp->code->const_table->constants[op[j]]->u.key;
+                PMC * k = interp->code->const_table->constants[op[j]].u.key;
                 dest[size - 1] = '[';
                 while (k) {
                     switch (PObj_get_FLAGS(k)) {
@@ -2463,7 +2463,7 @@
 
     if (specialop > 0) {
         char buf[1000];
-        PMC * const sig = interp->code->const_table->constants[op[1]]->u.key;
+        PMC * const sig = interp->code->const_table->constants[op[1]].u.key;
         const int n_values = VTABLE_elements(interp, sig);
         /* The flag_names strings come from Call_bits_enum_t (with which it
            should probably be colocated); they name the bits from LSB to MSB.

Modified: trunk/src/embed.c
==============================================================================
--- trunk/src/embed.c	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/src/embed.c	Tue Aug  3 05:51:00 2010	(r48277)
@@ -730,7 +730,7 @@
     for (i = 0; i < ft->fixup_count; ++i) {
         if (ft->fixups[i].type == enum_fixup_sub) {
             const opcode_t ci      = ft->fixups[i].offset;
-            PMC    * const sub_pmc = ct->constants[ci]->u.key;
+            PMC    * const sub_pmc = ct->constants[ci].u.key;
             Parrot_Sub_attributes *sub;
 
             PMC_get_sub(interp, sub_pmc, sub);
@@ -877,7 +877,7 @@
     Parrot_io_fprintf(interp, output, "=head1 Constant-table\n\n");
 
     for (i = 0; i < numconstants; ++i) {
-        const PackFile_Constant * const c = interp->code->const_table->constants[i];
+        const PackFile_Constant * const c = &interp->code->const_table->constants[i];
 
         switch (c->type) {
           case PFC_NUMBER:
@@ -1024,7 +1024,7 @@
                 const int filename_const_offset =
                     interp->code->debugs->mappings[curr_mapping].filename;
                 Parrot_io_fprintf(interp, output, "# Current Source Filename '%Ss'\n",
-                        interp->code->const_table->constants[filename_const_offset]->u.string);
+                        interp->code->const_table->constants[filename_const_offset].u.string);
                 ++curr_mapping;
             }
         }

Modified: trunk/src/hash.c
==============================================================================
--- trunk/src/hash.c	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/src/hash.c	Tue Aug  3 05:51:00 2010	(r48277)
@@ -177,6 +177,7 @@
 static UINTVAL
 get_hash_val(PARROT_INTERP, ARGIN(Hash *hash), ARGIN_NULLOK(void *key))
 {
+    ASSERT_ARGS(get_hash_val)
     if (hash->hash_val == key_hash_STRING) {
         STRING *s = (STRING *)key;
         if (s->hashval)

Modified: trunk/src/ops/core_ops.c
==============================================================================
--- trunk/src/ops/core_ops.c	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/src/ops/core_ops.c	Tue Aug  3 05:51:00 2010	(r48277)
@@ -14211,7 +14211,7 @@
 opcode_t *
 Parrot_load_bytecode_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    Parrot_load_bytecode(interp, CONST(1)->u.string);
+    Parrot_load_bytecode(interp, CONST(1).u.string);
 
 return (opcode_t *)cur_opcode + 2;}
 
@@ -14225,7 +14225,7 @@
 opcode_t *
 Parrot_load_language_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    Parrot_load_language(interp, CONST(1)->u.string);
+    Parrot_load_language(interp, CONST(1).u.string);
 
 return (opcode_t *)cur_opcode + 2;}
 
@@ -14456,7 +14456,7 @@
 Parrot_set_args_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     opcode_t * const raw_args = CUR_OPCODE;
-    PMC * const signature = CONST(1)->u.key;
+    PMC * const signature = CONST(1).u.key;
     PMC * const call_sig = Parrot_pcc_build_sig_object_from_op(interp,
             PMCNULL, signature, raw_args);
     const INTVAL argc = VTABLE_elements(interp, signature);
@@ -14467,7 +14467,7 @@
 Parrot_get_params_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     opcode_t * const raw_params  = CUR_OPCODE;
-    PMC      * const signature   = CONST(1)->u.key;
+    PMC      * const signature   = CONST(1).u.key;
     PMC      * const ctx         = CURRENT_CONTEXT(interp);
     PMC      * const ccont       = Parrot_pcc_get_continuation(interp, ctx);
     PMC      * const caller_ctx  = Parrot_pcc_get_caller_ctx(interp, ctx);
@@ -14490,7 +14490,7 @@
 Parrot_set_returns_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     opcode_t * const raw_args  = CUR_OPCODE;
-    PMC      * const signature = CONST(1)->u.key;
+    PMC      * const signature = CONST(1).u.key;
     PMC      * const call_sig  = Parrot_pcc_build_sig_object_from_op(interp,
                 Parrot_pcc_get_signature(interp,
                 Parrot_pcc_get_caller_ctx(interp, CURRENT_CONTEXT(interp))),
@@ -14506,7 +14506,7 @@
 Parrot_get_results_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     opcode_t * const raw_params  = CUR_OPCODE;
-    PMC      * const signature   = CONST(1)->u.key;
+    PMC      * const signature   = CONST(1).u.key;
     PMC             *ctx         = CURRENT_CONTEXT(interp);
     PMC             *ccont       = Parrot_pcc_get_continuation(interp, ctx);
     PMC             *call_object = Parrot_pcc_get_signature(interp, ctx);
@@ -14538,7 +14538,7 @@
 
     VTABLE_set_attr_str(interp, ctx,
             Parrot_str_new_constant(interp, "return_flags"),
-            CONST(1)->u.key);
+            CONST(1).u.key);
 
 return (opcode_t *)cur_opcode + 2;}
 
@@ -14701,7 +14701,7 @@
     opcode_t * const ret       = cur_opcode + 2;
     PMC      * const resume    = pmc_new(interp, enum_class_Continuation);
     PMC      * const exception = Parrot_ex_build_exception(interp, EXCEPT_error,
-                                    CONTROL_ERROR, CONST(1)->u.string);
+                                    CONTROL_ERROR, CONST(1).u.string);
 
     VTABLE_set_pointer(interp, resume, ret);
 
@@ -14733,7 +14733,7 @@
     opcode_t        *dest;
     opcode_t * const ret       = cur_opcode + 2;
     PMC      * const resume    = pmc_new(interp, enum_class_Continuation);
-    STRING   * const msg       = PMC_IS_NULL(CONST(1)->u.key) ? NULL : VTABLE_get_string(interp, CONST(1)->u.key);
+    STRING   * const msg       = PMC_IS_NULL(CONST(1).u.key) ? NULL : VTABLE_get_string(interp, CONST(1).u.key);
     PMC      * const exception =
         Parrot_ex_build_exception(interp, EXCEPT_error, CONTROL_ERROR, msg);
 
@@ -15091,7 +15091,7 @@
 opcode_t *
 Parrot_loadlib_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = Parrot_load_lib(interp, CONST(2)->u.string, NULL);
+    PREG(1) = Parrot_load_lib(interp, CONST(2).u.string, NULL);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -15105,21 +15105,21 @@
 opcode_t *
 Parrot_loadlib_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = Parrot_load_lib(interp, CONST(2)->u.string, PREG(3));
+    PREG(1) = Parrot_load_lib(interp, CONST(2).u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_loadlib_p_s_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = Parrot_load_lib(interp, SREG(2), CONST(3)->u.key);
+    PREG(1) = Parrot_load_lib(interp, SREG(2), CONST(3).u.key);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_loadlib_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = Parrot_load_lib(interp, CONST(2)->u.string, CONST(3)->u.key);
+    PREG(1) = Parrot_load_lib(interp, CONST(2).u.string, CONST(3).u.key);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -15165,13 +15165,13 @@
         dl_handle = ((Parrot_ParrotLibrary_attributes*)PMC_data(PREG(2)))->dl_handle;
     }
 
-    ptr = Parrot_dlsym_str(interp, dl_handle, CONST(3)->u.string);
+    ptr = Parrot_dlsym_str(interp, dl_handle, CONST(3).u.string);
     p = D2FPTR(ptr);
 
     if (p == NULLfunc) {
         const char * err = Parrot_dlerror();
         Parrot_warn(interp, PARROT_WARNINGS_UNDEF_FLAG,
-                "Symbol '%Ss' not found: %s\n", CONST(3)->u.string, err ? err : "unknown reason");
+                "Symbol '%Ss' not found: %s\n", CONST(3).u.string, err ? err : "unknown reason");
         PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
     }
     else {
@@ -15205,7 +15205,7 @@
     }
     else {
         PREG(1) = Parrot_pmc_new(interp, enum_class_NCI);
-        VTABLE_set_pointer_keyed_str(interp, PREG(1), CONST(4)->u.string, F2DPTR(p));
+        VTABLE_set_pointer_keyed_str(interp, PREG(1), CONST(4).u.string, F2DPTR(p));
     }
 
 return (opcode_t *)cur_opcode + 5;}
@@ -15223,18 +15223,18 @@
         dl_handle = ((Parrot_ParrotLibrary_attributes*)PMC_data(PREG(2)))->dl_handle;
     }
 
-    ptr = Parrot_dlsym_str(interp, dl_handle, CONST(3)->u.string);
+    ptr = Parrot_dlsym_str(interp, dl_handle, CONST(3).u.string);
     p = D2FPTR(ptr);
 
     if (p == NULLfunc) {
         const char * err = Parrot_dlerror();
         Parrot_warn(interp, PARROT_WARNINGS_UNDEF_FLAG,
-                "Symbol '%Ss' not found: %s\n", CONST(3)->u.string, err ? err : "unknown reason");
+                "Symbol '%Ss' not found: %s\n", CONST(3).u.string, err ? err : "unknown reason");
         PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
     }
     else {
         PREG(1) = Parrot_pmc_new(interp, enum_class_NCI);
-        VTABLE_set_pointer_keyed_str(interp, PREG(1), CONST(4)->u.string, F2DPTR(p));
+        VTABLE_set_pointer_keyed_str(interp, PREG(1), CONST(4).u.string, F2DPTR(p));
     }
 
 return (opcode_t *)cur_opcode + 5;}
@@ -15280,12 +15280,12 @@
         dl_handle = ((Parrot_ParrotLibrary_attributes*)PMC_data(PREG(2)))->dl_handle;
     }
 
-    p = Parrot_dlsym_str(interp, dl_handle, CONST(3)->u.string);
+    p = Parrot_dlsym_str(interp, dl_handle, CONST(3).u.string);
 
     if (p == NULL) {
         const char * const err = Parrot_dlerror();
         Parrot_warn(interp, PARROT_WARNINGS_UNDEF_FLAG,
-                "Symbol '%Ss' not found: %s\n", CONST(3)->u.string, err ? err : "unknown reason");
+                "Symbol '%Ss' not found: %s\n", CONST(3).u.string, err ? err : "unknown reason");
         PREG(1) = Parrot_pmc_new(interp, enum_class_Undef);
     }
     else {
@@ -15311,7 +15311,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const compreg_hash = VTABLE_get_pmc_keyed_int(interp,
             interp->iglobals, IGLOBALS_COMPREG_HASH);
-    VTABLE_set_pmc_keyed_str(interp, compreg_hash, CONST(1)->u.string, PREG(2));
+    VTABLE_set_pmc_keyed_str(interp, compreg_hash, CONST(1).u.string, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -15329,7 +15329,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const compreg_hash = VTABLE_get_pmc_keyed_int(interp,
             interp->iglobals, IGLOBALS_COMPREG_HASH);
-    PREG(1) = VTABLE_get_pmc_keyed_str(interp, compreg_hash, CONST(2)->u.string);
+    PREG(1) = VTABLE_get_pmc_keyed_str(interp, compreg_hash, CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -15343,7 +15343,7 @@
 opcode_t *
 Parrot_new_callback_p_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = Parrot_make_cb(interp, PREG(2), PREG(3), CONST(4)->u.string);
+    PREG(1) = Parrot_make_cb(interp, PREG(2), PREG(3), CONST(4).u.string);
 
 return (opcode_t *)cur_opcode + 5;}
 
@@ -15381,7 +15381,7 @@
     if (interp->code->annotations) {
         const opcode_t cur_pos = ( cur_opcode + 3) - interp->code->base.data;
         PREG(1) = PackFile_Annotations_lookup(interp, interp->code->annotations,
-                cur_pos, CONST(2)->u.string);
+                cur_pos, CONST(2).u.string);
     }
     else {
         PREG(1) = PMCNULL;
@@ -15643,7 +15643,7 @@
 opcode_t *
 Parrot_eq_nc_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (CONST(1)->u.number == NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (CONST(1).u.number == NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -15651,7 +15651,7 @@
 opcode_t *
 Parrot_eq_n_nc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (NREG(1) == CONST(2)->u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (NREG(1) == CONST(2).u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -15667,7 +15667,7 @@
 opcode_t *
 Parrot_eq_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (Parrot_str_equal(interp, CONST(1)->u.string, SREG(2))) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (Parrot_str_equal(interp, CONST(1).u.string, SREG(2))) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -15675,7 +15675,7 @@
 opcode_t *
 Parrot_eq_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (Parrot_str_equal(interp, SREG(1), CONST(2)->u.string)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (Parrot_str_equal(interp, SREG(1), CONST(2).u.string)) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -15739,7 +15739,7 @@
      * overriding the compare multi subs wouldn't
      * have any effect with the current code
      */
-    if (VTABLE_get_number(interp, PREG(1)) == CONST(2)->u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (VTABLE_get_number(interp, PREG(1)) == CONST(2).u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -15755,7 +15755,7 @@
 opcode_t *
 Parrot_eq_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (Parrot_str_equal(interp, VTABLE_get_string(interp, PREG(1)), CONST(2)->u.string)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (Parrot_str_equal(interp, VTABLE_get_string(interp, PREG(1)), CONST(2).u.string)) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -15787,7 +15787,7 @@
 opcode_t *
 Parrot_eq_addr_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (CONST(1)->u.string == SREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (CONST(1).u.string == SREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -15795,7 +15795,7 @@
 opcode_t *
 Parrot_eq_addr_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (SREG(1) == CONST(2)->u.string) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (SREG(1) == CONST(2).u.string) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -15803,7 +15803,7 @@
 opcode_t *
 Parrot_eq_addr_sc_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (CONST(1)->u.string == CONST(2)->u.string) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (CONST(1).u.string == CONST(2).u.string) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -15851,7 +15851,7 @@
 opcode_t *
 Parrot_ne_nc_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (CONST(1)->u.number != NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (CONST(1).u.number != NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -15859,7 +15859,7 @@
 opcode_t *
 Parrot_ne_n_nc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (NREG(1) != CONST(2)->u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (NREG(1) != CONST(2).u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -15875,7 +15875,7 @@
 opcode_t *
 Parrot_ne_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (Parrot_str_not_equal(interp, CONST(1)->u.string, SREG(2))) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (Parrot_str_not_equal(interp, CONST(1).u.string, SREG(2))) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -15883,7 +15883,7 @@
 opcode_t *
 Parrot_ne_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (Parrot_str_not_equal(interp, SREG(1), CONST(2)->u.string)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (Parrot_str_not_equal(interp, SREG(1), CONST(2).u.string)) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -15935,7 +15935,7 @@
 opcode_t *
 Parrot_ne_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (VTABLE_get_number(interp, PREG(1)) != CONST(2)->u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (VTABLE_get_number(interp, PREG(1)) != CONST(2).u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -15951,7 +15951,7 @@
 opcode_t *
 Parrot_ne_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (Parrot_str_not_equal(interp, VTABLE_get_string(interp, PREG(1)), CONST(2)->u.string)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (Parrot_str_not_equal(interp, VTABLE_get_string(interp, PREG(1)), CONST(2).u.string)) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -15983,7 +15983,7 @@
 opcode_t *
 Parrot_ne_addr_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (CONST(1)->u.string != SREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (CONST(1).u.string != SREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -15991,7 +15991,7 @@
 opcode_t *
 Parrot_ne_addr_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (SREG(1) != CONST(2)->u.string) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (SREG(1) != CONST(2).u.string) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -15999,7 +15999,7 @@
 opcode_t *
 Parrot_ne_addr_sc_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (CONST(1)->u.string != CONST(2)->u.string) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (CONST(1).u.string != CONST(2).u.string) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -16047,7 +16047,7 @@
 opcode_t *
 Parrot_lt_nc_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (CONST(1)->u.number < NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (CONST(1).u.number < NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -16055,7 +16055,7 @@
 opcode_t *
 Parrot_lt_n_nc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (NREG(1) < CONST(2)->u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (NREG(1) < CONST(2).u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -16071,7 +16071,7 @@
 opcode_t *
 Parrot_lt_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (Parrot_str_compare(interp, CONST(1)->u.string, SREG(2)) < 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (Parrot_str_compare(interp, CONST(1).u.string, SREG(2)) < 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -16079,7 +16079,7 @@
 opcode_t *
 Parrot_lt_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (Parrot_str_compare(interp, SREG(1), CONST(2)->u.string) < 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (Parrot_str_compare(interp, SREG(1), CONST(2).u.string) < 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -16131,7 +16131,7 @@
 opcode_t *
 Parrot_lt_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (VTABLE_get_number(interp, PREG(1)) < CONST(2)->u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (VTABLE_get_number(interp, PREG(1)) < CONST(2).u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -16147,7 +16147,7 @@
 opcode_t *
 Parrot_lt_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), CONST(2)->u.string) < 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), CONST(2).u.string) < 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -16203,7 +16203,7 @@
 opcode_t *
 Parrot_le_nc_n_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (CONST(1)->u.number <= NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (CONST(1).u.number <= NREG(2)) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -16211,7 +16211,7 @@
 opcode_t *
 Parrot_le_n_nc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (NREG(1) <= CONST(2)->u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (NREG(1) <= CONST(2).u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -16227,7 +16227,7 @@
 opcode_t *
 Parrot_le_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (Parrot_str_compare(interp, CONST(1)->u.string, SREG(2)) <= 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (Parrot_str_compare(interp, CONST(1).u.string, SREG(2)) <= 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -16235,7 +16235,7 @@
 opcode_t *
 Parrot_le_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (Parrot_str_compare(interp, SREG(1), CONST(2)->u.string) <= 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (Parrot_str_compare(interp, SREG(1), CONST(2).u.string) <= 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -16287,7 +16287,7 @@
 opcode_t *
 Parrot_le_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (VTABLE_get_number(interp, PREG(1)) <= CONST(2)->u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (VTABLE_get_number(interp, PREG(1)) <= CONST(2).u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -16303,7 +16303,7 @@
 opcode_t *
 Parrot_le_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), CONST(2)->u.string) <= 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), CONST(2).u.string) <= 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -16371,7 +16371,7 @@
 opcode_t *
 Parrot_gt_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (VTABLE_get_number(interp, PREG(1)) > CONST(2)->u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (VTABLE_get_number(interp, PREG(1)) > CONST(2).u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -16387,7 +16387,7 @@
 opcode_t *
 Parrot_gt_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), CONST(2)->u.string) > 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), CONST(2).u.string) > 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -16455,7 +16455,7 @@
 opcode_t *
 Parrot_ge_p_nc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (VTABLE_get_number(interp, PREG(1)) >= CONST(2)->u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (VTABLE_get_number(interp, PREG(1)) >= CONST(2).u.number) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -16471,7 +16471,7 @@
 opcode_t *
 Parrot_ge_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), CONST(2)->u.string) >= 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
+    if (Parrot_str_compare(interp, VTABLE_get_string(interp, PREG(1)), CONST(2).u.string) >= 0) {return (opcode_t *)cur_opcode + cur_opcode[3];
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -16563,8 +16563,8 @@
 opcode_t *
 Parrot_cmp_i_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = CONST(2)->u.number < NREG(3) ? -1 :
-         CONST(2)->u.number > NREG(3) ? +1 :
+    IREG(1) = CONST(2).u.number < NREG(3) ? -1 :
+         CONST(2).u.number > NREG(3) ? +1 :
          0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -16572,8 +16572,8 @@
 opcode_t *
 Parrot_cmp_i_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = NREG(2) < CONST(3)->u.number ? -1 :
-         NREG(2) > CONST(3)->u.number ? +1 :
+    IREG(1) = NREG(2) < CONST(3).u.number ? -1 :
+         NREG(2) > CONST(3).u.number ? +1 :
          0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -16588,14 +16588,14 @@
 opcode_t *
 Parrot_cmp_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_compare(interp, CONST(2)->u.string, SREG(3));
+    IREG(1) = Parrot_str_compare(interp, CONST(2).u.string, SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_cmp_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_compare(interp, SREG(2), CONST(3)->u.string);
+    IREG(1) = Parrot_str_compare(interp, SREG(2), CONST(3).u.string);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -16640,8 +16640,8 @@
 Parrot_cmp_i_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     const FLOATVAL l = VTABLE_get_number(interp, PREG(2));
-    IREG(1) = l < CONST(3)->u.number ? -1 :
-         l > CONST(3)->u.number ? +1 :
+    IREG(1) = l < CONST(3).u.number ? -1 :
+         l > CONST(3).u.number ? +1 :
          0;
 
 return (opcode_t *)cur_opcode + 4;}
@@ -16658,7 +16658,7 @@
 Parrot_cmp_i_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     STRING* const l = VTABLE_get_string(interp, PREG(2));
-    IREG(1) = Parrot_str_compare(interp, l, CONST(3)->u.string);
+    IREG(1) = Parrot_str_compare(interp, l, CONST(3).u.string);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -16703,21 +16703,21 @@
 opcode_t *
 Parrot_issame_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = CONST(2)->u.string == SREG(3);
+    IREG(1) = CONST(2).u.string == SREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_issame_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = SREG(2) == CONST(3)->u.string;
+    IREG(1) = SREG(2) == CONST(3).u.string;
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_issame_i_sc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = CONST(2)->u.string == CONST(3)->u.string;
+    IREG(1) = CONST(2).u.string == CONST(3).u.string;
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -16741,21 +16741,21 @@
 opcode_t *
 Parrot_isntsame_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = CONST(2)->u.string != SREG(3);
+    IREG(1) = CONST(2).u.string != SREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_isntsame_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = SREG(2) != CONST(3)->u.string;
+    IREG(1) = SREG(2) != CONST(3).u.string;
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_isntsame_i_sc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = CONST(2)->u.string != CONST(3)->u.string;
+    IREG(1) = CONST(2).u.string != CONST(3).u.string;
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -16783,7 +16783,7 @@
 opcode_t *
 Parrot_isnull_i_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = PMC_IS_NULL(CONST(2)->u.key);
+    IREG(1) = PMC_IS_NULL(CONST(2).u.key);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -16797,7 +16797,7 @@
 opcode_t *
 Parrot_isnull_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = STRING_IS_NULL(CONST(2)->u.string);
+    IREG(1) = STRING_IS_NULL(CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -16846,14 +16846,14 @@
 opcode_t *
 Parrot_isle_i_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = CONST(2)->u.number <= NREG(3);
+    IREG(1) = CONST(2).u.number <= NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_isle_i_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = NREG(2) <= CONST(3)->u.number;
+    IREG(1) = NREG(2) <= CONST(3).u.number;
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -16867,14 +16867,14 @@
 opcode_t *
 Parrot_isle_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_compare(interp, CONST(2)->u.string, SREG(3)) <= 0;
+    IREG(1) = Parrot_str_compare(interp, CONST(2).u.string, SREG(3)) <= 0;
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_isle_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_compare(interp, SREG(2), CONST(3)->u.string) <= 0;
+    IREG(1) = Parrot_str_compare(interp, SREG(2), CONST(3).u.string) <= 0;
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -16916,14 +16916,14 @@
 opcode_t *
 Parrot_islt_i_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = CONST(2)->u.number < NREG(3);
+    IREG(1) = CONST(2).u.number < NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_islt_i_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = NREG(2) < CONST(3)->u.number;
+    IREG(1) = NREG(2) < CONST(3).u.number;
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -16937,14 +16937,14 @@
 opcode_t *
 Parrot_islt_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_compare(interp, CONST(2)->u.string, SREG(3)) < 0;
+    IREG(1) = Parrot_str_compare(interp, CONST(2).u.string, SREG(3)) < 0;
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_islt_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_compare(interp, SREG(2), CONST(3)->u.string) < 0;
+    IREG(1) = Parrot_str_compare(interp, SREG(2), CONST(3).u.string) < 0;
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -16986,14 +16986,14 @@
 opcode_t *
 Parrot_iseq_i_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = CONST(2)->u.number == NREG(3);
+    IREG(1) = CONST(2).u.number == NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_iseq_i_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = NREG(2) == CONST(3)->u.number;
+    IREG(1) = NREG(2) == CONST(3).u.number;
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -17007,14 +17007,14 @@
 opcode_t *
 Parrot_iseq_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = (Parrot_str_equal(interp, CONST(2)->u.string, SREG(3)) ? 1 : 0);
+    IREG(1) = (Parrot_str_equal(interp, CONST(2).u.string, SREG(3)) ? 1 : 0);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_iseq_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = (Parrot_str_equal(interp, SREG(2), CONST(3)->u.string) ? 1 : 0);
+    IREG(1) = (Parrot_str_equal(interp, SREG(2), CONST(3).u.string) ? 1 : 0);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -17059,14 +17059,14 @@
 opcode_t *
 Parrot_isne_i_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = CONST(2)->u.number != NREG(3);
+    IREG(1) = CONST(2).u.number != NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_isne_i_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = NREG(2) != CONST(3)->u.number;
+    IREG(1) = NREG(2) != CONST(3).u.number;
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -17080,14 +17080,14 @@
 opcode_t *
 Parrot_isne_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = (Parrot_str_not_equal(interp, CONST(2)->u.string, SREG(3)) ? 1 : 0);
+    IREG(1) = (Parrot_str_not_equal(interp, CONST(2).u.string, SREG(3)) ? 1 : 0);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_isne_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = (Parrot_str_not_equal(interp, SREG(2), CONST(3)->u.string) ? 1 : 0);
+    IREG(1) = (Parrot_str_not_equal(interp, SREG(2), CONST(3).u.string) ? 1 : 0);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -17248,14 +17248,14 @@
 Parrot_print_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #ifdef PARROT_HAS_NEGATIVE_ZERO
-    Parrot_io_printf(interp, FLOATVAL_FMT, CONST(1)->u.number);
+    Parrot_io_printf(interp, FLOATVAL_FMT, CONST(1).u.number);
 #else
     /* Workaround for older msvcrt and openbsd. TT #313 */
-    if (Parrot_is_nzero(CONST(1)->u.number)) {
+    if (Parrot_is_nzero(CONST(1).u.number)) {
         Parrot_io_printf(interp, "-0");
     }
     else {
-        Parrot_io_printf(interp, FLOATVAL_FMT, CONST(1)->u.number);
+        Parrot_io_printf(interp, FLOATVAL_FMT, CONST(1).u.number);
     }
 #endif
 
@@ -17273,7 +17273,7 @@
 opcode_t *
 Parrot_print_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    STRING * const s = CONST(1)->u.string;
+    STRING * const s = CONST(1).u.string;
     if (s && Parrot_str_byte_length(interp, s))
         Parrot_io_putps(interp, _PIO_STDOUT(interp), s);
 
@@ -17324,14 +17324,14 @@
 Parrot_say_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #ifdef PARROT_HAS_NEGATIVE_ZERO
-    Parrot_io_printf(interp, FLOATVAL_FMT "\n", CONST(1)->u.number);
+    Parrot_io_printf(interp, FLOATVAL_FMT "\n", CONST(1).u.number);
 #else
     /* Workaround for older msvcrt and openbsd. TT #313 */
-    if (Parrot_is_nzero(CONST(1)->u.number)) {
+    if (Parrot_is_nzero(CONST(1).u.number)) {
         Parrot_io_printf(interp, "-0\n");
     }
     else {
-        Parrot_io_printf(interp, FLOATVAL_FMT "\n", CONST(1)->u.number);
+        Parrot_io_printf(interp, FLOATVAL_FMT "\n", CONST(1).u.number);
     }
 #endif
 
@@ -17350,7 +17350,7 @@
 opcode_t *
 Parrot_say_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    STRING * const s = CONST(1)->u.string;
+    STRING * const s = CONST(1).u.string;
     if (s && Parrot_str_byte_length(interp, s))
         Parrot_io_putps(interp, _PIO_STDOUT(interp), s);
     Parrot_io_putps(interp, _PIO_STDOUT(interp), Parrot_str_new_constant(interp, "\n"));
@@ -17410,7 +17410,7 @@
 Parrot_print_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     if (PREG(1)) {
-        STRING * const s = Parrot_sprintf_c(interp, FLOATVAL_FMT, CONST(2)->u.number);
+        STRING * const s = Parrot_sprintf_c(interp, FLOATVAL_FMT, CONST(2).u.number);
         Parrot_io_putps(interp, PREG(1), s);
     }
 
@@ -17428,8 +17428,8 @@
 opcode_t *
 Parrot_print_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (CONST(2)->u.string && PREG(1)) {
-        Parrot_io_putps(interp, PREG(1), CONST(2)->u.string);
+    if (CONST(2).u.string && PREG(1)) {
+        Parrot_io_putps(interp, PREG(1), CONST(2).u.string);
     }
 
 return (opcode_t *)cur_opcode + 3;}
@@ -17531,7 +17531,7 @@
 opcode_t *
 Parrot_add_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    NREG(1) += CONST(2)->u.number;
+    NREG(1) += CONST(2).u.number;
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -17566,7 +17566,7 @@
 opcode_t *
 Parrot_add_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_i_add_float(interp, PREG(1), CONST(2)->u.number);
+    VTABLE_i_add_float(interp, PREG(1), CONST(2).u.number);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -17601,14 +17601,14 @@
 opcode_t *
 Parrot_add_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    NREG(1) = CONST(2)->u.number + NREG(3);
+    NREG(1) = CONST(2).u.number + NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_add_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    NREG(1) = NREG(2) + CONST(3)->u.number;
+    NREG(1) = NREG(2) + CONST(3).u.number;
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -17643,7 +17643,7 @@
 opcode_t *
 Parrot_add_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_add_float(interp, PREG(2), CONST(3)->u.number, PREG(1));
+    PREG(1) = VTABLE_add_float(interp, PREG(2), CONST(3).u.number, PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -17710,7 +17710,7 @@
 opcode_t *
 Parrot_div_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    FLOATVAL den = CONST(2)->u.number;
+    FLOATVAL den = CONST(2).u.number;
     if (FLOAT_IS_ZERO(den)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
             EXCEPTION_DIV_BY_ZERO,
@@ -17751,7 +17751,7 @@
 opcode_t *
 Parrot_div_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_i_divide_float(interp, PREG(1), CONST(2)->u.number);
+    VTABLE_i_divide_float(interp, PREG(1), CONST(2).u.number);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -17829,14 +17829,14 @@
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
-    NREG(1) = CONST(2)->u.number / den;
+    NREG(1) = CONST(2).u.number / den;
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_div_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    FLOATVAL den = CONST(3)->u.number;
+    FLOATVAL den = CONST(3).u.number;
     if (FLOAT_IS_ZERO(den)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_DIV_BY_ZERO,
@@ -17849,13 +17849,13 @@
 opcode_t *
 Parrot_div_n_nc_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    FLOATVAL den = CONST(3)->u.number;
+    FLOATVAL den = CONST(3).u.number;
     if (FLOAT_IS_ZERO(den)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
-    NREG(1) = CONST(2)->u.number / den;
+    NREG(1) = CONST(2).u.number / den;
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -17890,7 +17890,7 @@
 opcode_t *
 Parrot_div_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_divide_float(interp, PREG(2), CONST(3)->u.number, PREG(1));
+    PREG(1) = VTABLE_divide_float(interp, PREG(2), CONST(3).u.number, PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -17944,7 +17944,7 @@
 opcode_t *
 Parrot_fdiv_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    FLOATVAL den = CONST(2)->u.number;
+    FLOATVAL den = CONST(2).u.number;
     if (FLOAT_IS_ZERO(den)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
             EXCEPTION_DIV_BY_ZERO,
@@ -17985,7 +17985,7 @@
 opcode_t *
 Parrot_fdiv_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_i_floor_divide_float(interp, PREG(1), CONST(2)->u.number);
+    VTABLE_i_floor_divide_float(interp, PREG(1), CONST(2).u.number);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -18062,14 +18062,14 @@
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
-    NREG(1) = floor(CONST(2)->u.number / den);
+    NREG(1) = floor(CONST(2).u.number / den);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_fdiv_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    FLOATVAL den = CONST(3)->u.number;
+    FLOATVAL den = CONST(3).u.number;
     if (FLOAT_IS_ZERO(den)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_DIV_BY_ZERO,
@@ -18110,7 +18110,7 @@
 opcode_t *
 Parrot_fdiv_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_floor_divide_float(interp, PREG(2), CONST(3)->u.number, PREG(1));
+    PREG(1) = VTABLE_floor_divide_float(interp, PREG(2), CONST(3).u.number, PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -18203,7 +18203,7 @@
 opcode_t *
 Parrot_mod_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    NREG(1) = floatval_mod(NREG(1), CONST(2)->u.number);
+    NREG(1) = floatval_mod(NREG(1), CONST(2).u.number);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -18238,7 +18238,7 @@
 opcode_t *
 Parrot_mod_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_i_modulus_float(interp, PREG(1), CONST(2)->u.number);
+    VTABLE_i_modulus_float(interp, PREG(1), CONST(2).u.number);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -18273,14 +18273,14 @@
 opcode_t *
 Parrot_mod_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    NREG(1) = floatval_mod(CONST(2)->u.number, NREG(3));
+    NREG(1) = floatval_mod(CONST(2).u.number, NREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_mod_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    NREG(1) = floatval_mod(NREG(2), CONST(3)->u.number);
+    NREG(1) = floatval_mod(NREG(2), CONST(3).u.number);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -18315,7 +18315,7 @@
 opcode_t *
 Parrot_mod_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_modulus_float(interp, PREG(2), CONST(3)->u.number, PREG(1));
+    PREG(1) = VTABLE_modulus_float(interp, PREG(2), CONST(3).u.number, PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -18343,7 +18343,7 @@
 opcode_t *
 Parrot_mul_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    NREG(1) *= CONST(2)->u.number;
+    NREG(1) *= CONST(2).u.number;
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -18378,7 +18378,7 @@
 opcode_t *
 Parrot_mul_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_i_multiply_float(interp, PREG(1), CONST(2)->u.number);
+    VTABLE_i_multiply_float(interp, PREG(1), CONST(2).u.number);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -18413,14 +18413,14 @@
 opcode_t *
 Parrot_mul_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    NREG(1) = CONST(2)->u.number * NREG(3);
+    NREG(1) = CONST(2).u.number * NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_mul_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    NREG(1) = NREG(2) * CONST(3)->u.number;
+    NREG(1) = NREG(2) * CONST(3).u.number;
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -18455,7 +18455,7 @@
 opcode_t *
 Parrot_mul_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_multiply_float(interp, PREG(2), CONST(3)->u.number, PREG(1));
+    PREG(1) = VTABLE_multiply_float(interp, PREG(2), CONST(3).u.number, PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -18525,7 +18525,7 @@
 opcode_t *
 Parrot_sub_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    NREG(1) -= CONST(2)->u.number;
+    NREG(1) -= CONST(2).u.number;
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -18560,7 +18560,7 @@
 opcode_t *
 Parrot_sub_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_i_subtract_float(interp, PREG(1), CONST(2)->u.number);
+    VTABLE_i_subtract_float(interp, PREG(1), CONST(2).u.number);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -18595,14 +18595,14 @@
 opcode_t *
 Parrot_sub_n_nc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    NREG(1) = CONST(2)->u.number - NREG(3);
+    NREG(1) = CONST(2).u.number - NREG(3);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_sub_n_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    NREG(1) = NREG(2) - CONST(3)->u.number;
+    NREG(1) = NREG(2) - CONST(3).u.number;
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -18637,7 +18637,7 @@
 opcode_t *
 Parrot_sub_p_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_subtract_float(interp, PREG(2), CONST(3)->u.number, PREG(1));
+    PREG(1) = VTABLE_subtract_float(interp, PREG(2), CONST(3).u.number, PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -18689,7 +18689,7 @@
 Parrot_callmethodcc_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const object     = PREG(1);
-    STRING   * const meth       = CONST(2)->u.string;
+    STRING   * const meth       = CONST(2).u.string;
     opcode_t * const next       = cur_opcode + 3;
 
     PMC      * const method_pmc = VTABLE_find_method(interp, object, meth);
@@ -18769,7 +18769,7 @@
 Parrot_callmethod_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const object     = PREG(1);
-    STRING   * const meth       = CONST(2)->u.string;
+    STRING   * const meth       = CONST(2).u.string;
     opcode_t * const next       = cur_opcode + 4;
 
     PMC      * const method_pmc = VTABLE_find_method(interp, object, meth);
@@ -18842,7 +18842,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     opcode_t * const next       = cur_opcode + 3;
     PMC      * const object     = PREG(1);
-    STRING   * const meth       = CONST(2)->u.string;
+    STRING   * const meth       = CONST(2).u.string;
     PMC      * const method_pmc = VTABLE_find_method(interp, object, meth);
 
     opcode_t *dest;
@@ -18892,7 +18892,7 @@
 opcode_t *
 Parrot_addmethod_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_add_method(interp, PREG(1), CONST(2)->u.string, PREG(3));
+    VTABLE_add_method(interp, PREG(1), CONST(2).u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -18906,7 +18906,7 @@
 opcode_t *
 Parrot_can_i_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = VTABLE_can(interp, PREG(2), CONST(3)->u.string);
+    IREG(1) = VTABLE_can(interp, PREG(2), CONST(3).u.string);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -18920,7 +18920,7 @@
 opcode_t *
 Parrot_does_i_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = CONST(3)->u.string ? VTABLE_does(interp, PREG(2), CONST(3)->u.string) : 0;
+    IREG(1) = CONST(3).u.string ? VTABLE_does(interp, PREG(2), CONST(3).u.string) : 0;
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -18934,7 +18934,7 @@
 opcode_t *
 Parrot_does_i_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = CONST(3)->u.key ? VTABLE_does_pmc(interp, PREG(2), CONST(3)->u.key) : 0;
+    IREG(1) = CONST(3).u.key ? VTABLE_does_pmc(interp, PREG(2), CONST(3).u.key) : 0;
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -18948,7 +18948,7 @@
 opcode_t *
 Parrot_isa_i_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = CONST(3)->u.string ? VTABLE_isa(interp, PREG(2), CONST(3)->u.string) : 0;
+    IREG(1) = CONST(3).u.string ? VTABLE_isa(interp, PREG(2), CONST(3).u.string) : 0;
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -18962,7 +18962,7 @@
 opcode_t *
 Parrot_isa_i_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = CONST(3)->u.key ? VTABLE_isa_pmc(interp, PREG(2), CONST(3)->u.key) : 0;
+    IREG(1) = CONST(3).u.key ? VTABLE_isa_pmc(interp, PREG(2), CONST(3).u.key) : 0;
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -18979,7 +18979,7 @@
 Parrot_newclass_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const name = Parrot_pmc_new(interp, enum_class_String);
-    VTABLE_set_string_native(interp, name, CONST(2)->u.string);
+    VTABLE_set_string_native(interp, name, CONST(2).u.string);
     PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, name);
 
 return (opcode_t *)cur_opcode + 3;}
@@ -18994,7 +18994,7 @@
 opcode_t *
 Parrot_newclass_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(2)->u.key);
+    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(2).u.key);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -19016,13 +19016,13 @@
 opcode_t *
 Parrot_subclass_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
+    PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2).u.key);
     opcode_t * const next         = cur_opcode + 3;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
             EXCEPTION_NO_CLASS,
-            "Class '%Ss' doesn't exist", VTABLE_get_string(interp, CONST(2)->u.key));return (opcode_t *)handler;
+            "Class '%Ss' doesn't exist", VTABLE_get_string(interp, CONST(2).u.key));return (opcode_t *)handler;
     }
     PREG(1) = Parrot_pmc_new(interp, enum_class_Class);
     VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
@@ -19046,13 +19046,13 @@
 opcode_t *
 Parrot_subclass_p_pc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
+    PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2).u.key);
     opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t * handler = Parrot_ex_throw_from_op_args(interp, next,
             EXCEPTION_NO_CLASS,
-            "Class '%Ss' doesn't exist", VTABLE_get_string(interp, CONST(2)->u.key));return (opcode_t *)handler;
+            "Class '%Ss' doesn't exist", VTABLE_get_string(interp, CONST(2).u.key));return (opcode_t *)handler;
     }
     PREG(1) = Parrot_oo_newclass_from_str(interp, SREG(3));
     VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
@@ -19069,22 +19069,22 @@
             EXCEPTION_NO_CLASS,
             "Class '%Ss' doesn't exist", VTABLE_get_string(interp, PREG(2)));return (opcode_t *)handler;
     }
-    PREG(1) = Parrot_oo_newclass_from_str(interp, CONST(3)->u.string);
+    PREG(1) = Parrot_oo_newclass_from_str(interp, CONST(3).u.string);
     VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
 }
 
 opcode_t *
 Parrot_subclass_p_pc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
+    PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2).u.key);
     opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t * handler = Parrot_ex_throw_from_op_args(interp, next,
             EXCEPTION_NO_CLASS,
-            "Class '%Ss' doesn't exist", VTABLE_get_string(interp, CONST(2)->u.key));return (opcode_t *)handler;
+            "Class '%Ss' doesn't exist", VTABLE_get_string(interp, CONST(2).u.key));return (opcode_t *)handler;
     }
-    PREG(1) = Parrot_oo_newclass_from_str(interp, CONST(3)->u.string);
+    PREG(1) = Parrot_oo_newclass_from_str(interp, CONST(3).u.string);
     VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
 }
 
@@ -19106,13 +19106,13 @@
 opcode_t *
 Parrot_subclass_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
+    PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2).u.key);
     opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
             EXCEPTION_NO_CLASS,
-            "Class '%Ss' doesn't exist", VTABLE_get_string(interp, CONST(2)->u.key));return (opcode_t *)handler;
+            "Class '%Ss' doesn't exist", VTABLE_get_string(interp, CONST(2).u.key));return (opcode_t *)handler;
     }
     PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, PREG(3));
     VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
@@ -19129,22 +19129,22 @@
             EXCEPTION_NO_CLASS,
             "Class '%Ss' doesn't exist", VTABLE_get_string(interp, PREG(2)));return (opcode_t *)handler;
     }
-    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(3)->u.key);
+    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(3).u.key);
     VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
 }
 
 opcode_t *
 Parrot_subclass_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
+    PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2).u.key);
     opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
             EXCEPTION_NO_CLASS,
-            "Class '%Ss' doesn't exist", VTABLE_get_string(interp, CONST(2)->u.key));return (opcode_t *)handler;
+            "Class '%Ss' doesn't exist", VTABLE_get_string(interp, CONST(2).u.key));return (opcode_t *)handler;
     }
-    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(3)->u.key);
+    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(3).u.key);
     VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
 }
 
@@ -19167,13 +19167,13 @@
 opcode_t *
 Parrot_subclass_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PMC      * const parent_class = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
+    PMC      * const parent_class = Parrot_oo_get_class_str(interp, CONST(2).u.string);
     opcode_t * const next         = cur_opcode + 3;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
             EXCEPTION_NO_CLASS,
-            "Class '%Ss' doesn't exist", CONST(2)->u.string);return (opcode_t *)handler;
+            "Class '%Ss' doesn't exist", CONST(2).u.string);return (opcode_t *)handler;
     }
 
     PREG(1) = Parrot_pmc_new(interp, enum_class_Class);
@@ -19199,13 +19199,13 @@
 opcode_t *
 Parrot_subclass_p_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PMC      * const parent_class = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
+    PMC      * const parent_class = Parrot_oo_get_class_str(interp, CONST(2).u.string);
     opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
             EXCEPTION_NO_CLASS,
-            "Class '%Ss' doesn't exist", CONST(2)->u.string);return (opcode_t *)handler;
+            "Class '%Ss' doesn't exist", CONST(2).u.string);return (opcode_t *)handler;
     }
 
     PREG(1)  = Parrot_oo_newclass_from_str(interp, SREG(3));
@@ -19224,23 +19224,23 @@
             "Class '%Ss' doesn't exist", SREG(2));return (opcode_t *)handler;
     }
 
-    PREG(1)  = Parrot_oo_newclass_from_str(interp, CONST(3)->u.string);
+    PREG(1)  = Parrot_oo_newclass_from_str(interp, CONST(3).u.string);
     VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
 }
 
 opcode_t *
 Parrot_subclass_p_sc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PMC      * const parent_class = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
+    PMC      * const parent_class = Parrot_oo_get_class_str(interp, CONST(2).u.string);
     opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
             EXCEPTION_NO_CLASS,
-            "Class '%Ss' doesn't exist", CONST(2)->u.string);return (opcode_t *)handler;
+            "Class '%Ss' doesn't exist", CONST(2).u.string);return (opcode_t *)handler;
     }
 
-    PREG(1)  = Parrot_oo_newclass_from_str(interp, CONST(3)->u.string);
+    PREG(1)  = Parrot_oo_newclass_from_str(interp, CONST(3).u.string);
     VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
 }
 
@@ -19263,13 +19263,13 @@
 opcode_t *
 Parrot_subclass_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PMC      * const parent_class = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
+    PMC      * const parent_class = Parrot_oo_get_class_str(interp, CONST(2).u.string);
     opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
             EXCEPTION_NO_CLASS,
-            "Class '%Ss' doesn't exist", CONST(2)->u.string);return (opcode_t *)handler;
+            "Class '%Ss' doesn't exist", CONST(2).u.string);return (opcode_t *)handler;
     }
 
     PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, PREG(3));
@@ -19288,23 +19288,23 @@
             "Class '%Ss' doesn't exist", SREG(2));return (opcode_t *)handler;
     }
 
-    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(3)->u.key);
+    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(3).u.key);
     VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
 }
 
 opcode_t *
 Parrot_subclass_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PMC      * const parent_class = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
+    PMC      * const parent_class = Parrot_oo_get_class_str(interp, CONST(2).u.string);
     opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
             EXCEPTION_NO_CLASS,
-            "Class '%Ss' doesn't exist", CONST(2)->u.string);return (opcode_t *)handler;
+            "Class '%Ss' doesn't exist", CONST(2).u.string);return (opcode_t *)handler;
     }
 
-    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(3)->u.key);
+    PREG(1) = Parrot_pmc_new_init(interp, enum_class_Class, CONST(3).u.key);
     VTABLE_add_parent(interp, PREG(1), parent_class);return (opcode_t *)next;
 }
 
@@ -19318,7 +19318,7 @@
 opcode_t *
 Parrot_get_class_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
+    PREG(1) = Parrot_oo_get_class_str(interp, CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -19332,7 +19332,7 @@
 opcode_t *
 Parrot_get_class_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = Parrot_oo_get_class(interp, CONST(2)->u.key);
+    PREG(1) = Parrot_oo_get_class(interp, CONST(2).u.key);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -19387,7 +19387,7 @@
     STRING * const role_name   = string_from_literal(interp, "Role");
 
     if (VTABLE_isa(interp, PREG(1), class_name) || VTABLE_isa(interp, PREG(1), role_name))
-        VTABLE_add_attribute(interp, PREG(1), CONST(2)->u.string, PMCNULL);
+        VTABLE_add_attribute(interp, PREG(1), CONST(2).u.string, PMCNULL);
     else {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
             EXCEPTION_INVALID_OPERATION,
@@ -19406,7 +19406,7 @@
 opcode_t *
 Parrot_removeattribute_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_remove_attribute(interp, PREG(1), CONST(2)->u.string);
+    VTABLE_remove_attribute(interp, PREG(1), CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -19420,7 +19420,7 @@
 opcode_t *
 Parrot_getattribute_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_attr_str(interp, PREG(2), CONST(3)->u.string);
+    PREG(1) = VTABLE_get_attr_str(interp, PREG(2), CONST(3).u.string);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -19434,21 +19434,21 @@
 opcode_t *
 Parrot_getattribute_p_p_pc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_attr_keyed(interp, PREG(2), CONST(3)->u.key, SREG(4));
+    PREG(1) = VTABLE_get_attr_keyed(interp, PREG(2), CONST(3).u.key, SREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
 
 opcode_t *
 Parrot_getattribute_p_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_attr_keyed(interp, PREG(2), PREG(3), CONST(4)->u.string);
+    PREG(1) = VTABLE_get_attr_keyed(interp, PREG(2), PREG(3), CONST(4).u.string);
 
 return (opcode_t *)cur_opcode + 5;}
 
 opcode_t *
 Parrot_getattribute_p_p_pc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_attr_keyed(interp, PREG(2), CONST(3)->u.key, CONST(4)->u.string);
+    PREG(1) = VTABLE_get_attr_keyed(interp, PREG(2), CONST(3).u.key, CONST(4).u.string);
 
 return (opcode_t *)cur_opcode + 5;}
 
@@ -19462,7 +19462,7 @@
 opcode_t *
 Parrot_setattribute_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_set_attr_str(interp, PREG(1), CONST(2)->u.string, PREG(3));
+    VTABLE_set_attr_str(interp, PREG(1), CONST(2).u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -19476,21 +19476,21 @@
 opcode_t *
 Parrot_setattribute_p_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_set_attr_keyed(interp, PREG(1), CONST(2)->u.key, SREG(3), PREG(4));
+    VTABLE_set_attr_keyed(interp, PREG(1), CONST(2).u.key, SREG(3), PREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
 
 opcode_t *
 Parrot_setattribute_p_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_set_attr_keyed(interp, PREG(1), PREG(2), CONST(3)->u.string, PREG(4));
+    VTABLE_set_attr_keyed(interp, PREG(1), PREG(2), CONST(3).u.string, PREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
 
 opcode_t *
 Parrot_setattribute_p_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_set_attr_keyed(interp, PREG(1), CONST(2)->u.key, CONST(3)->u.string, PREG(4));
+    VTABLE_set_attr_keyed(interp, PREG(1), CONST(2).u.key, CONST(3).u.string, PREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
 
@@ -19504,7 +19504,7 @@
 opcode_t *
 Parrot_inspect_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_inspect(interp, CONST(2)->u.key);
+    PREG(1) = VTABLE_inspect(interp, CONST(2).u.key);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -19518,21 +19518,21 @@
 opcode_t *
 Parrot_inspect_p_pc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_inspect_str(interp, CONST(2)->u.key, SREG(3));
+    PREG(1) = VTABLE_inspect_str(interp, CONST(2).u.key, SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_inspect_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_inspect_str(interp, PREG(2), CONST(3)->u.string);
+    PREG(1) = VTABLE_inspect_str(interp, PREG(2), CONST(3).u.string);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_inspect_p_pc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_inspect_str(interp, CONST(2)->u.key, CONST(3)->u.string);
+    PREG(1) = VTABLE_inspect_str(interp, CONST(2).u.key, CONST(3).u.string);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -19561,7 +19561,7 @@
 opcode_t *
 Parrot_new_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    STRING * const name   = CONST(2)->u.string;
+    STRING * const name   = CONST(2).u.string;
     PMC    * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
                           ? Parrot_oo_get_class_str(interp, name)
                           : PMCNULL;
@@ -19605,7 +19605,7 @@
 opcode_t *
 Parrot_new_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    STRING * const name   = CONST(2)->u.string;
+    STRING * const name   = CONST(2).u.string;
     PMC    * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
                           ? Parrot_oo_get_class_str(interp, name)
                           : PMCNULL;
@@ -19633,7 +19633,7 @@
                           : PMCNULL;
 
     if (!PMC_IS_NULL(_class))
-        PREG(1) = VTABLE_instantiate(interp, _class, CONST(3)->u.key);
+        PREG(1) = VTABLE_instantiate(interp, _class, CONST(3).u.key);
     else {
         const INTVAL type = Parrot_pmc_get_type_str(interp, name);
         if (type <= 0) {
@@ -19641,7 +19641,7 @@
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", name);return (opcode_t *)dest;
         }
-        PREG(1) = Parrot_pmc_new_init(interp, type, CONST(3)->u.key);
+        PREG(1) = Parrot_pmc_new_init(interp, type, CONST(3).u.key);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -19649,13 +19649,13 @@
 opcode_t *
 Parrot_new_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    STRING * const name   = CONST(2)->u.string;
+    STRING * const name   = CONST(2).u.string;
     PMC    * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
                           ? Parrot_oo_get_class_str(interp, name)
                           : PMCNULL;
 
     if (!PMC_IS_NULL(_class))
-        PREG(1) = VTABLE_instantiate(interp, _class, CONST(3)->u.key);
+        PREG(1) = VTABLE_instantiate(interp, _class, CONST(3).u.key);
     else {
         const INTVAL type = Parrot_pmc_get_type_str(interp, name);
         if (type <= 0) {
@@ -19663,7 +19663,7 @@
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", name);return (opcode_t *)dest;
         }
-        PREG(1) = Parrot_pmc_new_init(interp, type, CONST(3)->u.key);
+        PREG(1) = Parrot_pmc_new_init(interp, type, CONST(3).u.key);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -19691,7 +19691,7 @@
 opcode_t *
 Parrot_new_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PMC * const name_key = CONST(2)->u.key;
+    PMC * const name_key = CONST(2).u.key;
     PMC * const _class   = Parrot_oo_get_class(interp, name_key);
 
     if (!PMC_IS_NULL(_class))
@@ -19731,7 +19731,7 @@
 opcode_t *
 Parrot_new_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PMC * const name_key = CONST(2)->u.key;
+    PMC * const name_key = CONST(2).u.key;
     PMC * const _class   = Parrot_oo_get_class(interp, name_key);
 
     if (!PMC_IS_NULL(_class))
@@ -19755,7 +19755,7 @@
     PMC * const _class   = Parrot_oo_get_class(interp, name_key);
 
     if (!PMC_IS_NULL(_class))
-        PREG(1) = VTABLE_instantiate(interp, _class, CONST(3)->u.key);
+        PREG(1) = VTABLE_instantiate(interp, _class, CONST(3).u.key);
     else {
         const INTVAL type = Parrot_pmc_get_type(interp, name_key);
         if (type <= 0) {
@@ -19763,7 +19763,7 @@
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));return (opcode_t *)dest;
         }
-        PREG(1) = Parrot_pmc_new_init(interp, type, CONST(3)->u.key);
+        PREG(1) = Parrot_pmc_new_init(interp, type, CONST(3).u.key);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -19771,11 +19771,11 @@
 opcode_t *
 Parrot_new_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PMC * const name_key = CONST(2)->u.key;
+    PMC * const name_key = CONST(2).u.key;
     PMC * const _class   = Parrot_oo_get_class(interp, name_key);
 
     if (!PMC_IS_NULL(_class))
-        PREG(1) = VTABLE_instantiate(interp, _class, CONST(3)->u.key);
+        PREG(1) = VTABLE_instantiate(interp, _class, CONST(3).u.key);
     else {
         const INTVAL type = Parrot_pmc_get_type(interp, name_key);
         if (type <= 0) {
@@ -19783,7 +19783,7 @@
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));return (opcode_t *)dest;
         }
-        PREG(1) = Parrot_pmc_new_init(interp, type, CONST(3)->u.key);
+        PREG(1) = Parrot_pmc_new_init(interp, type, CONST(3).u.key);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -19811,7 +19811,7 @@
 opcode_t *
 Parrot_root_new_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PMC * const key      = CONST(2)->u.key;
+    PMC * const key      = CONST(2).u.key;
     PMC * const root_ns  = interp->root_namespace;
     PMC * const ns       = Parrot_ns_get_namespace_keyed(interp, root_ns, key);
     PMC * classobj       = PMCNULL;
@@ -19851,7 +19851,7 @@
 opcode_t *
 Parrot_root_new_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PMC * const key      = CONST(2)->u.key;
+    PMC * const key      = CONST(2).u.key;
     PMC * const root_ns  = interp->root_namespace;
     PMC * const ns       = Parrot_ns_get_namespace_keyed(interp, root_ns, key);
     PMC * classobj       = PMCNULL;
@@ -19879,7 +19879,7 @@
     if (!PMC_IS_NULL(ns))
         classobj = Parrot_oo_get_class(interp, ns);
     if (!PMC_IS_NULL(classobj))
-        PREG(1) = VTABLE_instantiate(interp, classobj, CONST(3)->u.key);
+        PREG(1) = VTABLE_instantiate(interp, classobj, CONST(3).u.key);
     else {
         opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_NO_CLASS,
@@ -19891,7 +19891,7 @@
 opcode_t *
 Parrot_root_new_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PMC * const key      = CONST(2)->u.key;
+    PMC * const key      = CONST(2).u.key;
     PMC * const root_ns  = interp->root_namespace;
     PMC * const ns       = Parrot_ns_get_namespace_keyed(interp, root_ns, key);
     PMC * classobj       = PMCNULL;
@@ -19899,7 +19899,7 @@
     if (!PMC_IS_NULL(ns))
         classobj = Parrot_oo_get_class(interp, ns);
     if (!PMC_IS_NULL(classobj))
-        PREG(1) = VTABLE_instantiate(interp, classobj, CONST(3)->u.key);
+        PREG(1) = VTABLE_instantiate(interp, classobj, CONST(3).u.key);
     else {
         opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_NO_CLASS,
@@ -19946,11 +19946,11 @@
 Parrot_find_method_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     opcode_t * const resume = cur_opcode + 4;
-    PREG(1) = VTABLE_find_method(interp, PREG(2), CONST(3)->u.string);
+    PREG(1) = VTABLE_find_method(interp, PREG(2), CONST(3).u.string);
     if (PMC_IS_NULL(PREG(1)) || !VTABLE_defined(interp, PREG(1))) {
         opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, resume,
             EXCEPTION_METHOD_NOT_FOUND,
-            "Method '%Ss' not found for invocant of class '%Ss'", CONST(3)->u.string,
+            "Method '%Ss' not found for invocant of class '%Ss'", CONST(3).u.string,
             VTABLE_get_string(interp, VTABLE_get_class(interp, PREG(2))));return (opcode_t *)dest;
     }return (opcode_t *)resume;
 }
@@ -19986,7 +19986,7 @@
 opcode_t *
 Parrot_defined_i_p_kc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_defined_keyed(interp, PREG(2), CONST(3)->u.key);
+    IREG(1) = PMC_IS_NULL(PREG(2)) ? 0 : VTABLE_defined_keyed(interp, PREG(2), CONST(3).u.key);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -20014,7 +20014,7 @@
 opcode_t *
 Parrot_exists_i_p_kc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = PMC_IS_NULL(PREG(2)) ? 0: VTABLE_exists_keyed(interp, PREG(2), CONST(3)->u.key);
+    IREG(1) = PMC_IS_NULL(PREG(2)) ? 0: VTABLE_exists_keyed(interp, PREG(2), CONST(3).u.key);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -20028,7 +20028,7 @@
 opcode_t *
 Parrot_delete_p_kc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_delete_keyed(interp, PREG(1), CONST(2)->u.key);
+    VTABLE_delete_keyed(interp, PREG(1), CONST(2).u.key);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20077,7 +20077,7 @@
 opcode_t *
 Parrot_push_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_push_float(interp, PREG(1), CONST(2)->u.number);
+    VTABLE_push_float(interp, PREG(1), CONST(2).u.number);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20091,7 +20091,7 @@
 opcode_t *
 Parrot_push_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_push_string(interp, PREG(1), CONST(2)->u.string);
+    VTABLE_push_string(interp, PREG(1), CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20154,7 +20154,7 @@
 opcode_t *
 Parrot_unshift_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_unshift_float(interp, PREG(1), CONST(2)->u.number);
+    VTABLE_unshift_float(interp, PREG(1), CONST(2).u.number);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20168,7 +20168,7 @@
 opcode_t *
 Parrot_unshift_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_unshift_string(interp, PREG(1), CONST(2)->u.string);
+    VTABLE_unshift_string(interp, PREG(1), CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20245,7 +20245,7 @@
 opcode_t *
 Parrot_setprop_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_setprop(interp, PREG(1), CONST(2)->u.string, PREG(3));
+    VTABLE_setprop(interp, PREG(1), CONST(2).u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -20259,7 +20259,7 @@
 opcode_t *
 Parrot_getprop_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_getprop(interp, PREG(3), CONST(2)->u.string);
+    PREG(1) = VTABLE_getprop(interp, PREG(3), CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -20273,7 +20273,7 @@
 opcode_t *
 Parrot_delprop_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_delprop(interp, PREG(1), CONST(2)->u.string);
+    VTABLE_delprop(interp, PREG(1), CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20301,7 +20301,7 @@
 opcode_t *
 Parrot_thaw_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = Parrot_thaw(interp, CONST(2)->u.string);
+    PREG(1) = Parrot_thaw(interp, CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20315,21 +20315,21 @@
 opcode_t *
 Parrot_add_multi_sc_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    Parrot_mmd_add_multi_from_long_sig(interp, CONST(1)->u.string, SREG(2), PREG(3));
+    Parrot_mmd_add_multi_from_long_sig(interp, CONST(1).u.string, SREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_add_multi_s_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    Parrot_mmd_add_multi_from_long_sig(interp, SREG(1), CONST(2)->u.string, PREG(3));
+    Parrot_mmd_add_multi_from_long_sig(interp, SREG(1), CONST(2).u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_add_multi_sc_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    Parrot_mmd_add_multi_from_long_sig(interp, CONST(1)->u.string, CONST(2)->u.string, PREG(3));
+    Parrot_mmd_add_multi_from_long_sig(interp, CONST(1).u.string, CONST(2).u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -20343,21 +20343,21 @@
 opcode_t *
 Parrot_find_multi_p_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = Parrot_mmd_find_multi_from_long_sig(interp, CONST(2)->u.string, SREG(3));
+    PREG(1) = Parrot_mmd_find_multi_from_long_sig(interp, CONST(2).u.string, SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_find_multi_p_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = Parrot_mmd_find_multi_from_long_sig(interp, SREG(2), CONST(3)->u.string);
+    PREG(1) = Parrot_mmd_find_multi_from_long_sig(interp, SREG(2), CONST(3).u.string);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_find_multi_p_sc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = Parrot_mmd_find_multi_from_long_sig(interp, CONST(2)->u.string, CONST(3)->u.string);
+    PREG(1) = Parrot_mmd_find_multi_from_long_sig(interp, CONST(2).u.string, CONST(3).u.string);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -20403,7 +20403,7 @@
 Parrot_box_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
-    VTABLE_set_number_native(interp, PREG(1), CONST(2)->u.number);
+    VTABLE_set_number_native(interp, PREG(1), CONST(2).u.number);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20419,7 +20419,7 @@
 Parrot_box_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PREG(1) = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_String));
-    VTABLE_set_string_native(interp, PREG(1), CONST(2)->u.string);
+    VTABLE_set_string_native(interp, PREG(1), CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20440,7 +20440,7 @@
 opcode_t *
 Parrot_morph_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_morph(interp, PREG(1), CONST(2)->u.key);
+    VTABLE_morph(interp, PREG(1), CONST(2).u.key);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20458,9 +20458,9 @@
 Parrot_clone_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     /* cloning a NULL STRING produces an empty STRING; TT #964 */
-    SREG(1) = STRING_IS_NULL(CONST(2)->u.string)
+    SREG(1) = STRING_IS_NULL(CONST(2).u.string)
        ? Parrot_str_new(interp, NULL, 0)
-       : CONST(2)->u.string;
+       : CONST(2).u.string;
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20488,7 +20488,7 @@
 opcode_t *
 Parrot_set_i_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = (INTVAL)(CONST(2)->u.number);
+    IREG(1) = (INTVAL)(CONST(2).u.number);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20502,7 +20502,7 @@
 opcode_t *
 Parrot_set_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_to_int(interp, CONST(2)->u.string);
+    IREG(1) = Parrot_str_to_int(interp, CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20516,7 +20516,7 @@
 opcode_t *
 Parrot_set_n_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    NREG(1) = CONST(2)->u.number;
+    NREG(1) = CONST(2).u.number;
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20544,7 +20544,7 @@
 opcode_t *
 Parrot_set_n_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    NREG(1) = Parrot_str_to_num(interp, CONST(2)->u.string);
+    NREG(1) = Parrot_str_to_num(interp, CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20572,7 +20572,7 @@
 opcode_t *
 Parrot_set_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = CONST(2)->u.string;
+    SREG(1) = CONST(2).u.string;
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20600,14 +20600,14 @@
 opcode_t *
 Parrot_set_s_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_from_num(interp, CONST(2)->u.number);
+    SREG(1) = Parrot_str_from_num(interp, CONST(2).u.number);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_set_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = CONST(2)->u.key;
+    PREG(1) = CONST(2).u.key;
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20642,7 +20642,7 @@
 opcode_t *
 Parrot_set_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_set_number_native(interp, PREG(1), CONST(2)->u.number);
+    VTABLE_set_number_native(interp, PREG(1), CONST(2).u.number);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20656,7 +20656,7 @@
 opcode_t *
 Parrot_set_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_set_string_native(interp, PREG(1), CONST(2)->u.string);
+    VTABLE_set_string_native(interp, PREG(1), CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20698,7 +20698,7 @@
 opcode_t *
 Parrot_assign_p_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_set_number_native(interp, PREG(1), CONST(2)->u.number);
+    VTABLE_set_number_native(interp, PREG(1), CONST(2).u.number);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20712,7 +20712,7 @@
 opcode_t *
 Parrot_assign_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_assign_string_native(interp, PREG(1), CONST(2)->u.string);
+    VTABLE_assign_string_native(interp, PREG(1), CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20726,7 +20726,7 @@
 opcode_t *
 Parrot_assign_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = CONST(2)->u.string;
+    SREG(1) = CONST(2).u.string;
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -20789,14 +20789,14 @@
 opcode_t *
 Parrot_set_p_ki_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_set_number_keyed_int(interp, PREG(1), IREG(2), CONST(3)->u.number);
+    VTABLE_set_number_keyed_int(interp, PREG(1), IREG(2), CONST(3).u.number);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_set_p_kic_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_set_number_keyed_int(interp, PREG(1), cur_opcode[2], CONST(3)->u.number);
+    VTABLE_set_number_keyed_int(interp, PREG(1), cur_opcode[2], CONST(3).u.number);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -20817,14 +20817,14 @@
 opcode_t *
 Parrot_set_p_ki_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_set_string_keyed_int(interp, PREG(1), IREG(2), CONST(3)->u.string);
+    VTABLE_set_string_keyed_int(interp, PREG(1), IREG(2), CONST(3).u.string);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_set_p_kic_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_set_string_keyed_int(interp, PREG(1), cur_opcode[2], CONST(3)->u.string);
+    VTABLE_set_string_keyed_int(interp, PREG(1), cur_opcode[2], CONST(3).u.string);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -20908,7 +20908,7 @@
 opcode_t *
 Parrot_set_p_kc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_set_integer_keyed(interp, PREG(1), CONST(2)->u.key, IREG(3));
+    VTABLE_set_integer_keyed(interp, PREG(1), CONST(2).u.key, IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -20922,7 +20922,7 @@
 opcode_t *
 Parrot_set_p_kc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_set_integer_keyed(interp, PREG(1), CONST(2)->u.key, cur_opcode[3]);
+    VTABLE_set_integer_keyed(interp, PREG(1), CONST(2).u.key, cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -20936,21 +20936,21 @@
 opcode_t *
 Parrot_set_p_kc_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_set_number_keyed(interp, PREG(1), CONST(2)->u.key, NREG(3));
+    VTABLE_set_number_keyed(interp, PREG(1), CONST(2).u.key, NREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_set_p_k_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_set_number_keyed(interp, PREG(1), PREG(2), CONST(3)->u.number);
+    VTABLE_set_number_keyed(interp, PREG(1), PREG(2), CONST(3).u.number);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_set_p_kc_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_set_number_keyed(interp, PREG(1), CONST(2)->u.key, CONST(3)->u.number);
+    VTABLE_set_number_keyed(interp, PREG(1), CONST(2).u.key, CONST(3).u.number);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -20964,21 +20964,21 @@
 opcode_t *
 Parrot_set_p_kc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_set_string_keyed(interp, PREG(1), CONST(2)->u.key, SREG(3));
+    VTABLE_set_string_keyed(interp, PREG(1), CONST(2).u.key, SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_set_p_k_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_set_string_keyed(interp, PREG(1), PREG(2), CONST(3)->u.string);
+    VTABLE_set_string_keyed(interp, PREG(1), PREG(2), CONST(3).u.string);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_set_p_kc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_set_string_keyed(interp, PREG(1), CONST(2)->u.key, CONST(3)->u.string);
+    VTABLE_set_string_keyed(interp, PREG(1), CONST(2).u.key, CONST(3).u.string);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -20992,7 +20992,7 @@
 opcode_t *
 Parrot_set_p_kc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_set_pmc_keyed(interp, PREG(1), CONST(2)->u.key, PREG(3));
+    VTABLE_set_pmc_keyed(interp, PREG(1), CONST(2).u.key, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21006,7 +21006,7 @@
 opcode_t *
 Parrot_set_i_p_kc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = VTABLE_get_integer_keyed(interp, PREG(2), CONST(3)->u.key);
+    IREG(1) = VTABLE_get_integer_keyed(interp, PREG(2), CONST(3).u.key);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21020,7 +21020,7 @@
 opcode_t *
 Parrot_set_n_p_kc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    NREG(1) = VTABLE_get_number_keyed(interp, PREG(2), CONST(3)->u.key);
+    NREG(1) = VTABLE_get_number_keyed(interp, PREG(2), CONST(3).u.key);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21034,7 +21034,7 @@
 opcode_t *
 Parrot_set_s_p_kc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = VTABLE_get_string_keyed(interp, PREG(2), CONST(3)->u.key);
+    SREG(1) = VTABLE_get_string_keyed(interp, PREG(2), CONST(3).u.key);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21048,7 +21048,7 @@
 opcode_t *
 Parrot_set_p_p_kc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3)->u.key);
+    PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3).u.key);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21069,7 +21069,7 @@
 opcode_t *
 Parrot_clone_p_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_clone_pmc(interp, PREG(2), CONST(3)->u.key);
+    PREG(1) = VTABLE_clone_pmc(interp, PREG(2), CONST(3).u.key);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21149,7 +21149,7 @@
 opcode_t *
 Parrot_ord_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = string_ord(interp, CONST(2)->u.string, 0);
+    IREG(1) = string_ord(interp, CONST(2).u.string, 0);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -21163,7 +21163,7 @@
 opcode_t *
 Parrot_ord_i_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = string_ord(interp, CONST(2)->u.string, IREG(3));
+    IREG(1) = string_ord(interp, CONST(2).u.string, IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21177,7 +21177,7 @@
 opcode_t *
 Parrot_ord_i_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = string_ord(interp, CONST(2)->u.string, cur_opcode[3]);
+    IREG(1) = string_ord(interp, CONST(2).u.string, cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21207,7 +21207,7 @@
 opcode_t *
 Parrot_chopn_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_chopn(interp, CONST(2)->u.string, IREG(3));
+    SREG(1) = Parrot_str_chopn(interp, CONST(2).u.string, IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21221,7 +21221,7 @@
 opcode_t *
 Parrot_chopn_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_chopn(interp, CONST(2)->u.string, cur_opcode[3]);
+    SREG(1) = Parrot_str_chopn(interp, CONST(2).u.string, cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21235,7 +21235,7 @@
 opcode_t *
 Parrot_concat_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_concat(interp, SREG(1), CONST(2)->u.string);
+    SREG(1) = Parrot_str_concat(interp, SREG(1), CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -21256,7 +21256,7 @@
 opcode_t *
 Parrot_concat_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    VTABLE_i_concatenate_str(interp, PREG(1), CONST(2)->u.string);
+    VTABLE_i_concatenate_str(interp, PREG(1), CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -21270,14 +21270,14 @@
 opcode_t *
 Parrot_concat_s_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_concat(interp, CONST(2)->u.string, SREG(3));
+    SREG(1) = Parrot_str_concat(interp, CONST(2).u.string, SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_concat_s_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_concat(interp, SREG(2), CONST(3)->u.string);
+    SREG(1) = Parrot_str_concat(interp, SREG(2), CONST(3).u.string);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21291,7 +21291,7 @@
 opcode_t *
 Parrot_concat_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_concatenate_str(interp, PREG(2), CONST(3)->u.string, PREG(1));
+    PREG(1) = VTABLE_concatenate_str(interp, PREG(2), CONST(3).u.string, PREG(1));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21322,7 +21322,7 @@
                 EXCEPTION_NEG_REPEAT,
                 "Cannot repeat with negative arg");return (opcode_t *)handler;
     }
-    SREG(1) = Parrot_str_repeat(interp, CONST(2)->u.string, (UINTVAL)IREG(3));
+    SREG(1) = Parrot_str_repeat(interp, CONST(2).u.string, (UINTVAL)IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21346,7 +21346,7 @@
                 EXCEPTION_NEG_REPEAT,
                 "Cannot repeat with negative arg");return (opcode_t *)handler;
     }
-    SREG(1) = Parrot_str_repeat(interp, CONST(2)->u.string, (UINTVAL)cur_opcode[3]);
+    SREG(1) = Parrot_str_repeat(interp, CONST(2).u.string, (UINTVAL)cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21417,7 +21417,7 @@
 opcode_t *
 Parrot_length_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_length(interp, CONST(2)->u.string);
+    IREG(1) = Parrot_str_length(interp, CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -21431,7 +21431,7 @@
 opcode_t *
 Parrot_bytelength_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_byte_length(interp, CONST(2)->u.string);
+    IREG(1) = Parrot_str_byte_length(interp, CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -21460,8 +21460,8 @@
 opcode_t *
 Parrot_substr_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    const INTVAL len = Parrot_str_byte_length(interp, CONST(2)->u.string);
-    SREG(1) = Parrot_str_substr(interp, CONST(2)->u.string, IREG(3), len);
+    const INTVAL len = Parrot_str_byte_length(interp, CONST(2).u.string);
+    SREG(1) = Parrot_str_substr(interp, CONST(2).u.string, IREG(3), len);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21476,8 +21476,8 @@
 opcode_t *
 Parrot_substr_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    const INTVAL len = Parrot_str_byte_length(interp, CONST(2)->u.string);
-    SREG(1) = Parrot_str_substr(interp, CONST(2)->u.string, cur_opcode[3], len);
+    const INTVAL len = Parrot_str_byte_length(interp, CONST(2).u.string);
+    SREG(1) = Parrot_str_substr(interp, CONST(2).u.string, cur_opcode[3], len);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21491,7 +21491,7 @@
 opcode_t *
 Parrot_substr_s_sc_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_substr(interp, CONST(2)->u.string, IREG(3), IREG(4));
+    SREG(1) = Parrot_str_substr(interp, CONST(2).u.string, IREG(3), IREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
 
@@ -21505,7 +21505,7 @@
 opcode_t *
 Parrot_substr_s_sc_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_substr(interp, CONST(2)->u.string, cur_opcode[3], IREG(4));
+    SREG(1) = Parrot_str_substr(interp, CONST(2).u.string, cur_opcode[3], IREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
 
@@ -21519,7 +21519,7 @@
 opcode_t *
 Parrot_substr_s_sc_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_substr(interp, CONST(2)->u.string, IREG(3), cur_opcode[4]);
+    SREG(1) = Parrot_str_substr(interp, CONST(2).u.string, IREG(3), cur_opcode[4]);
 
 return (opcode_t *)cur_opcode + 5;}
 
@@ -21533,7 +21533,7 @@
 opcode_t *
 Parrot_substr_s_sc_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_substr(interp, CONST(2)->u.string, cur_opcode[3], cur_opcode[4]);
+    SREG(1) = Parrot_str_substr(interp, CONST(2).u.string, cur_opcode[3], cur_opcode[4]);
 
 return (opcode_t *)cur_opcode + 5;}
 
@@ -21575,7 +21575,7 @@
 opcode_t *
 Parrot_replace_s_sc_i_i_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, IREG(3), IREG(4), SREG(5));
+    SREG(1) = Parrot_str_replace(interp, CONST(2).u.string, IREG(3), IREG(4), SREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
 
@@ -21589,7 +21589,7 @@
 opcode_t *
 Parrot_replace_s_sc_ic_i_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, cur_opcode[3], IREG(4), SREG(5));
+    SREG(1) = Parrot_str_replace(interp, CONST(2).u.string, cur_opcode[3], IREG(4), SREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
 
@@ -21603,7 +21603,7 @@
 opcode_t *
 Parrot_replace_s_sc_i_ic_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, IREG(3), cur_opcode[4], SREG(5));
+    SREG(1) = Parrot_str_replace(interp, CONST(2).u.string, IREG(3), cur_opcode[4], SREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
 
@@ -21617,63 +21617,63 @@
 opcode_t *
 Parrot_replace_s_sc_ic_ic_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, cur_opcode[3], cur_opcode[4], SREG(5));
+    SREG(1) = Parrot_str_replace(interp, CONST(2).u.string, cur_opcode[3], cur_opcode[4], SREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
 
 opcode_t *
 Parrot_replace_s_s_i_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_replace(interp, SREG(2), IREG(3), IREG(4), CONST(5)->u.string);
+    SREG(1) = Parrot_str_replace(interp, SREG(2), IREG(3), IREG(4), CONST(5).u.string);
 
 return (opcode_t *)cur_opcode + 6;}
 
 opcode_t *
 Parrot_replace_s_sc_i_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, IREG(3), IREG(4), CONST(5)->u.string);
+    SREG(1) = Parrot_str_replace(interp, CONST(2).u.string, IREG(3), IREG(4), CONST(5).u.string);
 
 return (opcode_t *)cur_opcode + 6;}
 
 opcode_t *
 Parrot_replace_s_s_ic_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_replace(interp, SREG(2), cur_opcode[3], IREG(4), CONST(5)->u.string);
+    SREG(1) = Parrot_str_replace(interp, SREG(2), cur_opcode[3], IREG(4), CONST(5).u.string);
 
 return (opcode_t *)cur_opcode + 6;}
 
 opcode_t *
 Parrot_replace_s_sc_ic_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, cur_opcode[3], IREG(4), CONST(5)->u.string);
+    SREG(1) = Parrot_str_replace(interp, CONST(2).u.string, cur_opcode[3], IREG(4), CONST(5).u.string);
 
 return (opcode_t *)cur_opcode + 6;}
 
 opcode_t *
 Parrot_replace_s_s_i_ic_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_replace(interp, SREG(2), IREG(3), cur_opcode[4], CONST(5)->u.string);
+    SREG(1) = Parrot_str_replace(interp, SREG(2), IREG(3), cur_opcode[4], CONST(5).u.string);
 
 return (opcode_t *)cur_opcode + 6;}
 
 opcode_t *
 Parrot_replace_s_sc_i_ic_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, IREG(3), cur_opcode[4], CONST(5)->u.string);
+    SREG(1) = Parrot_str_replace(interp, CONST(2).u.string, IREG(3), cur_opcode[4], CONST(5).u.string);
 
 return (opcode_t *)cur_opcode + 6;}
 
 opcode_t *
 Parrot_replace_s_s_ic_ic_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_replace(interp, SREG(2), cur_opcode[3], cur_opcode[4], CONST(5)->u.string);
+    SREG(1) = Parrot_str_replace(interp, SREG(2), cur_opcode[3], cur_opcode[4], CONST(5).u.string);
 
 return (opcode_t *)cur_opcode + 6;}
 
 opcode_t *
 Parrot_replace_s_sc_ic_ic_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_replace(interp, CONST(2)->u.string, cur_opcode[3], cur_opcode[4], CONST(5)->u.string);
+    SREG(1) = Parrot_str_replace(interp, CONST(2).u.string, cur_opcode[3], cur_opcode[4], CONST(5).u.string);
 
 return (opcode_t *)cur_opcode + 6;}
 
@@ -21687,21 +21687,21 @@
 opcode_t *
 Parrot_index_i_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = (CONST(2)->u.string && SREG(3)) ? Parrot_str_find_index(interp, CONST(2)->u.string, SREG(3), 0) : -1;
+    IREG(1) = (CONST(2).u.string && SREG(3)) ? Parrot_str_find_index(interp, CONST(2).u.string, SREG(3), 0) : -1;
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_index_i_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = (SREG(2) && CONST(3)->u.string) ? Parrot_str_find_index(interp, SREG(2), CONST(3)->u.string, 0) : -1;
+    IREG(1) = (SREG(2) && CONST(3).u.string) ? Parrot_str_find_index(interp, SREG(2), CONST(3).u.string, 0) : -1;
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_index_i_sc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = (CONST(2)->u.string && CONST(3)->u.string) ? Parrot_str_find_index(interp, CONST(2)->u.string, CONST(3)->u.string, 0) : -1;
+    IREG(1) = (CONST(2).u.string && CONST(3).u.string) ? Parrot_str_find_index(interp, CONST(2).u.string, CONST(3).u.string, 0) : -1;
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21715,21 +21715,21 @@
 opcode_t *
 Parrot_index_i_sc_s_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = (CONST(2)->u.string && SREG(3)) ? Parrot_str_find_index(interp, CONST(2)->u.string, SREG(3), IREG(4)) : -1;
+    IREG(1) = (CONST(2).u.string && SREG(3)) ? Parrot_str_find_index(interp, CONST(2).u.string, SREG(3), IREG(4)) : -1;
 
 return (opcode_t *)cur_opcode + 5;}
 
 opcode_t *
 Parrot_index_i_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = (SREG(2) && CONST(3)->u.string) ? Parrot_str_find_index(interp, SREG(2), CONST(3)->u.string, IREG(4)) : -1;
+    IREG(1) = (SREG(2) && CONST(3).u.string) ? Parrot_str_find_index(interp, SREG(2), CONST(3).u.string, IREG(4)) : -1;
 
 return (opcode_t *)cur_opcode + 5;}
 
 opcode_t *
 Parrot_index_i_sc_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = (CONST(2)->u.string && CONST(3)->u.string) ? Parrot_str_find_index(interp, CONST(2)->u.string, CONST(3)->u.string, IREG(4)) : -1;
+    IREG(1) = (CONST(2).u.string && CONST(3).u.string) ? Parrot_str_find_index(interp, CONST(2).u.string, CONST(3).u.string, IREG(4)) : -1;
 
 return (opcode_t *)cur_opcode + 5;}
 
@@ -21743,21 +21743,21 @@
 opcode_t *
 Parrot_index_i_sc_s_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = (CONST(2)->u.string && SREG(3)) ? Parrot_str_find_index(interp, CONST(2)->u.string, SREG(3), cur_opcode[4]) : -1;
+    IREG(1) = (CONST(2).u.string && SREG(3)) ? Parrot_str_find_index(interp, CONST(2).u.string, SREG(3), cur_opcode[4]) : -1;
 
 return (opcode_t *)cur_opcode + 5;}
 
 opcode_t *
 Parrot_index_i_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = (SREG(2) && CONST(3)->u.string) ? Parrot_str_find_index(interp, SREG(2), CONST(3)->u.string, cur_opcode[4]) : -1;
+    IREG(1) = (SREG(2) && CONST(3).u.string) ? Parrot_str_find_index(interp, SREG(2), CONST(3).u.string, cur_opcode[4]) : -1;
 
 return (opcode_t *)cur_opcode + 5;}
 
 opcode_t *
 Parrot_index_i_sc_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = (CONST(2)->u.string && CONST(3)->u.string) ? Parrot_str_find_index(interp, CONST(2)->u.string, CONST(3)->u.string, cur_opcode[4]) : -1;
+    IREG(1) = (CONST(2).u.string && CONST(3).u.string) ? Parrot_str_find_index(interp, CONST(2).u.string, CONST(3).u.string, cur_opcode[4]) : -1;
 
 return (opcode_t *)cur_opcode + 5;}
 
@@ -21771,7 +21771,7 @@
 opcode_t *
 Parrot_sprintf_s_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1)=Parrot_psprintf(interp, CONST(2)->u.string, PREG(3));
+    SREG(1)=Parrot_psprintf(interp, CONST(2).u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -21843,27 +21843,27 @@
 opcode_t *
 Parrot_stringinfo_i_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (CONST(2)->u.string == NULL)
+    if (CONST(2).u.string == NULL)
         IREG(1) = 0;
     else {
         switch (IREG(3)) {
           case STRINGINFO_HEADER:
-            IREG(1) = PTR2UINTVAL(CONST(2)->u.string);
+            IREG(1) = PTR2UINTVAL(CONST(2).u.string);
             break;
           case STRINGINFO_STRSTART:
-            IREG(1) = PTR2UINTVAL(CONST(2)->u.string->strstart);
+            IREG(1) = PTR2UINTVAL(CONST(2).u.string->strstart);
             break;
           case STRINGINFO_BUFLEN:
-            IREG(1) = Buffer_buflen(CONST(2)->u.string);
+            IREG(1) = Buffer_buflen(CONST(2).u.string);
             break;
           case STRINGINFO_FLAGS:
-            IREG(1) = PObj_get_FLAGS(CONST(2)->u.string);
+            IREG(1) = PObj_get_FLAGS(CONST(2).u.string);
             break;
           case STRINGINFO_BUFUSED:
-            IREG(1) = CONST(2)->u.string->bufused;
+            IREG(1) = CONST(2).u.string->bufused;
             break;
           case STRINGINFO_STRLEN:
-            IREG(1) = CONST(2)->u.string->strlen;
+            IREG(1) = CONST(2).u.string->strlen;
             break;
           default:
             {
@@ -21915,27 +21915,27 @@
 opcode_t *
 Parrot_stringinfo_i_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (CONST(2)->u.string == NULL)
+    if (CONST(2).u.string == NULL)
         IREG(1) = 0;
     else {
         switch (cur_opcode[3]) {
           case STRINGINFO_HEADER:
-            IREG(1) = PTR2UINTVAL(CONST(2)->u.string);
+            IREG(1) = PTR2UINTVAL(CONST(2).u.string);
             break;
           case STRINGINFO_STRSTART:
-            IREG(1) = PTR2UINTVAL(CONST(2)->u.string->strstart);
+            IREG(1) = PTR2UINTVAL(CONST(2).u.string->strstart);
             break;
           case STRINGINFO_BUFLEN:
-            IREG(1) = Buffer_buflen(CONST(2)->u.string);
+            IREG(1) = Buffer_buflen(CONST(2).u.string);
             break;
           case STRINGINFO_FLAGS:
-            IREG(1) = PObj_get_FLAGS(CONST(2)->u.string);
+            IREG(1) = PObj_get_FLAGS(CONST(2).u.string);
             break;
           case STRINGINFO_BUFUSED:
-            IREG(1) = CONST(2)->u.string->bufused;
+            IREG(1) = CONST(2).u.string->bufused;
             break;
           case STRINGINFO_STRLEN:
-            IREG(1) = CONST(2)->u.string->strlen;
+            IREG(1) = CONST(2).u.string->strlen;
             break;
           default:
             {
@@ -21958,7 +21958,7 @@
 opcode_t *
 Parrot_upcase_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_upcase(interp, CONST(2)->u.string);
+    SREG(1) = Parrot_str_upcase(interp, CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -21972,7 +21972,7 @@
 opcode_t *
 Parrot_downcase_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_downcase(interp, CONST(2)->u.string);
+    SREG(1) = Parrot_str_downcase(interp, CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -21986,7 +21986,7 @@
 opcode_t *
 Parrot_titlecase_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_titlecase(interp, CONST(2)->u.string);
+    SREG(1) = Parrot_str_titlecase(interp, CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -22000,7 +22000,7 @@
 opcode_t *
 Parrot_join_s_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_join(interp, CONST(2)->u.string, PREG(3));
+    SREG(1) = Parrot_str_join(interp, CONST(2).u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -22014,21 +22014,21 @@
 opcode_t *
 Parrot_split_p_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = Parrot_str_split(interp, CONST(2)->u.string, SREG(3));
+    PREG(1) = Parrot_str_split(interp, CONST(2).u.string, SREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_split_p_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = Parrot_str_split(interp, SREG(2), CONST(3)->u.string);
+    PREG(1) = Parrot_str_split(interp, SREG(2), CONST(3).u.string);
 
 return (opcode_t *)cur_opcode + 4;}
 
 opcode_t *
 Parrot_split_p_sc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = Parrot_str_split(interp, CONST(2)->u.string, CONST(3)->u.string);
+    PREG(1) = Parrot_str_split(interp, CONST(2).u.string, CONST(3).u.string);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -22042,7 +22042,7 @@
 opcode_t *
 Parrot_charset_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_charset_number_of_str(interp, CONST(2)->u.string);
+    IREG(1) = Parrot_charset_number_of_str(interp, CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -22076,11 +22076,11 @@
 opcode_t *
 Parrot_find_charset_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    const INTVAL n = Parrot_charset_number(interp, CONST(2)->u.string);
+    const INTVAL n = Parrot_charset_number(interp, CONST(2).u.string);
     if (n < 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
                 EXCEPTION_INVALID_CHARTYPE,
-                "charset '%Ss' not found", CONST(2)->u.string);return (opcode_t *)handler;
+                "charset '%Ss' not found", CONST(2).u.string);return (opcode_t *)handler;
     }
     IREG(1) = n;
 
@@ -22096,7 +22096,7 @@
 opcode_t *
 Parrot_trans_charset_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_change_charset(interp, CONST(2)->u.string, IREG(3));
+    SREG(1) = Parrot_str_change_charset(interp, CONST(2).u.string, IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -22110,7 +22110,7 @@
 opcode_t *
 Parrot_trans_charset_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_change_charset(interp, CONST(2)->u.string, cur_opcode[3]);
+    SREG(1) = Parrot_str_change_charset(interp, CONST(2).u.string, cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -22124,7 +22124,7 @@
 opcode_t *
 Parrot_encoding_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_encoding_number_of_str(interp, CONST(2)->u.string);
+    IREG(1) = Parrot_encoding_number_of_str(interp, CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -22158,11 +22158,11 @@
 opcode_t *
 Parrot_find_encoding_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    const INTVAL n = Parrot_encoding_number(interp, CONST(2)->u.string);
+    const INTVAL n = Parrot_encoding_number(interp, CONST(2).u.string);
     if (n < 0) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
                 EXCEPTION_INVALID_ENCODING,
-                "encoding '%Ss' not found", CONST(2)->u.string);return (opcode_t *)handler;
+                "encoding '%Ss' not found", CONST(2).u.string);return (opcode_t *)handler;
     }
     IREG(1) = n;
 
@@ -22178,7 +22178,7 @@
 opcode_t *
 Parrot_trans_encoding_s_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_change_encoding(interp, CONST(2)->u.string, IREG(3));
+    SREG(1) = Parrot_str_change_encoding(interp, CONST(2).u.string, IREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -22192,7 +22192,7 @@
 opcode_t *
 Parrot_trans_encoding_s_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_change_encoding(interp, CONST(2)->u.string, cur_opcode[3]);
+    SREG(1) = Parrot_str_change_encoding(interp, CONST(2).u.string, cur_opcode[3]);
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -22213,14 +22213,14 @@
 opcode_t *
 Parrot_is_cclass_i_i_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_is_cclass(interp, IREG(2), CONST(3)->u.string, IREG(4));
+    IREG(1) = Parrot_str_is_cclass(interp, IREG(2), CONST(3).u.string, IREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
 
 opcode_t *
 Parrot_is_cclass_i_ic_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_is_cclass(interp, cur_opcode[2], CONST(3)->u.string, IREG(4));
+    IREG(1) = Parrot_str_is_cclass(interp, cur_opcode[2], CONST(3).u.string, IREG(4));
 
 return (opcode_t *)cur_opcode + 5;}
 
@@ -22241,14 +22241,14 @@
 opcode_t *
 Parrot_is_cclass_i_i_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_is_cclass(interp, IREG(2), CONST(3)->u.string, cur_opcode[4]);
+    IREG(1) = Parrot_str_is_cclass(interp, IREG(2), CONST(3).u.string, cur_opcode[4]);
 
 return (opcode_t *)cur_opcode + 5;}
 
 opcode_t *
 Parrot_is_cclass_i_ic_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_is_cclass(interp, cur_opcode[2], CONST(3)->u.string, cur_opcode[4]);
+    IREG(1) = Parrot_str_is_cclass(interp, cur_opcode[2], CONST(3).u.string, cur_opcode[4]);
 
 return (opcode_t *)cur_opcode + 5;}
 
@@ -22269,14 +22269,14 @@
 opcode_t *
 Parrot_find_cclass_i_i_sc_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_find_cclass(interp, IREG(2), CONST(3)->u.string, IREG(4), IREG(5));
+    IREG(1) = Parrot_str_find_cclass(interp, IREG(2), CONST(3).u.string, IREG(4), IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
 
 opcode_t *
 Parrot_find_cclass_i_ic_sc_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], CONST(3)->u.string, IREG(4), IREG(5));
+    IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], CONST(3).u.string, IREG(4), IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
 
@@ -22297,14 +22297,14 @@
 opcode_t *
 Parrot_find_cclass_i_i_sc_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_find_cclass(interp, IREG(2), CONST(3)->u.string, cur_opcode[4], IREG(5));
+    IREG(1) = Parrot_str_find_cclass(interp, IREG(2), CONST(3).u.string, cur_opcode[4], IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
 
 opcode_t *
 Parrot_find_cclass_i_ic_sc_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], CONST(3)->u.string, cur_opcode[4], IREG(5));
+    IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], CONST(3).u.string, cur_opcode[4], IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
 
@@ -22325,14 +22325,14 @@
 opcode_t *
 Parrot_find_cclass_i_i_sc_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_find_cclass(interp, IREG(2), CONST(3)->u.string, IREG(4), cur_opcode[5]);
+    IREG(1) = Parrot_str_find_cclass(interp, IREG(2), CONST(3).u.string, IREG(4), cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
 
 opcode_t *
 Parrot_find_cclass_i_ic_sc_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], CONST(3)->u.string, IREG(4), cur_opcode[5]);
+    IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], CONST(3).u.string, IREG(4), cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
 
@@ -22353,14 +22353,14 @@
 opcode_t *
 Parrot_find_cclass_i_i_sc_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_find_cclass(interp, IREG(2), CONST(3)->u.string, cur_opcode[4], cur_opcode[5]);
+    IREG(1) = Parrot_str_find_cclass(interp, IREG(2), CONST(3).u.string, cur_opcode[4], cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
 
 opcode_t *
 Parrot_find_cclass_i_ic_sc_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], CONST(3)->u.string, cur_opcode[4], cur_opcode[5]);
+    IREG(1) = Parrot_str_find_cclass(interp, cur_opcode[2], CONST(3).u.string, cur_opcode[4], cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
 
@@ -22381,14 +22381,14 @@
 opcode_t *
 Parrot_find_not_cclass_i_i_sc_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), CONST(3)->u.string, IREG(4), IREG(5));
+    IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), CONST(3).u.string, IREG(4), IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
 
 opcode_t *
 Parrot_find_not_cclass_i_ic_sc_i_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], CONST(3)->u.string, IREG(4), IREG(5));
+    IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], CONST(3).u.string, IREG(4), IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
 
@@ -22409,14 +22409,14 @@
 opcode_t *
 Parrot_find_not_cclass_i_i_sc_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), CONST(3)->u.string, cur_opcode[4], IREG(5));
+    IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), CONST(3).u.string, cur_opcode[4], IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
 
 opcode_t *
 Parrot_find_not_cclass_i_ic_sc_ic_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], CONST(3)->u.string, cur_opcode[4], IREG(5));
+    IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], CONST(3).u.string, cur_opcode[4], IREG(5));
 
 return (opcode_t *)cur_opcode + 6;}
 
@@ -22437,14 +22437,14 @@
 opcode_t *
 Parrot_find_not_cclass_i_i_sc_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), CONST(3)->u.string, IREG(4), cur_opcode[5]);
+    IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), CONST(3).u.string, IREG(4), cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
 
 opcode_t *
 Parrot_find_not_cclass_i_ic_sc_i_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], CONST(3)->u.string, IREG(4), cur_opcode[5]);
+    IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], CONST(3).u.string, IREG(4), cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
 
@@ -22465,14 +22465,14 @@
 opcode_t *
 Parrot_find_not_cclass_i_i_sc_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), CONST(3)->u.string, cur_opcode[4], cur_opcode[5]);
+    IREG(1) = Parrot_str_find_not_cclass(interp, IREG(2), CONST(3).u.string, cur_opcode[4], cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
 
 opcode_t *
 Parrot_find_not_cclass_i_ic_sc_ic_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], CONST(3)->u.string, cur_opcode[4], cur_opcode[5]);
+    IREG(1) = Parrot_str_find_not_cclass(interp, cur_opcode[2], CONST(3).u.string, cur_opcode[4], cur_opcode[5]);
 
 return (opcode_t *)cur_opcode + 6;}
 
@@ -22493,7 +22493,7 @@
 opcode_t *
 Parrot_compose_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    SREG(1) = Parrot_str_compose(interp, CONST(2)->u.string);
+    SREG(1) = Parrot_str_compose(interp, CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -22507,7 +22507,7 @@
 opcode_t *
 Parrot_spawnw_i_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    IREG(1) = Parrot_Run_OS_Command(interp, CONST(2)->u.string);
+    IREG(1) = Parrot_Run_OS_Command(interp, CONST(2).u.string);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -22603,12 +22603,12 @@
 Parrot_sleep_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     opcode_t *next = cur_opcode + 2;
-    if (CONST(1)->u.number < 0.0) {
+    if (CONST(1).u.number < 0.0) {
         opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, next,
             EXCEPTION_NEG_SLEEP,
             "Cannot go back in time");return (opcode_t *)handler;
     }
-    next = (opcode_t *)Parrot_cx_schedule_sleep(interp, CONST(1)->u.number, next);return (opcode_t *)next;
+    next = (opcode_t *)Parrot_cx_schedule_sleep(interp, CONST(1).u.number, next);return (opcode_t *)next;
 }
 
 opcode_t *
@@ -22631,7 +22631,7 @@
 Parrot_store_lex_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC     * const ctx      = CURRENT_CONTEXT(interp);
-    STRING  * const lex_name = CONST(1)->u.string;
+    STRING  * const lex_name = CONST(1).u.string;
     PMC     * const lex_pad  = Parrot_find_pad(interp, lex_name, ctx);
 
     if (PMC_IS_NULL(lex_pad)) {
@@ -22666,7 +22666,7 @@
 opcode_t *
 Parrot_store_dynamic_lex_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    STRING  * const lex_name = CONST(1)->u.string;
+    STRING  * const lex_name = CONST(1).u.string;
     PMC     * const ctx      =
         Parrot_pcc_get_caller_ctx(interp, CURRENT_CONTEXT(interp));
     PMC     * const lex_pad  =
@@ -22707,7 +22707,7 @@
 Parrot_find_lex_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC     * const ctx      = CURRENT_CONTEXT(interp);
-    STRING  * const lex_name = CONST(2)->u.string;
+    STRING  * const lex_name = CONST(2).u.string;
     PMC     * const lex_pad  = Parrot_find_pad(interp, lex_name, ctx);
 
     PMC * const result =
@@ -22744,7 +22744,7 @@
 opcode_t *
 Parrot_find_dynamic_lex_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    STRING  * const lex_name = CONST(2)->u.string;
+    STRING  * const lex_name = CONST(2).u.string;
     PMC     * const ctx      =
         Parrot_pcc_get_caller_ctx(interp, CURRENT_CONTEXT(interp));
     PMC     * const lex_pad  =
@@ -22783,7 +22783,7 @@
 opcode_t *
 Parrot_find_caller_lex_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    STRING  * const lex_name = CONST(2)->u.string;
+    STRING  * const lex_name = CONST(2).u.string;
     PMC     * ctx            = CURRENT_CONTEXT(interp);
     PMC     * result         = PMCNULL;
 
@@ -22823,7 +22823,7 @@
 Parrot_get_namespace_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
-    PMC * const ns     = Parrot_ns_get_namespace_keyed(interp, cur_ns, CONST(2)->u.key);
+    PMC * const ns     = Parrot_ns_get_namespace_keyed(interp, cur_ns, CONST(2).u.key);
 
     PREG(1) = PMC_IS_NULL(ns) ? PMCNULL : ns;
 
@@ -22857,7 +22857,7 @@
     if (PMC_IS_NULL(hll_ns))
         PREG(1) = PMCNULL;
     else {
-        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, hll_ns, CONST(2)->u.key);
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, hll_ns, CONST(2).u.key);
         PREG(1) = ns;
     }
 
@@ -22891,7 +22891,7 @@
     if (PMC_IS_NULL(root_ns))
         PREG(1) = PMCNULL;
     else {
-        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, CONST(2)->u.key);
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, CONST(2).u.key);
         PREG(1) = ns;
     }
 
@@ -22909,7 +22909,7 @@
 Parrot_get_global_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
-    PREG(1) = Parrot_ns_find_global_from_op(interp, cur_ns, CONST(2)->u.string, cur_opcode + 3);
+    PREG(1) = Parrot_ns_find_global_from_op(interp, cur_ns, CONST(2).u.string, cur_opcode + 3);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -22938,7 +22938,7 @@
         PREG(1) = PMCNULL;
     }
     else {
-        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, cur_ns, CONST(2)->u.key);
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, cur_ns, CONST(2).u.key);
         if (PMC_IS_NULL(ns))
             PREG(1) = PMCNULL;
         else
@@ -22959,7 +22959,7 @@
         if (PMC_IS_NULL(ns))
             PREG(1) = PMCNULL;
         else
-            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3)->u.string, cur_opcode + 4);
+            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3).u.string, cur_opcode + 4);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22972,11 +22972,11 @@
         PREG(1) = PMCNULL;
     }
     else {
-        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, cur_ns, CONST(2)->u.key);
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, cur_ns, CONST(2).u.key);
         if (PMC_IS_NULL(ns))
             PREG(1) = PMCNULL;
         else
-            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3)->u.string, cur_opcode + 4);
+            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3).u.string, cur_opcode + 4);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22993,7 +22993,7 @@
 Parrot_get_hll_global_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
-    PREG(1) = Parrot_ns_find_global_from_op(interp, hll_ns, CONST(2)->u.string, cur_opcode + 3);
+    PREG(1) = Parrot_ns_find_global_from_op(interp, hll_ns, CONST(2).u.string, cur_opcode + 3);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -23022,7 +23022,7 @@
         PREG(1) = hll_ns;
     }
     else {
-        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, hll_ns, CONST(2)->u.key);
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, hll_ns, CONST(2).u.key);
         if (PMC_IS_NULL(ns))
             PREG(1) = PMCNULL;
         else
@@ -23043,7 +23043,7 @@
         if (PMC_IS_NULL(ns))
             PREG(1) = PMCNULL;
         else
-            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3)->u.string, cur_opcode + 4);
+            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3).u.string, cur_opcode + 4);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23056,11 +23056,11 @@
         PREG(1) = hll_ns;
     }
     else {
-        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, hll_ns, CONST(2)->u.key);
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, hll_ns, CONST(2).u.key);
         if (PMC_IS_NULL(ns))
             PREG(1) = PMCNULL;
         else
-            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3)->u.string, cur_opcode + 4);
+            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3).u.string, cur_opcode + 4);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23077,7 +23077,7 @@
 Parrot_get_root_global_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const root_ns = interp->root_namespace;
-    PREG(1) = Parrot_ns_find_global_from_op(interp, root_ns, CONST(2)->u.string, cur_opcode + 3);
+    PREG(1) = Parrot_ns_find_global_from_op(interp, root_ns, CONST(2).u.string, cur_opcode + 3);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -23104,7 +23104,7 @@
     if (PMC_IS_NULL(root_ns))
         PREG(1) = PMCNULL;
     else {
-        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, CONST(2)->u.key);
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, CONST(2).u.key);
         if (PMC_IS_NULL(ns))
             PREG(1) = PMCNULL;
         else
@@ -23124,7 +23124,7 @@
         if (PMC_IS_NULL(ns))
             PREG(1) = PMCNULL;
         else
-            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3)->u.string, cur_opcode + 4);
+            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3).u.string, cur_opcode + 4);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23136,11 +23136,11 @@
     if (PMC_IS_NULL(root_ns))
         PREG(1) = PMCNULL;
     else {
-        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, CONST(2)->u.key);
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, CONST(2).u.key);
         if (PMC_IS_NULL(ns))
             PREG(1) = PMCNULL;
         else
-            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3)->u.string, cur_opcode + 4);
+            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3).u.string, cur_opcode + 4);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23157,7 +23157,7 @@
 Parrot_set_global_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
-    Parrot_ns_set_global(interp, cur_ns, CONST(1)->u.string, PREG(2));
+    Parrot_ns_set_global(interp, cur_ns, CONST(1).u.string, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -23175,7 +23175,7 @@
 Parrot_set_global_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
-    PMC * const ns     = Parrot_ns_make_namespace_keyed(interp, cur_ns, CONST(1)->u.key);
+    PMC * const ns     = Parrot_ns_make_namespace_keyed(interp, cur_ns, CONST(1).u.key);
 
     Parrot_ns_set_global(interp, ns, SREG(2), PREG(3));
 
@@ -23187,7 +23187,7 @@
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
     PMC * const ns     = Parrot_ns_make_namespace_keyed(interp, cur_ns, PREG(1));
 
-    Parrot_ns_set_global(interp, ns, CONST(2)->u.string, PREG(3));
+    Parrot_ns_set_global(interp, ns, CONST(2).u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -23195,9 +23195,9 @@
 Parrot_set_global_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
-    PMC * const ns     = Parrot_ns_make_namespace_keyed(interp, cur_ns, CONST(1)->u.key);
+    PMC * const ns     = Parrot_ns_make_namespace_keyed(interp, cur_ns, CONST(1).u.key);
 
-    Parrot_ns_set_global(interp, ns, CONST(2)->u.string, PREG(3));
+    Parrot_ns_set_global(interp, ns, CONST(2).u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -23213,7 +23213,7 @@
 Parrot_set_hll_global_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
-    Parrot_ns_set_global(interp, hll_ns, CONST(1)->u.string, PREG(2));
+    Parrot_ns_set_global(interp, hll_ns, CONST(1).u.string, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -23231,7 +23231,7 @@
 Parrot_set_hll_global_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
-    PMC * const ns     = Parrot_ns_make_namespace_keyed(interp, hll_ns, CONST(1)->u.key);
+    PMC * const ns     = Parrot_ns_make_namespace_keyed(interp, hll_ns, CONST(1).u.key);
 
     Parrot_ns_set_global(interp, ns, SREG(2), PREG(3));
 
@@ -23243,7 +23243,7 @@
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
     PMC * const ns     = Parrot_ns_make_namespace_keyed(interp, hll_ns, PREG(1));
 
-    Parrot_ns_set_global(interp, ns, CONST(2)->u.string, PREG(3));
+    Parrot_ns_set_global(interp, ns, CONST(2).u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -23251,9 +23251,9 @@
 Parrot_set_hll_global_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
-    PMC * const ns     = Parrot_ns_make_namespace_keyed(interp, hll_ns, CONST(1)->u.key);
+    PMC * const ns     = Parrot_ns_make_namespace_keyed(interp, hll_ns, CONST(1).u.key);
 
-    Parrot_ns_set_global(interp, ns, CONST(2)->u.string, PREG(3));
+    Parrot_ns_set_global(interp, ns, CONST(2).u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -23269,7 +23269,7 @@
 Parrot_set_root_global_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const root_ns = interp->root_namespace;
-    Parrot_ns_set_global(interp, root_ns, CONST(1)->u.string, PREG(2));
+    Parrot_ns_set_global(interp, root_ns, CONST(1).u.string, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -23287,7 +23287,7 @@
 Parrot_set_root_global_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const root_ns = interp->root_namespace;
-    PMC * const ns      = Parrot_ns_make_namespace_keyed(interp, root_ns, CONST(1)->u.key);
+    PMC * const ns      = Parrot_ns_make_namespace_keyed(interp, root_ns, CONST(1).u.key);
 
     Parrot_ns_set_global(interp, ns, SREG(2), PREG(3));
 
@@ -23299,7 +23299,7 @@
     PMC * const root_ns = interp->root_namespace;
     PMC * const ns      = Parrot_ns_make_namespace_keyed(interp, root_ns, PREG(1));
 
-    Parrot_ns_set_global(interp, ns, CONST(2)->u.string, PREG(3));
+    Parrot_ns_set_global(interp, ns, CONST(2).u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -23307,9 +23307,9 @@
 Parrot_set_root_global_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const root_ns = interp->root_namespace;
-    PMC * const ns      = Parrot_ns_make_namespace_keyed(interp, root_ns, CONST(1)->u.key);
+    PMC * const ns      = Parrot_ns_make_namespace_keyed(interp, root_ns, CONST(1).u.key);
 
-    Parrot_ns_set_global(interp, ns, CONST(2)->u.string, PREG(3));
+    Parrot_ns_set_global(interp, ns, CONST(2).u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -23329,13 +23329,13 @@
 opcode_t *
 Parrot_find_name_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    if (!CONST(2)->u.string) {
+    if (!CONST(2).u.string) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, NULL,
                 EXCEPTION_INVALID_OPERATION,
                 "Tried to find null name");return (opcode_t *)handler;
     }
 
-    PREG(1) = Parrot_ns_find_named_item(interp, CONST(2)->u.string, cur_opcode + 3);
+    PREG(1) = Parrot_ns_find_named_item(interp, CONST(2).u.string, cur_opcode + 3);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -23361,14 +23361,14 @@
 Parrot_find_sub_not_null_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     opcode_t *dest = cur_opcode + 3;
-    PMC *sub = Parrot_ns_find_named_item(interp, CONST(2)->u.string, dest);
+    PMC *sub = Parrot_ns_find_named_item(interp, CONST(2).u.string, dest);
 
     if (PMC_IS_NULL(sub)) {
         opcode_t *handler;
         Parrot_pcc_set_pc_func(interp, CURRENT_CONTEXT(interp), dest);
         handler = Parrot_ex_throw_from_op_args(interp, dest,
                        EXCEPTION_GLOBAL_NOT_FOUND,
-                       "Could not find sub %Ss", CONST(2)->u.string);return (opcode_t *)handler;
+                       "Could not find sub %Ss", CONST(2).u.string);return (opcode_t *)handler;
     }
 
     PREG(1) = sub;
@@ -23427,7 +23427,7 @@
 opcode_t *
 Parrot_fetch_p_pc_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, PREG(3));
+    PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2).u.key, PREG(3));
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
         if (!PMC_IS_NULL(classobj))
@@ -23449,7 +23449,7 @@
 opcode_t *
 Parrot_fetch_p_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3)->u.key);
+    PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3).u.key);
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
         if (!PMC_IS_NULL(classobj))
@@ -23471,7 +23471,7 @@
 opcode_t *
 Parrot_fetch_p_pc_pc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, CONST(3)->u.key);
+    PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2).u.key, CONST(3).u.key);
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
         if (!PMC_IS_NULL(classobj))
@@ -23495,15 +23495,15 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PREG(3));
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
@@ -23515,17 +23515,17 @@
 opcode_t *
 Parrot_fetch_p_pc_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, PREG(3));
+    PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2).u.key, PREG(3));
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
@@ -23537,17 +23537,17 @@
 opcode_t *
 Parrot_fetch_p_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3)->u.key);
+    PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3).u.key);
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
@@ -23559,17 +23559,17 @@
 opcode_t *
 Parrot_fetch_p_pc_pc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, CONST(3)->u.key);
+    PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2).u.key, CONST(3).u.key);
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
@@ -23603,7 +23603,7 @@
 opcode_t *
 Parrot_fetch_p_pc_i_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, IREG(3));
+    PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2).u.key, IREG(3));
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
         if (!PMC_IS_NULL(classobj))
@@ -23647,7 +23647,7 @@
 opcode_t *
 Parrot_fetch_p_pc_ic_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, cur_opcode[3]);
+    PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2).u.key, cur_opcode[3]);
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
         if (!PMC_IS_NULL(classobj))
@@ -23671,15 +23671,15 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), IREG(3));
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
@@ -23691,17 +23691,17 @@
 opcode_t *
 Parrot_fetch_p_pc_i_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, IREG(3));
+    PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2).u.key, IREG(3));
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
@@ -23715,15 +23715,15 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), cur_opcode[3]);
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
@@ -23735,17 +23735,17 @@
 opcode_t *
 Parrot_fetch_p_pc_ic_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, cur_opcode[3]);
+    PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2).u.key, cur_opcode[3]);
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
@@ -23779,7 +23779,7 @@
 opcode_t *
 Parrot_fetch_p_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, SREG(3));
+    PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2).u.key, SREG(3));
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
         if (!PMC_IS_NULL(classobj))
@@ -23801,7 +23801,7 @@
 opcode_t *
 Parrot_fetch_p_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), CONST(3)->u.string);
+    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), CONST(3).u.string);
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
         if (!PMC_IS_NULL(classobj))
@@ -23823,7 +23823,7 @@
 opcode_t *
 Parrot_fetch_p_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, CONST(3)->u.string);
+    PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2).u.key, CONST(3).u.string);
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
         if (!PMC_IS_NULL(classobj))
@@ -23847,15 +23847,15 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SREG(3));
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
@@ -23867,17 +23867,17 @@
 opcode_t *
 Parrot_fetch_p_pc_s_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, SREG(3));
+    PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2).u.key, SREG(3));
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
@@ -23889,17 +23889,17 @@
 opcode_t *
 Parrot_fetch_p_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), CONST(3)->u.string);
+    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), CONST(3).u.string);
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
@@ -23911,17 +23911,17 @@
 opcode_t *
 Parrot_fetch_p_pc_sc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, CONST(3)->u.string);
+    PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2).u.key, CONST(3).u.string);
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
@@ -23958,7 +23958,7 @@
 opcode_t *
 Parrot_vivify_p_pc_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, PREG(3));
+    PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2).u.key, PREG(3));
 
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -23975,7 +23975,7 @@
 
             PREG(1) = Parrot_pmc_new(interp, type);
         }
-        VTABLE_set_pmc_keyed(interp, CONST(2)->u.key, PREG(3), PREG(1));
+        VTABLE_set_pmc_keyed(interp, CONST(2).u.key, PREG(3), PREG(1));
     }
 
 return (opcode_t *)cur_opcode + 5;}
@@ -23983,7 +23983,7 @@
 opcode_t *
 Parrot_vivify_p_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3)->u.key);
+    PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3).u.key);
 
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -24000,7 +24000,7 @@
 
             PREG(1) = Parrot_pmc_new(interp, type);
         }
-        VTABLE_set_pmc_keyed(interp, PREG(2), CONST(3)->u.key, PREG(1));
+        VTABLE_set_pmc_keyed(interp, PREG(2), CONST(3).u.key, PREG(1));
     }
 
 return (opcode_t *)cur_opcode + 5;}
@@ -24008,7 +24008,7 @@
 opcode_t *
 Parrot_vivify_p_pc_pc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, CONST(3)->u.key);
+    PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2).u.key, CONST(3).u.key);
 
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -24025,7 +24025,7 @@
 
             PREG(1) = Parrot_pmc_new(interp, type);
         }
-        VTABLE_set_pmc_keyed(interp, CONST(2)->u.key, CONST(3)->u.key, PREG(1));
+        VTABLE_set_pmc_keyed(interp, CONST(2).u.key, CONST(3).u.key, PREG(1));
     }
 
 return (opcode_t *)cur_opcode + 5;}
@@ -24036,16 +24036,16 @@
     PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), PREG(3));
 
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
 
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
@@ -24058,24 +24058,24 @@
 opcode_t *
 Parrot_vivify_p_pc_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, PREG(3));
+    PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2).u.key, PREG(3));
 
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
 
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
         }
-        VTABLE_set_pmc_keyed(interp, CONST(2)->u.key, PREG(3), PREG(1));
+        VTABLE_set_pmc_keyed(interp, CONST(2).u.key, PREG(3), PREG(1));
     }
 
 return (opcode_t *)cur_opcode + 5;}
@@ -24083,24 +24083,24 @@
 opcode_t *
 Parrot_vivify_p_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3)->u.key);
+    PREG(1) = VTABLE_get_pmc_keyed(interp, PREG(2), CONST(3).u.key);
 
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
 
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
         }
-        VTABLE_set_pmc_keyed(interp, PREG(2), CONST(3)->u.key, PREG(1));
+        VTABLE_set_pmc_keyed(interp, PREG(2), CONST(3).u.key, PREG(1));
     }
 
 return (opcode_t *)cur_opcode + 5;}
@@ -24108,24 +24108,24 @@
 opcode_t *
 Parrot_vivify_p_pc_pc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2)->u.key, CONST(3)->u.key);
+    PREG(1) = VTABLE_get_pmc_keyed(interp, CONST(2).u.key, CONST(3).u.key);
 
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
 
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
         }
-        VTABLE_set_pmc_keyed(interp, CONST(2)->u.key, CONST(3)->u.key, PREG(1));
+        VTABLE_set_pmc_keyed(interp, CONST(2).u.key, CONST(3).u.key, PREG(1));
     }
 
 return (opcode_t *)cur_opcode + 5;}
@@ -24158,7 +24158,7 @@
 opcode_t *
 Parrot_vivify_p_pc_i_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, IREG(3));
+    PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2).u.key, IREG(3));
 
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -24175,7 +24175,7 @@
             PREG(1) = Parrot_pmc_new(interp, type);
         }
 
-        VTABLE_set_pmc_keyed_int(interp, CONST(2)->u.key, IREG(3), PREG(1));
+        VTABLE_set_pmc_keyed_int(interp, CONST(2).u.key, IREG(3), PREG(1));
     }
 
 return (opcode_t *)cur_opcode + 5;}
@@ -24208,7 +24208,7 @@
 opcode_t *
 Parrot_vivify_p_pc_ic_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, cur_opcode[3]);
+    PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2).u.key, cur_opcode[3]);
 
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -24225,7 +24225,7 @@
             PREG(1) = Parrot_pmc_new(interp, type);
         }
 
-        VTABLE_set_pmc_keyed_int(interp, CONST(2)->u.key, cur_opcode[3], PREG(1));
+        VTABLE_set_pmc_keyed_int(interp, CONST(2).u.key, cur_opcode[3], PREG(1));
     }
 
 return (opcode_t *)cur_opcode + 5;}
@@ -24236,15 +24236,15 @@
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), IREG(3));
 
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
@@ -24258,24 +24258,24 @@
 opcode_t *
 Parrot_vivify_p_pc_i_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, IREG(3));
+    PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2).u.key, IREG(3));
 
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
         }
 
-        VTABLE_set_pmc_keyed_int(interp, CONST(2)->u.key, IREG(3), PREG(1));
+        VTABLE_set_pmc_keyed_int(interp, CONST(2).u.key, IREG(3), PREG(1));
     }
 
 return (opcode_t *)cur_opcode + 5;}
@@ -24286,15 +24286,15 @@
     PREG(1) = VTABLE_get_pmc_keyed_int(interp, PREG(2), cur_opcode[3]);
 
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
@@ -24308,24 +24308,24 @@
 opcode_t *
 Parrot_vivify_p_pc_ic_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2)->u.key, cur_opcode[3]);
+    PREG(1) = VTABLE_get_pmc_keyed_int(interp, CONST(2).u.key, cur_opcode[3]);
 
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
         }
 
-        VTABLE_set_pmc_keyed_int(interp, CONST(2)->u.key, cur_opcode[3], PREG(1));
+        VTABLE_set_pmc_keyed_int(interp, CONST(2).u.key, cur_opcode[3], PREG(1));
     }
 
 return (opcode_t *)cur_opcode + 5;}
@@ -24358,7 +24358,7 @@
 opcode_t *
 Parrot_vivify_p_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, SREG(3));
+    PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2).u.key, SREG(3));
 
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -24375,7 +24375,7 @@
             PREG(1) = Parrot_pmc_new(interp, type);
         }
 
-        VTABLE_set_pmc_keyed_str(interp, CONST(2)->u.key, SREG(3), PREG(1));
+        VTABLE_set_pmc_keyed_str(interp, CONST(2).u.key, SREG(3), PREG(1));
     }
 
 return (opcode_t *)cur_opcode + 5;}
@@ -24383,7 +24383,7 @@
 opcode_t *
 Parrot_vivify_p_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), CONST(3)->u.string);
+    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), CONST(3).u.string);
 
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -24400,7 +24400,7 @@
             PREG(1) = Parrot_pmc_new(interp, type);
         }
 
-        VTABLE_set_pmc_keyed_str(interp, PREG(2), CONST(3)->u.string, PREG(1));
+        VTABLE_set_pmc_keyed_str(interp, PREG(2), CONST(3).u.string, PREG(1));
     }
 
 return (opcode_t *)cur_opcode + 5;}
@@ -24408,7 +24408,7 @@
 opcode_t *
 Parrot_vivify_p_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, CONST(3)->u.string);
+    PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2).u.key, CONST(3).u.string);
 
     if (PMC_IS_NULL(PREG(1))) {
         PMC * const classobj = Parrot_oo_get_class(interp, PREG(4));
@@ -24425,7 +24425,7 @@
             PREG(1) = Parrot_pmc_new(interp, type);
         }
 
-        VTABLE_set_pmc_keyed_str(interp, CONST(2)->u.key, CONST(3)->u.string, PREG(1));
+        VTABLE_set_pmc_keyed_str(interp, CONST(2).u.key, CONST(3).u.string, PREG(1));
     }
 
 return (opcode_t *)cur_opcode + 5;}
@@ -24436,15 +24436,15 @@
     PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), SREG(3));
 
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
@@ -24458,24 +24458,24 @@
 opcode_t *
 Parrot_vivify_p_pc_s_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, SREG(3));
+    PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2).u.key, SREG(3));
 
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
         }
 
-        VTABLE_set_pmc_keyed_str(interp, CONST(2)->u.key, SREG(3), PREG(1));
+        VTABLE_set_pmc_keyed_str(interp, CONST(2).u.key, SREG(3), PREG(1));
     }
 
 return (opcode_t *)cur_opcode + 5;}
@@ -24483,24 +24483,24 @@
 opcode_t *
 Parrot_vivify_p_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), CONST(3)->u.string);
+    PREG(1) = VTABLE_get_pmc_keyed_str(interp, PREG(2), CONST(3).u.string);
 
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
         }
 
-        VTABLE_set_pmc_keyed_str(interp, PREG(2), CONST(3)->u.string, PREG(1));
+        VTABLE_set_pmc_keyed_str(interp, PREG(2), CONST(3).u.string, PREG(1));
     }
 
 return (opcode_t *)cur_opcode + 5;}
@@ -24508,24 +24508,24 @@
 opcode_t *
 Parrot_vivify_p_pc_sc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2)->u.key, CONST(3)->u.string);
+    PREG(1) = VTABLE_get_pmc_keyed_str(interp, CONST(2).u.key, CONST(3).u.string);
 
     if (PMC_IS_NULL(PREG(1))) {
-        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4)->u.key);
+        PMC * const classobj = Parrot_oo_get_class(interp, CONST(4).u.key);
         if (!PMC_IS_NULL(classobj))
             PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
+            const INTVAL type = Parrot_pmc_get_type(interp, CONST(4).u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
-                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
+                    "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4).u.key));return (opcode_t *)dest;
             }
 
             PREG(1) = Parrot_pmc_new(interp, type);
         }
 
-        VTABLE_set_pmc_keyed_str(interp, CONST(2)->u.key, CONST(3)->u.string, PREG(1));
+        VTABLE_set_pmc_keyed_str(interp, CONST(2).u.key, CONST(3).u.string, PREG(1));
     }
 
 return (opcode_t *)cur_opcode + 5;}
@@ -24558,7 +24558,7 @@
 opcode_t *
 Parrot_new_p_sc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    STRING * const name   = CONST(2)->u.string;
+    STRING * const name   = CONST(2).u.string;
     PMC    * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
                           ? Parrot_oo_get_class_str(interp, name)
                           : PMCNULL;
@@ -24608,7 +24608,7 @@
 opcode_t *
 Parrot_new_p_sc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    STRING * const name   = CONST(2)->u.string;
+    STRING * const name   = CONST(2).u.string;
     PMC    * const _class = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp))
                           ? Parrot_oo_get_class_str(interp, name)
                           : PMCNULL;
@@ -24665,7 +24665,7 @@
 opcode_t *
 Parrot_new_p_pc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PMC * const  name_key = CONST(2)->u.key;
+    PMC * const  name_key = CONST(2).u.key;
 
     /* get_class() returns a PMCProxy for core types, so check for core PMCs */
     const INTVAL type = Parrot_pmc_get_type(interp, name_key);
@@ -24729,7 +24729,7 @@
 opcode_t *
 Parrot_new_p_pc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PMC * const  name_key = CONST(2)->u.key;
+    PMC * const  name_key = CONST(2).u.key;
 
     /* get_class() returns a PMCProxy for core types, so check for core PMCs */
     const INTVAL type = Parrot_pmc_get_type(interp, name_key);
@@ -24795,7 +24795,7 @@
 opcode_t *
 Parrot_root_new_p_pc_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PMC * const  name_key = CONST(2)->u.key;
+    PMC * const  name_key = CONST(2).u.key;
 
     /* get_class() returns a PMCProxy for core types, so check for core PMCs */
     const INTVAL type = Parrot_pmc_get_type(interp, name_key);
@@ -24863,7 +24863,7 @@
 opcode_t *
 Parrot_root_new_p_pc_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    PMC * const  name_key = CONST(2)->u.key;
+    PMC * const  name_key = CONST(2).u.key;
 
     /* get_class() returns a PMCProxy for core types, so check for core PMCs */
     const INTVAL type = Parrot_pmc_get_type(interp, name_key);
@@ -24916,7 +24916,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
 #if PARROT_HAS_ICU
     UErrorCode   err       = U_ZERO_ERROR;
-    char * const cstr      = Parrot_str_to_cstring(interp, CONST(2)->u.string);
+    char * const cstr      = Parrot_str_to_cstring(interp, CONST(2).u.string);
     UChar32      codepoint = u_charFromName(U_EXTENDED_CHAR_NAME, cstr, &err);
     Parrot_str_free_cstring(cstr);
     IREG(1) = U_SUCCESS(err) ? (INTVAL) codepoint : -1;
@@ -24973,13 +24973,13 @@
     /* Go to the next op after loop unrolling */
     opcode_t * const dest = cur_opcode + 2;
     PMC *eh = PMCNULL;
-    if (!PMC_IS_NULL(CONST(1)->u.key)) {
+    if (!PMC_IS_NULL(CONST(1).u.key)) {
         /* If isa ExceptionHandler, use it. If isa Exception, get its active handler */
-        if (VTABLE_isa(interp, CONST(1)->u.key, Parrot_str_new_constant(interp, "ExceptionHandler")))
-            eh = CONST(1)->u.key;
-        else if (VTABLE_isa(interp, CONST(1)->u.key, Parrot_str_new_constant(interp, "Exception"))) {
+        if (VTABLE_isa(interp, CONST(1).u.key, Parrot_str_new_constant(interp, "ExceptionHandler")))
+            eh = CONST(1).u.key;
+        else if (VTABLE_isa(interp, CONST(1).u.key, Parrot_str_new_constant(interp, "Exception"))) {
             PMC *iter = VTABLE_get_attr_str(interp,
-                                            CONST(1)->u.key, Parrot_str_new_constant(interp, "handler_iter"));
+                                            CONST(1).u.key, Parrot_str_new_constant(interp, "handler_iter"));
             if (!PMC_IS_NULL(iter))
                 eh = VTABLE_get_pmc_keyed_int(interp, iter, -1);
         }

Modified: trunk/src/packdump.c
==============================================================================
--- trunk/src/packdump.c	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/src/packdump.c	Tue Aug  3 05:51:00 2010	(r48277)
@@ -69,7 +69,7 @@
 
     for (i = 0; i < self->const_count; ++i) {
         Parrot_io_printf(interp, "    # %x:\n", (long)i);
-        PackFile_Constant_dump(interp, self, self->constants[i]);
+        PackFile_Constant_dump(interp, self, &self->constants[i]);
     }
 }
 
@@ -209,7 +209,7 @@
                     Parrot_io_printf(interp, "        TYPE        => NUMBER\n");
                     ct_index = PackFile_find_in_const(interp, ct, key, PFC_NUMBER);
                     Parrot_io_printf(interp, "        PFC_OFFSET  => %ld\n", ct_index);
-                    detail = ct->constants[ct_index];
+                    detail = &ct->constants[ct_index];
                     Parrot_io_printf(interp, "        DATA        => %ld\n", detail->u.number);
                     Parrot_io_printf(interp, "       },\n");
                 }
@@ -222,7 +222,7 @@
                     Parrot_io_printf(interp, "        TYPE        => STRING\n");
                     ct_index = PackFile_find_in_const(interp, ct, key, PFC_STRING);
                     Parrot_io_printf(interp, "        PFC_OFFSET  => %ld\n", ct_index);
-                    detail = ct->constants[ct_index];
+                    detail = &ct->constants[ct_index];
                     Parrot_io_printf(interp, "        DATA        => '%Ss'\n",
                               detail->u.string);
                     Parrot_io_printf(interp, "       },\n");

Modified: trunk/src/packfile.c
==============================================================================
--- trunk/src/packfile.c	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/src/packfile.c	Tue Aug  3 05:51:00 2010	(r48277)
@@ -53,12 +53,13 @@
     SHIM(int add))
         __attribute__nonnull__(1);
 
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static PackFile_Constant * clone_constant(PARROT_INTERP,
-    ARGIN(PackFile_Constant *old_const))
+static void clone_constant(PARROT_INTERP,
+    ARGIN(PackFile_Constant *old_const),
+    ARGMOD(PackFile_Constant *new_const))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
+        FUNC_MODIFIES(*new_const);
 
 static void compile_or_load_file(PARROT_INTERP,
     ARGIN(STRING *path),
@@ -186,7 +187,7 @@
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
-static PackFile_Constant ** find_constants(PARROT_INTERP,
+static PackFile_Constant * find_constants(PARROT_INTERP,
     ARGIN(PackFile_ConstTable *ct))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
@@ -354,7 +355,8 @@
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_clone_constant __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(old_const))
+    , PARROT_ASSERT_ARG(old_const) \
+    , PARROT_ASSERT_ARG(new_const))
 #define ASSERT_ARGS_compile_or_load_file __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(path))
@@ -815,21 +817,21 @@
 mark_1_seg(PARROT_INTERP, ARGMOD(PackFile_ConstTable *ct))
 {
     ASSERT_ARGS(mark_1_seg)
-    PackFile_Constant ** const constants = find_constants(interp, ct);
+    PackFile_Constant * const constants = find_constants(interp, ct);
     opcode_t i;
 
     for (i = 0; i < ct->const_count; ++i) {
-        switch (constants[i]->type) {
+        switch (constants[i].type) {
           case PFC_PMC:
           case PFC_KEY:
           {
-            PMC * const pmc = constants[i]->u.key;
+            PMC * const pmc = constants[i].u.key;
             Parrot_gc_mark_PMC_alive(interp, pmc);
             break;
           }
           case PFC_STRING:
           {
-            STRING * const string = constants[i]->u.string;
+            STRING * const string = constants[i].u.string;
             Parrot_gc_mark_STRING_alive(interp, string);
             break;
            }
@@ -947,7 +949,7 @@
                     Parrot_ex_throw_from_c_args(interp, NULL, 1,
                         "Illegal fixup offset (%d) in enum_fixup_sub");
 
-                sub_pmc       = ct->constants[ci]->u.key;
+                sub_pmc       = ct->constants[ci].u.key;
                 PMC_get_sub(interp, sub_pmc, sub);
                 sub->eval_pmc = eval_pmc;
 
@@ -960,7 +962,7 @@
                     /* replace Sub PMC with computation results */
                     if (action == PBC_IMMEDIATE && !PMC_IS_NULL(result)) {
                         ft->fixups[i].type      = enum_fixup_none;
-                        ct->constants[ci]->u.key = result;
+                        ct->constants[ci].u.key = result;
                     }
                 }
 
@@ -2818,7 +2820,7 @@
         Parrot_io_printf(interp, "        OFFSET => %d,\n",
                    debug->mappings[i].offset);
         Parrot_io_printf(interp, "        FILENAME => %Ss\n",
-                PF_CONST(debug->code, debug->mappings[i].filename)->u.string);
+                PF_CONST(debug->code, debug->mappings[i].filename).u.string);
         Parrot_io_printf(interp, "    ],\n");
     }
 
@@ -2903,9 +2905,9 @@
     if (debug->num_mappings) {
         prev_filename_n = debug->mappings[debug->num_mappings-1].filename;
         filename_pstr = Parrot_str_new(interp, filename, 0);
-        if (ct->constants[prev_filename_n]->type == PFC_STRING &&
+        if (ct->constants[prev_filename_n].type == PFC_STRING &&
                 Parrot_str_equal(interp, filename_pstr,
-                    ct->constants[prev_filename_n]->u.string)) {
+                    ct->constants[prev_filename_n].u.string)) {
             return;
         }
     }
@@ -2946,8 +2948,8 @@
 
         /* Check if there is already a constant with this filename */
         for (i= 0; i < count; ++i) {
-            if (ct->constants[i]->type == PFC_STRING &&
-                    Parrot_str_equal(interp, namestr, ct->constants[i]->u.string))
+            if (ct->constants[i].type == PFC_STRING &&
+                    Parrot_str_equal(interp, namestr, ct->constants[i].u.string))
                 break;
         }
         if (i < count) {
@@ -2959,14 +2961,13 @@
             PackFile_Constant             *fnconst;
             ct->const_count   = ct->const_count + 1;
             ct->constants = mem_gc_realloc_n_typed_zeroed(interp, ct->constants,
-                    ct->const_count, ct->const_count - 1, PackFile_Constant *);
+                    ct->const_count, ct->const_count - 1, PackFile_Constant);
 
-            fnconst           = PackFile_Constant_new(interp);
+            fnconst           = &ct->constants[ct->const_count - 1];
             fnconst->type     = PFC_STRING;
             fnconst->u.string = Parrot_str_new_init(interp, filename, strlen(filename),
                     PARROT_DEFAULT_ENCODING, PARROT_DEFAULT_CHARSET,
                     PObj_constant_FLAG);
-            ct->constants[ct->const_count - 1] = fnconst;
         }
 
         /* Set the mapped value */
@@ -3006,7 +3007,7 @@
        || (debug->mappings[i].offset     <= pc
        &&  debug->mappings[i + 1].offset >  pc))
             return PF_CONST(debug->code,
-                    debug->mappings[i].filename)->u.string;
+                    debug->mappings[i].filename).u.string;
     }
 
     /* Otherwise, no mappings == no filename. */
@@ -3099,8 +3100,8 @@
 
 /*
 
-=item C<static PackFile_Constant * clone_constant(PARROT_INTERP,
-PackFile_Constant *old_const)>
+=item C<static void clone_constant(PARROT_INTERP, PackFile_Constant *old_const,
+PackFile_Constant *new_const)>
 
 Clones a constant (at least, if it's a Sub PMC), returning the clone.
 
@@ -3108,22 +3109,20 @@
 
 */
 
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static PackFile_Constant *
-clone_constant(PARROT_INTERP, ARGIN(PackFile_Constant *old_const))
+static void
+clone_constant(PARROT_INTERP, ARGIN(PackFile_Constant *old_const),
+ARGMOD(PackFile_Constant *new_const))
 {
     ASSERT_ARGS(clone_constant)
     STRING * const _sub = CONST_STRING(interp, "Sub");
 
+    memcpy(new_const, old_const, sizeof (PackFile_Constant));
+
     if (old_const->type == PFC_PMC
     &&  VTABLE_isa(interp, old_const->u.key, _sub)) {
-        PMC        *old_sub_pmc, *new_sub_pmc;
+        PMC                   *old_sub_pmc, *new_sub_pmc;
         Parrot_Sub_attributes *old_sub,     *new_sub;
-        PackFile_Constant * const ret = mem_gc_allocate_zeroed_typed(interp,
-                PackFile_Constant);
 
-        ret->type = old_const->type;
         old_sub_pmc   = old_const->u.key;
         new_sub_pmc   = Parrot_thaw_constants(interp, Parrot_freeze(interp, old_sub_pmc));
 
@@ -3136,18 +3135,14 @@
         && !(old_sub->comp_flags   &  SUB_COMP_FLAG_METHOD))
             Parrot_ns_store_sub(interp, new_sub_pmc);
 
-        ret->u.key = new_sub_pmc;
-
-        return ret;
+        new_const->u.key = new_sub_pmc;
     }
-
-    return old_const;
 }
 
 
 /*
 
-=item C<static PackFile_Constant ** find_constants(PARROT_INTERP,
+=item C<static PackFile_Constant * find_constants(PARROT_INTERP,
 PackFile_ConstTable *ct)>
 
 Finds the constant table associated with a thread. For now, we need to copy
@@ -3160,7 +3155,7 @@
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
-static PackFile_Constant **
+static PackFile_Constant *
 find_constants(PARROT_INTERP, ARGIN(PackFile_ConstTable *ct))
 {
     ASSERT_ARGS(find_constants)
@@ -3170,7 +3165,7 @@
         return ct->constants;
     else {
         Hash               *tables;
-        PackFile_Constant **new_consts;
+        PackFile_Constant  *new_consts;
 
         PARROT_ASSERT(interp->thread_data);
 
@@ -3179,19 +3174,19 @@
         }
 
         tables     = interp->thread_data->const_tables;
-        new_consts = (PackFile_Constant **)parrot_hash_get(interp, tables, ct);
+        new_consts = (PackFile_Constant *)parrot_hash_get(interp, tables, ct);
 
         if (!new_consts) {
             /* need to construct it */
-            PackFile_Constant ** const old_consts = ct->constants;
-            INTVAL               const num_consts = ct->const_count;
-            INTVAL                     i;
+            PackFile_Constant * const old_consts = ct->constants;
+            INTVAL              const num_consts = ct->const_count;
+            INTVAL                    i;
 
             new_consts = mem_gc_allocate_n_zeroed_typed(interp,
-                    num_consts, PackFile_Constant *);
+                    num_consts, PackFile_Constant);
 
             for (i = 0; i < num_consts; ++i)
-                new_consts[i] = clone_constant(interp, old_consts[i]);
+                clone_constant(interp, &old_consts[i], &new_consts[i]);
 
             parrot_hash_put(interp, tables, ct, new_consts);
         }
@@ -3233,16 +3228,11 @@
         while (bucket) {
             PackFile_ConstTable * const table      =
                 (PackFile_ConstTable *)bucket->key;
-            PackFile_Constant ** const orig_consts = table->constants;
-            PackFile_Constant ** const consts      =
-                (PackFile_Constant **) bucket->value;
+            PackFile_Constant * const orig_consts = table->constants;
+            PackFile_Constant * const consts      =
+                (PackFile_Constant *) bucket->value;
             INTVAL j;
 
-            for (j = 0; j < table->const_count; ++j) {
-                if (consts[j] != orig_consts[j])
-                    mem_gc_free(interp, consts[j]);
-            }
-
             mem_gc_free(interp, consts);
             bucket = bucket->next;
         }
@@ -3664,11 +3654,6 @@
     ASSERT_ARGS(PackFile_ConstTable_clear)
     opcode_t i;
 
-    for (i = 0; i < self->const_count; ++i) {
-        PackFile_Constant_destroy(interp, self->constants[i]);
-        self->constants[i] = NULL;
-    }
-
     if (self->constants) {
         mem_gc_free(interp, self->constants);
         self->constants = NULL;
@@ -3719,7 +3704,7 @@
         return cursor;
 
     self->constants = mem_gc_allocate_n_zeroed_typed(interp, self->const_count,
-                PackFile_Constant *);
+                PackFile_Constant);
 
     if (!self->constants) {
         Parrot_io_eprintf(interp,
@@ -3731,9 +3716,8 @@
     for (i = 0; i < self->const_count; ++i) {
         TRACE_PRINTF(("PackFile_ConstTable_unpack(): Unpacking constant %ld/%ld\n",
             i, self->const_count));
-        self->constants[i] = PackFile_Constant_new(interp);
 
-        cursor = PackFile_Constant_unpack(interp, self, self->constants[i],
+        cursor = PackFile_Constant_unpack(interp, self, &self->constants[i],
                     cursor);
     }
 
@@ -4051,10 +4035,10 @@
             key_set_integer(interp, tail, op);
             break;
           case PARROT_ARG_NC:
-            key_set_number(interp, tail, constt->constants[op]->u.number);
+            key_set_number(interp, tail, constt->constants[op].u.number);
             break;
           case PARROT_ARG_SC:
-            key_set_string(interp, tail, constt->constants[op]->u.string);
+            key_set_string(interp, tail, constt->constants[op].u.string);
             break;
           case PARROT_ARG_I:
             key_set_register(interp, tail, op, KEY_integer_FLAG);
@@ -4329,7 +4313,7 @@
         const PackFile_Annotations_Key * const key = self->keys + i;
         Parrot_io_printf(interp, "    #%d\n    [\n", i);
         Parrot_io_printf(interp, "        NAME => %Ss\n",
-                PF_CONST(self->code, key->name)->u.string);
+                PF_CONST(self->code, key->name).u.string);
         Parrot_io_printf(interp, "        TYPE => %s\n",
                 key->type == PF_ANNOTATION_KEY_TYPE_INT ? "integer" :
                 key->type == PF_ANNOTATION_KEY_TYPE_STR ? "string" :
@@ -4434,12 +4418,12 @@
 {
     ASSERT_ARGS(PackFile_Annotations_add_entry)
     /* See if we already have this key. */
-    STRING  * const key_name = PF_CONST(self->code, key)->u.string;
+    STRING  * const key_name = PF_CONST(self->code, key).u.string;
     opcode_t key_id   = -1;
     INTVAL   i;
 
     for (i = 0; i < self->num_keys; ++i) {
-        STRING * const test_key = PF_CONST(self->code, self->keys[i].name)->u.string;
+        STRING * const test_key = PF_CONST(self->code, self->keys[i].name).u.string;
         if (Parrot_str_equal(interp, test_key, key_name)) {
             key_id = i;
             break;
@@ -4514,12 +4498,12 @@
       case PF_ANNOTATION_KEY_TYPE_NUM:
         result = Parrot_pmc_new(interp, enum_class_Float);
         VTABLE_set_number_native(interp, result,
-                    PF_CONST(self->code, value)->u.number);
+                    PF_CONST(self->code, value).u.number);
         break;
       default:
         result = Parrot_pmc_new(interp, enum_class_String);
         VTABLE_set_string_native(interp, result,
-                    PF_CONST(self->code, value)->u.string);
+                    PF_CONST(self->code, value).u.string);
     }
 
     return result;
@@ -4556,7 +4540,7 @@
 
     if (!STRING_IS_NULL(key)) {
         for (i = 0; i < self->num_keys; ++i) {
-            STRING * const test_key = PF_CONST(self->code, self->keys[i].name)->u.string;
+            STRING * const test_key = PF_CONST(self->code, self->keys[i].name).u.string;
             if (Parrot_str_equal(interp, test_key, key)) {
                 key_id = i;
                 break;
@@ -4595,7 +4579,7 @@
 
         for (i = 0; i < self->num_keys; ++i) {
             if (have_values[i]) {
-                STRING * const key_name = PF_CONST(self->code, self->keys[i].name)->u.string;
+                STRING * const key_name = PF_CONST(self->code, self->keys[i].name).u.string;
                 VTABLE_set_pmc_keyed_str(interp, result, key_name,
                         make_annotation_value_pmc(interp, self, self->keys[i].type,
                                 latest_values[i]));

Modified: trunk/src/packout.c
==============================================================================
--- trunk/src/packout.c	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/src/packout.c	Tue Aug  3 05:51:00 2010	(r48277)
@@ -166,7 +166,7 @@
     for (i = 0; i < n_constants; ++i) {
         /* only constants up to the current one will be valid on unpack */
         self->const_count = i;
-        size += PackFile_Constant_pack_size(interp, self->constants[i], self);
+        size += PackFile_Constant_pack_size(interp, &self->constants[i], self);
     }
 
     self->const_count = i;
@@ -208,7 +208,7 @@
     for (i = 0; i < n_constants; ++i) {
         /* only constants up to the current one will be valid on unpack */
         self->const_count = i;
-        cursor = PackFile_Constant_pack(interp, self, self->constants[i], cursor);
+        cursor = PackFile_Constant_pack(interp, self, &self->constants[i], cursor);
     }
 
     self->const_count = n_constants;
@@ -283,7 +283,7 @@
     }
 
     for (i = 0; i < ct->const_count; ++i) {
-        PackFile_Constant *constant = ct->constants[i];
+        PackFile_Constant *constant = &ct->constants[i];
 
         switch (type) {
           case PFC_STRING:

Modified: trunk/src/pbc_merge.c
==============================================================================
--- trunk/src/pbc_merge.c	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/src/pbc_merge.c	Tue Aug  3 05:51:00 2010	(r48277)
@@ -374,7 +374,7 @@
                     ARGMOD(PackFile_ByteCode *bc))
 {
     ASSERT_ARGS(pbc_merge_constants)
-    PackFile_Constant   **constants = mem_gc_allocate_typed(interp, PackFile_Constant *);
+    PackFile_Constant   *constants = mem_gc_allocate_typed(interp, PackFile_Constant);
 
     opcode_t cursor           = 0;
     opcode_t output_const_num = 0;
@@ -411,14 +411,13 @@
         /* Allocate space for the constant list, provided we have some. */
         if (in_seg->const_count > 0)
             constants = mem_gc_realloc_n_typed(interp, constants,
-                    cursor + in_seg->const_count, PackFile_Constant*);
+                    cursor + in_seg->const_count, PackFile_Constant);
 
         /* Loop over the constants and copy them to the output PBC. */
         for (j = 0; j < in_seg->const_count; ++j) {
-            /* Get the entry and allocate space for copy. */
-            PackFile_Constant *cur_entry = in_seg->constants[j];
-            PackFile_Constant *copy      = mem_gc_allocate_typed(interp,
-                    PackFile_Constant);
+            /* Get the entry and the copy. */
+            PackFile_Constant *cur_entry = &in_seg->constants[j];
+            PackFile_Constant *copy      = &constants[cursor];
             STRUCT_COPY(copy, cur_entry);
 
             /* If it's a sub PMC, need to deal with offsets. */
@@ -442,8 +441,6 @@
             ++input_const_num;
             ++output_const_num;
 
-            /* Slot it into the list. */
-            constants[cursor] = copy;
             ++cursor;
         }
     }
@@ -677,7 +674,7 @@
                 op_num == PARROT_OP_get_params_pc  ||
                 op_num == PARROT_OP_set_returns_pc) {
             /* Get the signature. */
-            PMC * const sig = bc->const_table->constants[op_ptr[1]]->u.key;
+            PMC * const sig = bc->const_table->constants[op_ptr[1]].u.key;
 
             /* Loop over the arguments to locate any that need a fixup. */
             const int sig_items = VTABLE_elements(interp, sig);

Modified: trunk/src/pmc/callcontext.pmc
==============================================================================
--- trunk/src/pmc/callcontext.pmc	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/src/pmc/callcontext.pmc	Tue Aug  3 05:51:00 2010	(r48277)
@@ -447,7 +447,7 @@
     ATTR PMC      *current_sig;           /* temporary CallContext PMC for active call */
 
     /* deref the constants - we need it all the time */
-    ATTR struct PackFile_Constant **constants;
+    ATTR struct PackFile_Constant *constants;
 
     ATTR INTVAL                 current_HLL;     /* see also src/hll.c */
 

Modified: trunk/src/pmc/eval.pmc
==============================================================================
--- trunk/src/pmc/eval.pmc	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/src/pmc/eval.pmc	Tue Aug  3 05:51:00 2010	(r48277)
@@ -71,7 +71,7 @@
                     if (e->type == enum_fixup_sub) {
                         opcode_t  ci             = e->offset;
 
-                        ct->constants[ci]->u.key = NULL;
+                        ct->constants[ci].u.key = NULL;
                         e->type                  = 0;
                     }
                 }
@@ -106,7 +106,7 @@
                         opcode_t ci = e->offset;
 
                         if (n++ == idx)
-                            return ct->constants[ci]->u.key;
+                            return ct->constants[ci].u.key;
                     }
                 }
             }
@@ -138,7 +138,7 @@
 
                     if (e->type == enum_fixup_sub) {
                         opcode_t  ci  = e->offset;
-                        PMC      *sub = ct->constants[ci]->u.key;
+                        PMC      *sub = ct->constants[ci].u.key;
 
                         Parrot_gc_mark_PMC_alive(interp, sub);
                     }

Modified: trunk/src/pmc/imageio.pmc
==============================================================================
--- trunk/src/pmc/imageio.pmc	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/src/pmc/imageio.pmc	Tue Aug  3 05:51:00 2010	(r48277)
@@ -604,8 +604,7 @@
     VTABLE INTVAL shift_integer()
     {
         opcode_t *pos = GET_VISIT_CURSOR(SELF);
-        INTVAL    i   = PF_fetch_integer(PARROT_IMAGEIO(SELF)->pf,
-                (const opcode_t **)&pos);
+        INTVAL    i   = PF_fetch_integer(PARROT_IMAGEIO(SELF)->pf, &pos);
         SET_VISIT_CURSOR(SELF, (char *)pos);
         BYTECODE_SHIFT_OK(SELF);
         return i;
@@ -624,8 +623,7 @@
 
     VTABLE FLOATVAL shift_float() {
         opcode_t *pos = GET_VISIT_CURSOR(SELF);
-        FLOATVAL  f   = PF_fetch_number(PARROT_IMAGEIO(SELF)->pf,
-                (const opcode_t **)&pos);
+        FLOATVAL  f   = PF_fetch_number(PARROT_IMAGEIO(SELF)->pf, &pos);
         SET_VISIT_CURSOR(SELF, (char *)pos);
         BYTECODE_SHIFT_OK(SELF);
         return f;
@@ -648,12 +646,12 @@
             INTVAL i                   = STATICSELF.shift_integer();
 
             if (i >= 0) {
-                if (! table->constants[i])
+                if (!table->constants[i].type)
                     Parrot_ex_throw_from_c_args(interp, NULL,
                             EXCEPTION_MALFORMED_PACKFILE,
                             "Reference to constant not yet unpacked %d", i);
-                return table->constants[i]->u.string;
-        }
+                return table->constants[i].u.string;
+            }
 
             /* XXX
              * only got here because constant table doesn't contain the string
@@ -663,8 +661,7 @@
 
         {
             opcode_t *pos = GET_VISIT_CURSOR(SELF);
-            STRING   *s   = PF_fetch_string(INTERP, PARROT_IMAGEIO(SELF)->pf,
-                                               (const opcode_t **)&pos);
+            STRING   *s   = PF_fetch_string(INTERP, PARROT_IMAGEIO(SELF)->pf, &pos);
             SET_VISIT_CURSOR(SELF, (char *)pos);
             BYTECODE_SHIFT_OK(SELF);
             return s;

Modified: trunk/src/pmc/packfileconstanttable.pmc
==============================================================================
--- trunk/src/pmc/packfileconstanttable.pmc	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/src/pmc/packfileconstanttable.pmc	Tue Aug  3 05:51:00 2010	(r48277)
@@ -92,7 +92,6 @@
                 PARROT_PACKFILECONSTANTTABLE(SELF);
         const PackFile_ConstTable * const table =
                 (const PackFile_ConstTable *)(pointer);
-        const PackFile_Constant * val;
         opcode_t i;
 
         /* Preallocate required amount of memory */
@@ -100,7 +99,7 @@
         VTABLE_set_integer_native(INTERP, attrs->types, table->const_count);
 
         for (i = 0; i < table->const_count; ++i) {
-            val = table->constants[i];
+            const PackFile_Constant * val = &table->constants[i];
             switch (val->type) {
               case PFC_NONE:
                 break;
@@ -141,10 +140,10 @@
         /* Copy all constanst with respect of type */
         pftable->const_count = VTABLE_get_integer(INTERP, attrs->constants);
         pftable->constants   = mem_gc_allocate_n_typed(INTERP,
-                pftable->const_count, PackFile_Constant*);
+                pftable->const_count, PackFile_Constant);
 
         for (i = 0; i < pftable->const_count; ++i) {
-            PackFile_Constant * const value = PackFile_Constant_new(INTERP);
+            PackFile_Constant * const value = &pftable->constants[i];
             value->type = VTABLE_get_integer_keyed_int(INTERP, attrs->types, i);
             switch (value->type) {
               case PFC_NONE:
@@ -167,8 +166,6 @@
                         EXCEPTION_MALFORMED_PACKFILE,
                         "Unknown PackFile constant type: %d", value->type);
             }
-
-            pftable->constants[i] = value;
         }
 
         return pftable;

Modified: trunk/src/pmc/sub.pmc
==============================================================================
--- trunk/src/pmc/sub.pmc	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/src/pmc/sub.pmc	Tue Aug  3 05:51:00 2010	(r48277)
@@ -863,7 +863,7 @@
             /* If the first instruction is a get_params... */
             if (*pc == PARROT_OP_get_params_pc) {
                 /* Get the signature (the next thing in the bytecode). */
-                PMC * const sig = PF_CONST(sub->seg, *(++pc))->u.key;
+                PMC * const sig = PF_CONST(sub->seg, *(++pc)).u.key;
 
                 /* Iterate over the signature and compute argument counts. */
                 const INTVAL sig_length = VTABLE_elements(INTERP, sig);

Modified: trunk/src/pmc_freeze.c
==============================================================================
--- trunk/src/pmc_freeze.c	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/src/pmc_freeze.c	Tue Aug  3 05:51:00 2010	(r48277)
@@ -174,7 +174,7 @@
 
 /*
 
-=item C<PMC* Parrot_thaw(PARROT_INTERP, STRING *image)>
+=item C<PMC * Parrot_thaw(PARROT_INTERP, STRING *image)>
 
 Thaws a PMC.  Called from the C<thaw> opcode.
 

Modified: trunk/src/runcore/trace.c
==============================================================================
--- trunk/src/runcore/trace.c	Tue Aug  3 05:31:38 2010	(r48276)
+++ trunk/src/runcore/trace.c	Tue Aug  3 05:51:00 2010	(r48277)
@@ -313,7 +313,7 @@
     ||  *pc == PARROT_OP_get_results_pc
     ||  *pc == PARROT_OP_get_params_pc
     ||  *pc == PARROT_OP_set_returns_pc) {
-        sig = interp->code->const_table->constants[pc[1]]->u.key;
+        sig = interp->code->const_table->constants[pc[1]].u.key;
 
         if (!sig)
             Parrot_ex_throw_from_c_args(interp, NULL, 1,


More information about the parrot-commits mailing list