[svn:parrot] r46235 - in branches/codestring: . compilers/data_json compilers/imcc compilers/pct compilers/pge compilers/tge config/auto/sizes config/auto/zlib config/gen/makefiles docs docs/book/draft docs/book/pct docs/book/pir docs/dev docs/pdds editor examples/embed examples/languages/abc examples/languages/squaak examples/pge ext/nqp-rx ext/nqp-rx/src/stage0 include/parrot lib/Parrot lib/Parrot/Configure/Step lib/Parrot/Pmc2c ports/cygwin ports/debian ports/fedora/2.3.0 ports/suse/2.2.0 runtime/parrot/languages runtime/parrot/library runtime/parrot/library/Archive runtime/parrot/library/Math runtime/parrot/library/TAP src src/call src/dynpmc src/gc src/interp src/io src/packfile src/pmc src/runcore src/string src/string/charset src/string/encoding t/compilers/tge t/library t/native_pbc t/oo t/pmc t/src t/steps/init/hints tools/build tools/dev tools/docs tools/util

coke at svn.parrot.org coke at svn.parrot.org
Mon May 3 14:39:38 UTC 2010


Author: coke
Date: Mon May  3 14:39:34 2010
New Revision: 46235
URL: https://trac.parrot.org/parrot/changeset/46235

Log:
merge changes from trunk

Added:
   branches/codestring/runtime/parrot/library/Archive/Tar.pir
      - copied unchanged from r46234, trunk/runtime/parrot/library/Archive/Tar.pir
   branches/codestring/src/pmc/imageiostrings.pmc
      - copied unchanged from r46234, trunk/src/pmc/imageiostrings.pmc
   branches/codestring/src/pmc/threadinterpreter.pmc
      - copied unchanged from r46234, trunk/src/pmc/threadinterpreter.pmc
   branches/codestring/t/pmc/imageiostrings.t
      - copied unchanged from r46234, trunk/t/pmc/imageiostrings.t
Replaced:
   branches/codestring/src/pmc/parrotthread.pmc
      - copied unchanged from r46234, trunk/src/pmc/parrotthread.pmc
Deleted:
   branches/codestring/runtime/parrot/library/Archive/TAR.pir
   branches/codestring/src/pmc/parrotrunningthread.pmc
   branches/codestring/t/pmc/parrotrunningthread.t
   branches/codestring/tools/docs/book-to-latex.pl
Modified:
   branches/codestring/   (props changed)
   branches/codestring/DEPRECATED.pod
   branches/codestring/MANIFEST
   branches/codestring/MANIFEST.SKIP
   branches/codestring/PBC_COMPAT
   branches/codestring/compilers/data_json/Rules.mak   (props changed)
   branches/codestring/compilers/imcc/Rules.in   (props changed)
   branches/codestring/compilers/imcc/pbc.c
   branches/codestring/compilers/pct/Rules.mak   (props changed)
   branches/codestring/compilers/pge/Rules.mak   (props changed)
   branches/codestring/compilers/tge/Rules.mak   (props changed)
   branches/codestring/config/auto/sizes/intval_maxmin_c.in   (props changed)
   branches/codestring/config/auto/zlib/   (props changed)
   branches/codestring/config/gen/makefiles/docs.in
   branches/codestring/config/gen/makefiles/root.in
   branches/codestring/docs/book/draft/README   (props changed)
   branches/codestring/docs/book/draft/appa_glossary.pod   (props changed)
   branches/codestring/docs/book/draft/appb_patch_submission.pod   (props changed)
   branches/codestring/docs/book/draft/appc_command_line_options.pod   (props changed)
   branches/codestring/docs/book/draft/appd_build_options.pod   (props changed)
   branches/codestring/docs/book/draft/appe_source_code.pod   (props changed)
   branches/codestring/docs/book/draft/ch01_introduction.pod   (props changed)
   branches/codestring/docs/book/draft/ch02_getting_started.pod   (props changed)
   branches/codestring/docs/book/draft/ch07_dynpmcs.pod   (props changed)
   branches/codestring/docs/book/draft/ch08_dynops.pod   (props changed)
   branches/codestring/docs/book/draft/ch10_opcode_reference.pod   (props changed)
   branches/codestring/docs/book/draft/ch11_directive_reference.pod   (props changed)
   branches/codestring/docs/book/draft/ch12_operator_reference.pod   (props changed)
   branches/codestring/docs/book/draft/chXX_hlls.pod   (props changed)
   branches/codestring/docs/book/draft/chXX_library.pod   (props changed)
   branches/codestring/docs/book/draft/chXX_testing_and_debugging.pod   (props changed)
   branches/codestring/docs/book/pct/ch01_introduction.pod   (props changed)
   branches/codestring/docs/book/pct/ch02_getting_started.pod   (props changed)
   branches/codestring/docs/book/pct/ch03_compiler_tools.pod   (props changed)
   branches/codestring/docs/book/pct/ch04_pge.pod   (props changed)
   branches/codestring/docs/book/pct/ch05_nqp.pod   (props changed)
   branches/codestring/docs/book/pir/ch04_variables.pod
   branches/codestring/docs/dev/c_functions.pod   (props changed)
   branches/codestring/docs/embed.pod
   branches/codestring/docs/pdds/pdd30_install.pod   (props changed)
   branches/codestring/editor/pir-mode.el
   branches/codestring/examples/embed/cotorra.c   (props changed)
   branches/codestring/examples/languages/abc/   (props changed)
   branches/codestring/examples/languages/squaak/   (props changed)
   branches/codestring/examples/pge/demo.pir   (props changed)
   branches/codestring/ext/nqp-rx/Rules.mak   (props changed)
   branches/codestring/ext/nqp-rx/src/stage0/HLL-s0.pir
   branches/codestring/ext/nqp-rx/src/stage0/NQP-s0.pir
   branches/codestring/ext/nqp-rx/src/stage0/P6Regex-s0.pir
   branches/codestring/ext/nqp-rx/src/stage0/Regex-s0.pir
   branches/codestring/include/parrot/call.h   (props changed)
   branches/codestring/include/parrot/gc_api.h   (props changed)
   branches/codestring/include/parrot/interpreter.h
   branches/codestring/include/parrot/packfile.h
   branches/codestring/include/parrot/pmc_freeze.h
   branches/codestring/include/parrot/runcore_api.h   (props changed)
   branches/codestring/include/parrot/runcore_profiling.h   (props changed)
   branches/codestring/include/parrot/runcore_trace.h   (props changed)
   branches/codestring/include/parrot/thr_windows.h
   branches/codestring/include/parrot/thread.h
   branches/codestring/lib/Parrot/Configure/Step/Test.pm   (props changed)
   branches/codestring/lib/Parrot/H2inc.pm   (props changed)
   branches/codestring/lib/Parrot/Pmc2c/Attribute.pm
   branches/codestring/ports/cygwin/parrot-1.0.0-1.cygport   (props changed)
   branches/codestring/ports/debian/libparrot-dev.install.in   (props changed)
   branches/codestring/ports/debian/libparrot.install.in   (props changed)
   branches/codestring/ports/debian/parrot-doc.install.in   (props changed)
   branches/codestring/ports/debian/parrot.install.in   (props changed)
   branches/codestring/ports/fedora/2.3.0/   (props changed)
   branches/codestring/ports/suse/2.2.0/   (props changed)
   branches/codestring/runtime/parrot/languages/   (props changed)
   branches/codestring/runtime/parrot/library/Math/Rand.pir   (props changed)
   branches/codestring/runtime/parrot/library/Rules.mak   (props changed)
   branches/codestring/runtime/parrot/library/TAP/Harness.pir
   branches/codestring/runtime/parrot/library/distutils.pir
   branches/codestring/runtime/parrot/library/osutils.pir
   branches/codestring/src/call/args.c
   branches/codestring/src/call/context.c
   branches/codestring/src/call/ops.c   (props changed)
   branches/codestring/src/call/pcc.c   (props changed)
   branches/codestring/src/datatypes.c
   branches/codestring/src/debug.c
   branches/codestring/src/dynpmc/   (props changed)
   branches/codestring/src/dynpmc/Rules.in
   branches/codestring/src/dynpmc/gziphandle.pmc
   branches/codestring/src/embed.c
   branches/codestring/src/exceptions.c
   branches/codestring/src/frame_builder.c
   branches/codestring/src/gc/alloc_memory.c   (props changed)
   branches/codestring/src/gc/alloc_resources.c   (contents, props changed)
   branches/codestring/src/gc/api.c   (props changed)
   branches/codestring/src/gc/gc_ms.c
   branches/codestring/src/gc/malloc.c   (contents, props changed)
   branches/codestring/src/gc/malloc_trace.c   (contents, props changed)
   branches/codestring/src/gc/mark_sweep.c   (contents, props changed)
   branches/codestring/src/gc/system.c   (contents, props changed)
   branches/codestring/src/hash.c
   branches/codestring/src/hll.c
   branches/codestring/src/interp/inter_cb.c   (props changed)
   branches/codestring/src/interp/inter_create.c   (contents, props changed)
   branches/codestring/src/interp/inter_misc.c   (contents, props changed)
   branches/codestring/src/io/buffer.c
   branches/codestring/src/io/core.c
   branches/codestring/src/io/socket_unix.c
   branches/codestring/src/io/socket_win32.c
   branches/codestring/src/io/utf8.c
   branches/codestring/src/library.c
   branches/codestring/src/longopt.c
   branches/codestring/src/main.c
   branches/codestring/src/misc.c
   branches/codestring/src/multidispatch.c
   branches/codestring/src/nci_test.c
   branches/codestring/src/oo.c
   branches/codestring/src/packdump.c
   branches/codestring/src/packfile.c
   branches/codestring/src/packfile/pf_items.c
   branches/codestring/src/packout.c
   branches/codestring/src/pbc_dump.c
   branches/codestring/src/pbc_merge.c
   branches/codestring/src/pmc/callcontext.pmc
   branches/codestring/src/pmc/class.pmc
   branches/codestring/src/pmc/complex.pmc
   branches/codestring/src/pmc/default.pmc
   branches/codestring/src/pmc/env.pmc
   branches/codestring/src/pmc/eval.pmc
   branches/codestring/src/pmc/exception.pmc
   branches/codestring/src/pmc/exceptionhandler.pmc
   branches/codestring/src/pmc/exporter.pmc
   branches/codestring/src/pmc/fixedbooleanarray.pmc
   branches/codestring/src/pmc/fixedintegerarray.pmc
   branches/codestring/src/pmc/fixedpmcarray.pmc
   branches/codestring/src/pmc/fixedstringarray.pmc
   branches/codestring/src/pmc/float.pmc
   branches/codestring/src/pmc/hashiterator.pmc
   branches/codestring/src/pmc/imageio.pmc
   branches/codestring/src/pmc/imageiosize.pmc
   branches/codestring/src/pmc/integer.pmc
   branches/codestring/src/pmc/namespace.pmc
   branches/codestring/src/pmc/nci.pmc
   branches/codestring/src/pmc/object.pmc
   branches/codestring/src/pmc/oplib.pmc
   branches/codestring/src/pmc/orderedhashiterator.pmc
   branches/codestring/src/pmc/parrotinterpreter.pmc
   branches/codestring/src/pmc/pmcproxy.pmc
   branches/codestring/src/pmc/resizablepmcarray.pmc
   branches/codestring/src/pmc/resizablestringarray.pmc
   branches/codestring/src/pmc/role.pmc
   branches/codestring/src/pmc/scalar.pmc
   branches/codestring/src/pmc/scheduler.pmc
   branches/codestring/src/pmc/string.pmc
   branches/codestring/src/pmc/sub.pmc
   branches/codestring/src/pmc/task.pmc
   branches/codestring/src/pmc_freeze.c
   branches/codestring/src/runcore/cores.c   (contents, props changed)
   branches/codestring/src/runcore/main.c   (props changed)
   branches/codestring/src/runcore/profiling.c   (contents, props changed)
   branches/codestring/src/runcore/trace.c   (contents, props changed)
   branches/codestring/src/scheduler.c
   branches/codestring/src/spf_render.c
   branches/codestring/src/spf_vtable.c
   branches/codestring/src/string/api.c
   branches/codestring/src/string/charset.c
   branches/codestring/src/string/charset/ascii.c
   branches/codestring/src/string/charset/iso-8859-1.c
   branches/codestring/src/string/encoding.c
   branches/codestring/src/string/encoding/fixed_8.c
   branches/codestring/src/string/encoding/ucs2.c
   branches/codestring/src/string/encoding/utf16.c
   branches/codestring/src/string/encoding/utf8.c
   branches/codestring/src/sub.c
   branches/codestring/src/thread.c
   branches/codestring/src/utils.c
   branches/codestring/src/vtables.c
   branches/codestring/t/compilers/tge/NoneGrammar.tg   (props changed)
   branches/codestring/t/library/archive_tar.t
   branches/codestring/t/library/osutils.t
   branches/codestring/t/native_pbc/annotations.pbc
   branches/codestring/t/native_pbc/integer_1.pbc
   branches/codestring/t/native_pbc/number_1.pbc
   branches/codestring/t/native_pbc/string_1.pbc
   branches/codestring/t/oo/root_new.t   (props changed)
   branches/codestring/t/pmc/namespace-old.t   (props changed)
   branches/codestring/t/pmc/parrotthread.t
   branches/codestring/t/pmc/threads.t
   branches/codestring/t/src/embed.t   (contents, props changed)
   branches/codestring/t/steps/init/hints/linux-01.t   (props changed)
   branches/codestring/tools/build/h2inc.pl   (props changed)
   branches/codestring/tools/dev/fetch_languages.pl   (props changed)
   branches/codestring/tools/dev/mk_gitignore.pl   (props changed)
   branches/codestring/tools/docs/filename_and_chapter.pl
   branches/codestring/tools/util/perlcritic-cage.conf   (props changed)

Modified: branches/codestring/DEPRECATED.pod
==============================================================================
--- branches/codestring/DEPRECATED.pod	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/DEPRECATED.pod	Mon May  3 14:39:34 2010	(r46235)
@@ -127,6 +127,13 @@
 
 L<http://trac.parrot.org/parrot/ticket/1506>
 
+=item Method lower on String [eligible in 3.1]
+
+Use the downcase opcode or subclass with a method name consistent with your
+HLL.
+
+L<http://trac.parrot.org/parrot/ticket/1606>
+
 =back
 
 =head1 Opcodes
@@ -428,6 +435,18 @@
 
 =back
 
+=head1 Experimental
+
+=over 4
+
+=item Threads and Parallelism
+
+L<https://trac.parrot.org/parrot/ticket/1601>
+
+All threads and parallelism constructs are experimental
+
+=back
+
 =head1 Footnotes
 
 =over 4

Modified: branches/codestring/MANIFEST
==============================================================================
--- branches/codestring/MANIFEST	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/MANIFEST	Mon May  3 14:39:34 2010	(r46235)
@@ -1,7 +1,7 @@
 # ex: set ro:
 # $Id$
 #
-# generated by tools/dev/mk_manifest_and_skip.pl Thu Apr 29 20:55:15 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Mon May  3 05:14:11 2010 UT
 #
 # See below for documentation on the format of this file.
 #
@@ -1124,7 +1124,7 @@
 runtime/parrot/include/hllmacros.pir                        [library]
 runtime/parrot/include/test_more.pir                        [library]
 runtime/parrot/languages/parrot/parrot.pir                  [library]
-runtime/parrot/library/Archive/TAR.pir                      [library]
+runtime/parrot/library/Archive/Tar.pir                      [library]
 runtime/parrot/library/CGI/QueryHash.pir                    [library]
 runtime/parrot/library/Config/JSON.pir                      [library]
 runtime/parrot/library/Configure/genfile.pir                [library]
@@ -1352,6 +1352,7 @@
 src/pmc/hashiteratorkey.pmc                                 []
 src/pmc/imageio.pmc                                         []
 src/pmc/imageiosize.pmc                                     []
+src/pmc/imageiostrings.pmc                                  []
 src/pmc/integer.pmc                                         []
 src/pmc/iterator.pmc                                        []
 src/pmc/key.pmc                                             []
@@ -1380,7 +1381,6 @@
 src/pmc/packfilesegment.pmc                                 []
 src/pmc/parrotinterpreter.pmc                               []
 src/pmc/parrotlibrary.pmc                                   []
-src/pmc/parrotrunningthread.pmc                             []
 src/pmc/parrotthread.pmc                                    []
 src/pmc/pmc.num                                             []
 src/pmc/pmcproxy.pmc                                        []
@@ -1401,6 +1401,7 @@
 src/pmc/stringiterator.pmc                                  []
 src/pmc/sub.pmc                                             []
 src/pmc/task.pmc                                            []
+src/pmc/threadinterpreter.pmc                               []
 src/pmc/timer.pmc                                           []
 src/pmc/undef.pmc                                           []
 src/pmc/unmanagedstruct.pmc                                 []
@@ -1824,6 +1825,7 @@
 t/pmc/hashiteratorkey.t                                     [test]
 t/pmc/imageio.t                                             [test]
 t/pmc/imageiosize.t                                         [test]
+t/pmc/imageiostrings.t                                      [test]
 t/pmc/integer.t                                             [test]
 t/pmc/io.t                                                  [test]
 t/pmc/io_iterator.t                                         [test]
@@ -1863,7 +1865,6 @@
 t/pmc/parrotio.t                                            [test]
 t/pmc/parrotlibrary.t                                       [test]
 t/pmc/parrotobject.t                                        [test]
-t/pmc/parrotrunningthread.t                                 [test]
 t/pmc/parrotthread.t                                        [test]
 t/pmc/pmc.t                                                 [test]
 t/pmc/pmcproxy.t                                            [test]
@@ -2120,7 +2121,6 @@
 tools/dev/vgp_darwin                                        []
 tools/dev/vms-patch                                         []
 tools/dev/vtablize.pl                                       []
-tools/docs/book-to-latex.pl                                 []
 tools/docs/filename_and_chapter.pl                          []
 tools/docs/mk_chm.pl                                        []
 tools/docs/ops_summary.pl                                   []

Modified: branches/codestring/MANIFEST.SKIP
==============================================================================
--- branches/codestring/MANIFEST.SKIP	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/MANIFEST.SKIP	Mon May  3 14:39:34 2010	(r46235)
@@ -1,6 +1,6 @@
 # ex: set ro:
 # $Id$
-# generated by tools/dev/mk_manifest_and_skip.pl Thu Apr 29 08:12:30 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Sat May  1 17:14:25 2010 UT
 #
 # This file should contain a transcript of the svn:ignore properties
 # of the directories in the Parrot subversion repository. (Needed for
@@ -725,6 +725,8 @@
 ^src/dynpmc/.*\.ilk/
 ^src/dynpmc/.*\.lib$
 ^src/dynpmc/.*\.lib/
+^src/dynpmc/.*\.mak$
+^src/dynpmc/.*\.mak/
 ^src/dynpmc/.*\.manifest$
 ^src/dynpmc/.*\.manifest/
 ^src/dynpmc/.*\.o$

Modified: branches/codestring/PBC_COMPAT
==============================================================================
--- branches/codestring/PBC_COMPAT	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/PBC_COMPAT	Mon May  3 14:39:34 2010	(r46235)
@@ -27,6 +27,8 @@
 
 # please insert tab separated entries at the top of the list
 
+6.12	2010.05.02	plobsing	store constant PMC strings as top level constant strings    
+6.11	2010.04.29	tewk	remove ParrotRunningThread
 6.10	2010.04.29	NotFound	packfiledebug.pmc
 6.9	2010.04.27	bacek	remove deprecated in-place string ops (bitwise, charset, case change)
 6.8	2010.04.27	bacek	remove deprecated in-place substr ops

Modified: branches/codestring/compilers/imcc/pbc.c
==============================================================================
--- branches/codestring/compilers/imcc/pbc.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/compilers/imcc/pbc.c	Mon May  3 14:39:34 2010	(r46235)
@@ -6,6 +6,7 @@
 #include "imc.h"
 #include "pbc.h"
 #include "parrot/packfile.h"
+#include "parrot/pmc_freeze.h"
 #include "pmc/pmc_sub.h"
 #include "pmc/pmc_callcontext.h"
 
@@ -78,7 +79,7 @@
         FUNC_MODIFIES(*r);
 
 PARROT_WARN_UNUSED_RESULT
-static int add_const_str(PARROT_INTERP, ARGIN(const SymReg *r))
+static int add_const_str(PARROT_INTERP, ARGIN(STRING *s))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
@@ -222,7 +223,7 @@
     , PARROT_ASSERT_ARG(r))
 #define ASSERT_ARGS_add_const_str __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(r))
+    , PARROT_ASSERT_ARG(s))
 #define ASSERT_ARGS_add_const_table __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_add_const_table_key __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -832,7 +833,7 @@
                     interp->code->base.data[addr] = op;
 
                     if (nam->color < 0)
-                        nam->color = add_const_str(interp, nam);
+                        nam->color = add_const_str(interp, IMCC_string_from_reg(interp, nam));
 
                     interp->code->base.data[addr+2] = nam->color;
 
@@ -968,7 +969,7 @@
 
 /*
 
-=item C<static int add_const_str(PARROT_INTERP, const SymReg *r)>
+=item C<static int add_const_str(PARROT_INTERP, STRING *s)>
 
 Adds a constant string to constant_table.
 
@@ -978,23 +979,23 @@
 
 PARROT_WARN_UNUSED_RESULT
 static int
-add_const_str(PARROT_INTERP, ARGIN(const SymReg *r))
+add_const_str(PARROT_INTERP, ARGIN(STRING *s))
 {
     ASSERT_ARGS(add_const_str)
 
     PackFile_ConstTable *table = interp->code->const_table;
-    STRING * const       s     = IMCC_string_from_reg(interp, r);
     int i;
 
     for (i = 0; i < table->const_count; ++i) {
         PackFile_Constant * const constant = table->constants[i];
         if (constant->type == PFC_STRING) {
             STRING * const sc = constant->u.string;
-            if (Parrot_charset_number_of_str(interp, s)
+            if (Parrot_str_equal(interp, s, sc)
+            &&  Parrot_charset_number_of_str(interp, s)
             ==  Parrot_charset_number_of_str(interp, sc)
             &&  Parrot_encoding_number_of_str(interp, s)
             ==  Parrot_encoding_number_of_str(interp, sc)
-            &&  Parrot_str_equal(interp, s, sc)) {
+            ) {
                 return i;
             }
         }
@@ -1082,10 +1083,9 @@
                 sig_pmc = Parrot_pmc_new(interp, enum_class_String);
                 VTABLE_set_string_native(interp, sig_pmc, type_name);
             }
-            else {
-                sig_pmc = Parrot_pmc_new(interp, enum_class_Integer);
-                VTABLE_set_integer_native(interp, sig_pmc, type_num);
-            }
+            else
+                sig_pmc = Parrot_pmc_new_init_int(interp,
+                        enum_class_Integer, type_num);
         }
         else {
             PARROT_ASSERT(r->set == 'K');
@@ -1265,9 +1265,7 @@
     PMC                   *sub_pmc;
     Parrot_Sub_attributes *sub, *outer_sub;
 
-    const int            k            = add_const_table(interp);
     PackFile_ConstTable * const ct    = interp->code->const_table;
-    PackFile_Constant   * const pfc   = ct->constants[k];
     IMC_Unit            * const unit  =
         IMCC_INFO(interp)->globals->cs->subs->unit;
 
@@ -1278,8 +1276,6 @@
     int                  i;
     int                  ns_const = -1;
 
-    IMCC_INFO(interp)->globals->cs->subs->pmc_const = k;
-
     if (unit->_namespace) {
         /* strip namespace off from front */
         const char *real_name = strrchr(r->name, '@');
@@ -1329,7 +1325,7 @@
     PMC_get_sub(interp, sub_pmc, sub);
     Sub_comp_get_FLAGS(sub) |= (r->pcc_sub->pragma & SUB_COMP_FLAG_MASK);
 
-    r->color  = add_const_str(interp, r);
+    r->color  = add_const_str(interp, IMCC_string_from_reg(interp, r));
     sub->name = ct->constants[r->color]->u.string;
 
     /* If the unit has no subid, set the subid to match the name. */
@@ -1343,7 +1339,7 @@
         mem_sys_free(oldname);
 
         /* create string constant for it. */
-        unit->subid->color = add_const_str(interp, unit->subid);
+        unit->subid->color = add_const_str(interp, IMCC_string_from_reg(interp, unit->subid));
     }
 
     sub->subid = ct->constants[unit->subid->color]->u.string;
@@ -1445,29 +1441,49 @@
 
     Parrot_store_sub_in_namespace(interp, sub_pmc);
 
-    pfc->type     = PFC_PMC;
-    pfc->u.key    = sub_pmc;
-    unit->sub_pmc = sub_pmc;
-
     if (sub->outer_sub)
         PMC_get_sub(interp, sub->outer_sub, outer_sub);
 
-    IMCC_debug(interp, DEBUG_PBC_CONST,
-            "add_const_pmc_sub '%s' flags %x color %d (%Ss) "
-            "lex_info %s :outer(%Ss)\n",
-            r->name, r->pcc_sub->pragma, k,
-            sub_pmc->vtable->whoami,
-            sub->lex_info ? "yes" : "no",
-            sub->outer_sub? outer_sub->name :
-            Parrot_str_new(interp, "*none*", 0));
-
     /*
-     * create entry in our fixup (=symbol) table
-     * the offset is the index in the constant table of this Sub
+     * store the sub's strings
+     * XXX these need to occur before the sub to support thawing properly
      */
-    PackFile_FixupTable_new_entry(interp, r->name, enum_fixup_sub, k);
+    {
+        PMC *strings = Parrot_freeze_strings(interp, sub_pmc);
+        int n = VTABLE_elements(interp, strings);
+        for (i = 0; i < n; i++) {
+            int unused = add_const_str(interp, VTABLE_get_string_keyed_int(interp, strings, i));
+        }
+    }
 
-    return k;
+    /* store the sub */
+    {
+        const int            k            = add_const_table(interp);
+        PackFile_Constant   * const pfc   = ct->constants[k];
+
+        pfc->type     = PFC_PMC;
+        pfc->u.key    = sub_pmc;
+        unit->sub_pmc = sub_pmc;
+
+        IMCC_INFO(interp)->globals->cs->subs->pmc_const = k;
+
+        IMCC_debug(interp, DEBUG_PBC_CONST,
+                "add_const_pmc_sub '%s' flags %x color %d (%Ss) "
+                "lex_info %s :outer(%Ss)\n",
+                r->name, r->pcc_sub->pragma, k,
+                sub_pmc->vtable->whoami,
+                sub->lex_info ? "yes" : "no",
+                sub->outer_sub? outer_sub->name :
+                Parrot_str_new(interp, "*none*", 0));
+
+        /*
+         * create entry in our fixup (=symbol) table
+         * the offset is the index in the constant table of this Sub
+         */
+        PackFile_FixupTable_new_entry(interp, r->name, enum_fixup_sub, k);
+
+        return k;
+    }
 }
 
 
@@ -1875,7 +1891,7 @@
       case 'S':
         if (r->type & VT_CONSTP)
             r = r->reg;
-        r->color = add_const_str(interp, r);
+        r->color = add_const_str(interp, IMCC_string_from_reg(interp, r));
         break;
       case 'N':
         r->color = add_const_num(interp, r->name);

Modified: branches/codestring/config/gen/makefiles/docs.in
==============================================================================
--- branches/codestring/config/gen/makefiles/docs.in	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/config/gen/makefiles/docs.in	Mon May  3 14:39:34 2010	(r46235)
@@ -11,9 +11,6 @@
 PERLDOC_BIN = @perldoc@
 VERSION = @VERSION@@DEVEL@
 
-# chapters in the generated PDF parrot book
-CHAPTERS = $(PERL) ../tools/docs/filename_and_chapter.pl --b_out
-
 # long list of .pod files
 POD = @TEMP_pod@
 
@@ -54,12 +51,11 @@
 	$(PERL) -I../lib ../tools/docs/write_docs.pl --silent --version=$(VERSION)
 
 # The pdf target is to generate a parrot PDF document.
-# It will not work on Windows. It call a script which use a specific Unix
-# command. May be that will be changed.
-pdf: ../tools/docs/book-to-latex.pl ../tools/docs/filename_and_chapter.pl
+# It will not work on Windows. It use the Unix syntax to specify the
+# path of files. May be that will be changed.
+pdf: ../tools/docs/filename_and_chapter.pl
 	$(MKPATH) build/modified_pod
 	$(PERL) ../tools/docs/filename_and_chapter.pl
-	$(PERL) ../tools/docs/book-to-latex.pl `$(CHAPTERS)` > build/parrot-book.tex
 	cd build && pdflatex parrot-book.tex && pdflatex parrot-book.tex
 
 #pdf-release: build/parrot-book.pdf

Modified: branches/codestring/config/gen/makefiles/root.in
==============================================================================
--- branches/codestring/config/gen/makefiles/root.in	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/config/gen/makefiles/root.in	Mon May  3 14:39:34 2010	(r46235)
@@ -246,13 +246,14 @@
     src/parrot_config.c \
     src/null_config.c \
     src/install_config.c \
-    src/extend_vtable.c
+    src/extend_vtable.c \
+    src/extra_nci_thunks.c
 
 GEN_MODULES = \
     lib/Parrot/OpLib/core.pm
 
 GEN_LIBRARY = \
-    $(LIBRARY_DIR)/Archive/TAR.pbc \
+    $(LIBRARY_DIR)/Archive/Tar.pbc \
     $(LIBRARY_DIR)/CGI/QueryHash.pbc \
     $(LIBRARY_DIR)/Crow.pbc \
     $(LIBRARY_DIR)/config.pbc \
@@ -1819,6 +1820,7 @@
 	$(RM_F) $(FLUID_FILES_1)
 	$(RM_F) $(FLUID_FILES_2)
 	$(RM_RF) lib/Parrot/OpLib
+	$(RM_RF) runtime/parrot/languages/data_json
 	$(RM_F) $(NQP_CLEANUPS) $(PGE_CLEANUPS) $(TGE_CLEANUPS)
 	$(RM_F) $(PIRC_CLEANUPS) $(PCT_CLEANUPS) $(DATA_JSON_CLEANUPS)
 	$(RM_F) $(DYNOPLIBS_CLEANUPS) $(DYNPMC_CLEANUPS)

Modified: branches/codestring/docs/book/pir/ch04_variables.pod
==============================================================================
--- branches/codestring/docs/book/pir/ch04_variables.pod	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/docs/book/pir/ch04_variables.pod	Mon May  3 14:39:34 2010	(r46235)
@@ -972,9 +972,9 @@
 X<UTF-16 encoding>
 Parrot supports the character sets C<ascii>, C<binary>, C<iso-8859-1>
 (Latin 1), and C<unicode> and the encodings C<fixed_8>, C<ucs2>,
-C<utf8>, and C<utf18>.
+C<utf8>, and C<utf16>.
 
-The C<binary:> charset treats the string as a buffer of raw unformatted
+The C<binary> charset treats the string as a buffer of raw unformatted
 binary data. It isn't really a string per se, because binary data
 contains no readable characters. This exists to support libraries which
 manipulate binary data that doesn't easily fit into any other primitive

Modified: branches/codestring/docs/embed.pod
==============================================================================
--- branches/codestring/docs/embed.pod	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/docs/embed.pod	Mon May  3 14:39:34 2010	(r46235)
@@ -121,12 +121,6 @@
 
 =item PARROT_THR_THREAD_POOL
 
-=item PARROT_THR_TYPE_1
-
-=item PARROT_THR_TYPE_2
-
-=item PARROT_THR_TYPE_3
-
 =back
 
 See F<interpreter.h> for the definition of these flags (TODO: document flag

Modified: branches/codestring/editor/pir-mode.el
==============================================================================
--- branches/codestring/editor/pir-mode.el	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/editor/pir-mode.el	Mon May  3 14:39:34 2010	(r46235)
@@ -153,7 +153,7 @@
     "ManagedStruct" "MultiSub" "NCI" "NameSpace" "Null"
     "OS" "Object" "OrderedHash" "PMCProxy" "ParrotClass"
     "ParrotIO" "ParrotInterpreter" "ParrotLibrary" "ParrotObject"
-    "ParrotRunningThread" "ParrotThread" "Pointer"
+    "ParrotThread" "Pointer"
     "ResizableBooleanArray" "ResizableFloatArray" "ResizableIntegerArray"
     "ResizablePMCArray" "ResizableStringArray" "RetContinuation"
     "Role" "Scalar" "String" "Sub" "Super"

Modified: branches/codestring/ext/nqp-rx/src/stage0/HLL-s0.pir
==============================================================================
--- branches/codestring/ext/nqp-rx/src/stage0/HLL-s0.pir	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/ext/nqp-rx/src/stage0/HLL-s0.pir	Mon May  3 14:39:34 2010	(r46235)
@@ -854,7 +854,7 @@
 ### .include 'gen/hllgrammar-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1272455242.78413")
+.sub "_block11"  :anon :subid("10_1272816829.8573")
 .annotate "line", 0
     get_hll_global $P14, ["HLL";"Grammar"], "_block13" 
     capture_lex $P14
@@ -868,9 +868,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post103") :outer("10_1272455242.78413")
+.sub "" :load :init :subid("post103") :outer("10_1272816829.8573")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1272455242.78413" 
+    .const 'Sub' $P12 = "10_1272816829.8573" 
     .local pmc block
     set block, $P12
     $P340 = get_root_global ["parrot"], "P6metaclass"
@@ -879,84 +879,84 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block13"  :subid("11_1272455242.78413") :outer("10_1272455242.78413")
+.sub "_block13"  :subid("11_1272816829.8573") :outer("10_1272816829.8573")
 .annotate "line", 5
-    .const 'Sub' $P329 = "101_1272455242.78413" 
+    .const 'Sub' $P329 = "101_1272816829.8573" 
     capture_lex $P329
-    .const 'Sub' $P322 = "99_1272455242.78413" 
+    .const 'Sub' $P322 = "99_1272816829.8573" 
     capture_lex $P322
-    .const 'Sub' $P309 = "96_1272455242.78413" 
+    .const 'Sub' $P309 = "96_1272816829.8573" 
     capture_lex $P309
-    .const 'Sub' $P277 = "91_1272455242.78413" 
+    .const 'Sub' $P277 = "91_1272816829.8573" 
     capture_lex $P277
-    .const 'Sub' $P271 = "89_1272455242.78413" 
+    .const 'Sub' $P271 = "89_1272816829.8573" 
     capture_lex $P271
-    .const 'Sub' $P266 = "87_1272455242.78413" 
+    .const 'Sub' $P266 = "87_1272816829.8573" 
     capture_lex $P266
-    .const 'Sub' $P260 = "85_1272455242.78413" 
+    .const 'Sub' $P260 = "85_1272816829.8573" 
     capture_lex $P260
-    .const 'Sub' $P254 = "83_1272455242.78413" 
+    .const 'Sub' $P254 = "83_1272816829.8573" 
     capture_lex $P254
-    .const 'Sub' $P249 = "81_1272455242.78413" 
+    .const 'Sub' $P249 = "81_1272816829.8573" 
     capture_lex $P249
-    .const 'Sub' $P244 = "79_1272455242.78413" 
+    .const 'Sub' $P244 = "79_1272816829.8573" 
     capture_lex $P244
-    .const 'Sub' $P239 = "77_1272455242.78413" 
+    .const 'Sub' $P239 = "77_1272816829.8573" 
     capture_lex $P239
-    .const 'Sub' $P234 = "75_1272455242.78413" 
+    .const 'Sub' $P234 = "75_1272816829.8573" 
     capture_lex $P234
-    .const 'Sub' $P229 = "73_1272455242.78413" 
+    .const 'Sub' $P229 = "73_1272816829.8573" 
     capture_lex $P229
-    .const 'Sub' $P224 = "71_1272455242.78413" 
+    .const 'Sub' $P224 = "71_1272816829.8573" 
     capture_lex $P224
-    .const 'Sub' $P219 = "69_1272455242.78413" 
+    .const 'Sub' $P219 = "69_1272816829.8573" 
     capture_lex $P219
-    .const 'Sub' $P208 = "65_1272455242.78413" 
+    .const 'Sub' $P208 = "65_1272816829.8573" 
     capture_lex $P208
-    .const 'Sub' $P195 = "63_1272455242.78413" 
+    .const 'Sub' $P195 = "63_1272816829.8573" 
     capture_lex $P195
-    .const 'Sub' $P183 = "61_1272455242.78413" 
+    .const 'Sub' $P183 = "61_1272816829.8573" 
     capture_lex $P183
-    .const 'Sub' $P176 = "59_1272455242.78413" 
+    .const 'Sub' $P176 = "59_1272816829.8573" 
     capture_lex $P176
-    .const 'Sub' $P167 = "57_1272455242.78413" 
+    .const 'Sub' $P167 = "57_1272816829.8573" 
     capture_lex $P167
-    .const 'Sub' $P160 = "55_1272455242.78413" 
+    .const 'Sub' $P160 = "55_1272816829.8573" 
     capture_lex $P160
-    .const 'Sub' $P151 = "53_1272455242.78413" 
+    .const 'Sub' $P151 = "53_1272816829.8573" 
     capture_lex $P151
-    .const 'Sub' $P144 = "51_1272455242.78413" 
+    .const 'Sub' $P144 = "51_1272816829.8573" 
     capture_lex $P144
-    .const 'Sub' $P135 = "49_1272455242.78413" 
+    .const 'Sub' $P135 = "49_1272816829.8573" 
     capture_lex $P135
-    .const 'Sub' $P128 = "47_1272455242.78413" 
+    .const 'Sub' $P128 = "47_1272816829.8573" 
     capture_lex $P128
-    .const 'Sub' $P121 = "45_1272455242.78413" 
+    .const 'Sub' $P121 = "45_1272816829.8573" 
     capture_lex $P121
-    .const 'Sub' $P111 = "43_1272455242.78413" 
+    .const 'Sub' $P111 = "43_1272816829.8573" 
     capture_lex $P111
-    .const 'Sub' $P103 = "41_1272455242.78413" 
+    .const 'Sub' $P103 = "41_1272816829.8573" 
     capture_lex $P103
-    .const 'Sub' $P93 = "40_1272455242.78413" 
+    .const 'Sub' $P93 = "40_1272816829.8573" 
     capture_lex $P93
-    .const 'Sub' $P87 = "38_1272455242.78413" 
+    .const 'Sub' $P87 = "38_1272816829.8573" 
     capture_lex $P87
-    .const 'Sub' $P82 = "36_1272455242.78413" 
+    .const 'Sub' $P82 = "36_1272816829.8573" 
     capture_lex $P82
-    .const 'Sub' $P74 = "34_1272455242.78413" 
+    .const 'Sub' $P74 = "34_1272816829.8573" 
     capture_lex $P74
-    .const 'Sub' $P68 = "32_1272455242.78413" 
+    .const 'Sub' $P68 = "32_1272816829.8573" 
     capture_lex $P68
-    .const 'Sub' $P62 = "30_1272455242.78413" 
+    .const 'Sub' $P62 = "30_1272816829.8573" 
     capture_lex $P62
-    .const 'Sub' $P56 = "28_1272455242.78413" 
+    .const 'Sub' $P56 = "28_1272816829.8573" 
     capture_lex $P56
-    .const 'Sub' $P23 = "14_1272455242.78413" 
+    .const 'Sub' $P23 = "14_1272816829.8573" 
     capture_lex $P23
-    .const 'Sub' $P15 = "12_1272455242.78413" 
+    .const 'Sub' $P15 = "12_1272816829.8573" 
     capture_lex $P15
 .annotate "line", 33
-    .const 'Sub' $P329 = "101_1272455242.78413" 
+    .const 'Sub' $P329 = "101_1272816829.8573" 
     capture_lex $P329
 .annotate "line", 5
     .return ($P329)
@@ -964,7 +964,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "ws"  :subid("12_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "ws"  :subid("12_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 5
     .local string rx16_tgt
     .local int rx16_pos
@@ -1048,7 +1048,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__ws"  :subid("13_1272455242.78413") :method
+.sub "!PREFIX__ws"  :subid("13_1272816829.8573") :method
 .annotate "line", 5
     new $P18, "ResizablePMCArray"
     push $P18, ""
@@ -1057,7 +1057,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "termish"  :subid("14_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "termish"  :subid("14_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 5
     .local string rx24_tgt
     .local int rx24_pos
@@ -1067,7 +1067,7 @@
     .local pmc rx24_cur
     (rx24_cur, rx24_pos, rx24_tgt) = self."!cursor_start"()
     rx24_cur."!cursor_debug"("START ", "termish")
-    rx24_cur."!cursor_caparray"("prefixish", "postfixish")
+    rx24_cur."!cursor_caparray"("postfixish", "prefixish")
     .lex unicode:"$\x{a2}", rx24_cur
     .local pmc match
     .lex "$/", match
@@ -1149,7 +1149,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__termish"  :subid("15_1272455242.78413") :method
+.sub "!PREFIX__termish"  :subid("15_1272816829.8573") :method
 .annotate "line", 5
     new $P26, "ResizablePMCArray"
     push $P26, ""
@@ -1158,7 +1158,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "term"  :subid("16_1272455242.78413") :method
+.sub "term"  :subid("16_1272816829.8573") :method
 .annotate "line", 13
     $P33 = self."!protoregex"("term")
     .return ($P33)
@@ -1166,7 +1166,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term"  :subid("17_1272455242.78413") :method
+.sub "!PREFIX__term"  :subid("17_1272816829.8573") :method
 .annotate "line", 13
     $P35 = self."!PREFIX__!protoregex"("term")
     .return ($P35)
@@ -1174,7 +1174,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "infix"  :subid("18_1272455242.78413") :method
+.sub "infix"  :subid("18_1272816829.8573") :method
 .annotate "line", 14
     $P37 = self."!protoregex"("infix")
     .return ($P37)
@@ -1182,7 +1182,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infix"  :subid("19_1272455242.78413") :method
+.sub "!PREFIX__infix"  :subid("19_1272816829.8573") :method
 .annotate "line", 14
     $P39 = self."!PREFIX__!protoregex"("infix")
     .return ($P39)
@@ -1190,7 +1190,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "prefix"  :subid("20_1272455242.78413") :method
+.sub "prefix"  :subid("20_1272816829.8573") :method
 .annotate "line", 15
     $P41 = self."!protoregex"("prefix")
     .return ($P41)
@@ -1198,7 +1198,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefix"  :subid("21_1272455242.78413") :method
+.sub "!PREFIX__prefix"  :subid("21_1272816829.8573") :method
 .annotate "line", 15
     $P43 = self."!PREFIX__!protoregex"("prefix")
     .return ($P43)
@@ -1206,7 +1206,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postfix"  :subid("22_1272455242.78413") :method
+.sub "postfix"  :subid("22_1272816829.8573") :method
 .annotate "line", 16
     $P45 = self."!protoregex"("postfix")
     .return ($P45)
@@ -1214,7 +1214,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfix"  :subid("23_1272455242.78413") :method
+.sub "!PREFIX__postfix"  :subid("23_1272816829.8573") :method
 .annotate "line", 16
     $P47 = self."!PREFIX__!protoregex"("postfix")
     .return ($P47)
@@ -1222,7 +1222,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "circumfix"  :subid("24_1272455242.78413") :method
+.sub "circumfix"  :subid("24_1272816829.8573") :method
 .annotate "line", 17
     $P49 = self."!protoregex"("circumfix")
     .return ($P49)
@@ -1230,7 +1230,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__circumfix"  :subid("25_1272455242.78413") :method
+.sub "!PREFIX__circumfix"  :subid("25_1272816829.8573") :method
 .annotate "line", 17
     $P51 = self."!PREFIX__!protoregex"("circumfix")
     .return ($P51)
@@ -1238,7 +1238,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postcircumfix"  :subid("26_1272455242.78413") :method
+.sub "postcircumfix"  :subid("26_1272816829.8573") :method
 .annotate "line", 18
     $P53 = self."!protoregex"("postcircumfix")
     .return ($P53)
@@ -1246,7 +1246,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postcircumfix"  :subid("27_1272455242.78413") :method
+.sub "!PREFIX__postcircumfix"  :subid("27_1272816829.8573") :method
 .annotate "line", 18
     $P55 = self."!PREFIX__!protoregex"("postcircumfix")
     .return ($P55)
@@ -1254,7 +1254,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "term:sym<circumfix>"  :subid("28_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "term:sym<circumfix>"  :subid("28_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 5
     .local string rx57_tgt
     .local int rx57_pos
@@ -1312,7 +1312,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term:sym<circumfix>"  :subid("29_1272455242.78413") :method
+.sub "!PREFIX__term:sym<circumfix>"  :subid("29_1272816829.8573") :method
 .annotate "line", 5
     $P59 = self."!PREFIX__!subrule"("circumfix", "")
     new $P60, "ResizablePMCArray"
@@ -1322,7 +1322,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "infixish"  :subid("30_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "infixish"  :subid("30_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 5
     .local string rx63_tgt
     .local int rx63_pos
@@ -1380,7 +1380,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infixish"  :subid("31_1272455242.78413") :method
+.sub "!PREFIX__infixish"  :subid("31_1272816829.8573") :method
 .annotate "line", 5
     $P65 = self."!PREFIX__!subrule"("OPER=infix", "")
     new $P66, "ResizablePMCArray"
@@ -1390,7 +1390,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "prefixish"  :subid("32_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "prefixish"  :subid("32_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 5
     .local string rx69_tgt
     .local int rx69_pos
@@ -1453,7 +1453,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefixish"  :subid("33_1272455242.78413") :method
+.sub "!PREFIX__prefixish"  :subid("33_1272816829.8573") :method
 .annotate "line", 5
     $P71 = self."!PREFIX__!subrule"("OPER=prefix", "")
     new $P72, "ResizablePMCArray"
@@ -1463,7 +1463,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postfixish"  :subid("34_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "postfixish"  :subid("34_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 5
     .local string rx75_tgt
     .local int rx75_pos
@@ -1537,7 +1537,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfixish"  :subid("35_1272455242.78413") :method
+.sub "!PREFIX__postfixish"  :subid("35_1272816829.8573") :method
 .annotate "line", 5
     $P77 = self."!PREFIX__!subrule"("OPER=postcircumfix", "")
     $P78 = self."!PREFIX__!subrule"("OPER=postfix", "")
@@ -1549,7 +1549,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nullterm"  :subid("36_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "nullterm"  :subid("36_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 5
     .local string rx83_tgt
     .local int rx83_pos
@@ -1600,7 +1600,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm"  :subid("37_1272455242.78413") :method
+.sub "!PREFIX__nullterm"  :subid("37_1272816829.8573") :method
 .annotate "line", 5
     new $P85, "ResizablePMCArray"
     push $P85, ""
@@ -1609,7 +1609,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nullterm_alt"  :subid("38_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "nullterm_alt"  :subid("38_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 5
     .local string rx88_tgt
     .local int rx88_pos
@@ -1667,7 +1667,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm_alt"  :subid("39_1272455242.78413") :method
+.sub "!PREFIX__nullterm_alt"  :subid("39_1272816829.8573") :method
 .annotate "line", 5
     $P90 = self."!PREFIX__!subrule"("term", "")
     new $P91, "ResizablePMCArray"
@@ -1677,7 +1677,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nulltermish"  :subid("40_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "nulltermish"  :subid("40_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     new $P95, 'ExceptionHandler'
     set_addr $P95, control_94
@@ -1704,7 +1704,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_delimited"  :subid("41_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "quote_delimited"  :subid("41_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx104_tgt
     .local int rx104_pos
@@ -1786,7 +1786,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_delimited"  :subid("42_1272455242.78413") :method
+.sub "!PREFIX__quote_delimited"  :subid("42_1272816829.8573") :method
 .annotate "line", 33
     $P106 = self."!PREFIX__!subrule"("starter", "")
     new $P107, "ResizablePMCArray"
@@ -1796,7 +1796,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_atom"  :subid("43_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "quote_atom"  :subid("43_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx112_tgt
     .local int rx112_pos
@@ -1887,7 +1887,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_atom"  :subid("44_1272455242.78413") :method
+.sub "!PREFIX__quote_atom"  :subid("44_1272816829.8573") :method
 .annotate "line", 33
     new $P114, "ResizablePMCArray"
     push $P114, ""
@@ -1896,7 +1896,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "decint"  :subid("45_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "decint"  :subid("45_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx122_tgt
     .local int rx122_pos
@@ -1968,7 +1968,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__decint"  :subid("46_1272455242.78413") :method
+.sub "!PREFIX__decint"  :subid("46_1272816829.8573") :method
 .annotate "line", 33
     new $P124, "ResizablePMCArray"
     push $P124, ""
@@ -1977,7 +1977,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "decints"  :subid("47_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "decints"  :subid("47_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx129_tgt
     .local int rx129_pos
@@ -2061,7 +2061,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__decints"  :subid("48_1272455242.78413") :method
+.sub "!PREFIX__decints"  :subid("48_1272816829.8573") :method
 .annotate "line", 33
     new $P131, "ResizablePMCArray"
     push $P131, ""
@@ -2070,7 +2070,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "hexint"  :subid("49_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "hexint"  :subid("49_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx136_tgt
     .local int rx136_pos
@@ -2151,7 +2151,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexint"  :subid("50_1272455242.78413") :method
+.sub "!PREFIX__hexint"  :subid("50_1272816829.8573") :method
 .annotate "line", 33
     new $P138, "ResizablePMCArray"
     push $P138, ""
@@ -2160,7 +2160,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "hexints"  :subid("51_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "hexints"  :subid("51_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx145_tgt
     .local int rx145_pos
@@ -2244,7 +2244,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexints"  :subid("52_1272455242.78413") :method
+.sub "!PREFIX__hexints"  :subid("52_1272816829.8573") :method
 .annotate "line", 33
     new $P147, "ResizablePMCArray"
     push $P147, ""
@@ -2253,7 +2253,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "octint"  :subid("53_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "octint"  :subid("53_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx152_tgt
     .local int rx152_pos
@@ -2334,7 +2334,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octint"  :subid("54_1272455242.78413") :method
+.sub "!PREFIX__octint"  :subid("54_1272816829.8573") :method
 .annotate "line", 33
     new $P154, "ResizablePMCArray"
     push $P154, ""
@@ -2343,7 +2343,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "octints"  :subid("55_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "octints"  :subid("55_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx161_tgt
     .local int rx161_pos
@@ -2427,7 +2427,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octints"  :subid("56_1272455242.78413") :method
+.sub "!PREFIX__octints"  :subid("56_1272816829.8573") :method
 .annotate "line", 33
     new $P163, "ResizablePMCArray"
     push $P163, ""
@@ -2436,7 +2436,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "binint"  :subid("57_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "binint"  :subid("57_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx168_tgt
     .local int rx168_pos
@@ -2517,7 +2517,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binint"  :subid("58_1272455242.78413") :method
+.sub "!PREFIX__binint"  :subid("58_1272816829.8573") :method
 .annotate "line", 33
     new $P170, "ResizablePMCArray"
     push $P170, ""
@@ -2526,7 +2526,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "binints"  :subid("59_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "binints"  :subid("59_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx177_tgt
     .local int rx177_pos
@@ -2610,7 +2610,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binints"  :subid("60_1272455242.78413") :method
+.sub "!PREFIX__binints"  :subid("60_1272816829.8573") :method
 .annotate "line", 33
     new $P179, "ResizablePMCArray"
     push $P179, ""
@@ -2619,7 +2619,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "integer"  :subid("61_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "integer"  :subid("61_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx184_tgt
     .local int rx184_pos
@@ -2767,7 +2767,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__integer"  :subid("62_1272455242.78413") :method
+.sub "!PREFIX__integer"  :subid("62_1272816829.8573") :method
 .annotate "line", 33
     $P186 = self."!PREFIX__!subrule"("VALUE=decint", "")
     $P187 = self."!PREFIX__!subrule"("VALUE=decint", "0d")
@@ -2785,7 +2785,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "dec_number"  :subid("63_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "dec_number"  :subid("63_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx196_tgt
     .local int rx196_pos
@@ -2964,7 +2964,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__dec_number"  :subid("64_1272455242.78413") :method
+.sub "!PREFIX__dec_number"  :subid("64_1272816829.8573") :method
 .annotate "line", 33
     new $P198, "ResizablePMCArray"
     push $P198, ""
@@ -2975,7 +2975,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "escale"  :subid("65_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "escale"  :subid("65_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx209_tgt
     .local int rx209_pos
@@ -3052,7 +3052,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__escale"  :subid("66_1272455242.78413") :method
+.sub "!PREFIX__escale"  :subid("66_1272816829.8573") :method
 .annotate "line", 33
     new $P211, "ResizablePMCArray"
     push $P211, "e"
@@ -3062,7 +3062,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape"  :subid("67_1272455242.78413") :method
+.sub "quote_escape"  :subid("67_1272816829.8573") :method
 .annotate "line", 79
     $P216 = self."!protoregex"("quote_escape")
     .return ($P216)
@@ -3070,7 +3070,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape"  :subid("68_1272455242.78413") :method
+.sub "!PREFIX__quote_escape"  :subid("68_1272816829.8573") :method
 .annotate "line", 79
     $P218 = self."!PREFIX__!protoregex"("quote_escape")
     .return ($P218)
@@ -3078,7 +3078,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<backslash>"  :subid("69_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "quote_escape:sym<backslash>"  :subid("69_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx220_tgt
     .local int rx220_pos
@@ -3140,7 +3140,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<backslash>"  :subid("70_1272455242.78413") :method
+.sub "!PREFIX__quote_escape:sym<backslash>"  :subid("70_1272816829.8573") :method
 .annotate "line", 33
     new $P222, "ResizablePMCArray"
     push $P222, "\\\\"
@@ -3149,7 +3149,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<stopper>"  :subid("71_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "quote_escape:sym<stopper>"  :subid("71_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx225_tgt
     .local int rx225_pos
@@ -3218,7 +3218,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<stopper>"  :subid("72_1272455242.78413") :method
+.sub "!PREFIX__quote_escape:sym<stopper>"  :subid("72_1272816829.8573") :method
 .annotate "line", 33
     new $P227, "ResizablePMCArray"
     push $P227, "\\"
@@ -3227,7 +3227,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<bs>"  :subid("73_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "quote_escape:sym<bs>"  :subid("73_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx230_tgt
     .local int rx230_pos
@@ -3289,7 +3289,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<bs>"  :subid("74_1272455242.78413") :method
+.sub "!PREFIX__quote_escape:sym<bs>"  :subid("74_1272816829.8573") :method
 .annotate "line", 33
     new $P232, "ResizablePMCArray"
     push $P232, "\\b"
@@ -3298,7 +3298,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<nl>"  :subid("75_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "quote_escape:sym<nl>"  :subid("75_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx235_tgt
     .local int rx235_pos
@@ -3360,7 +3360,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<nl>"  :subid("76_1272455242.78413") :method
+.sub "!PREFIX__quote_escape:sym<nl>"  :subid("76_1272816829.8573") :method
 .annotate "line", 33
     new $P237, "ResizablePMCArray"
     push $P237, "\\n"
@@ -3369,7 +3369,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<cr>"  :subid("77_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "quote_escape:sym<cr>"  :subid("77_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx240_tgt
     .local int rx240_pos
@@ -3431,7 +3431,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<cr>"  :subid("78_1272455242.78413") :method
+.sub "!PREFIX__quote_escape:sym<cr>"  :subid("78_1272816829.8573") :method
 .annotate "line", 33
     new $P242, "ResizablePMCArray"
     push $P242, "\\r"
@@ -3440,7 +3440,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<tab>"  :subid("79_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "quote_escape:sym<tab>"  :subid("79_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx245_tgt
     .local int rx245_pos
@@ -3502,7 +3502,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<tab>"  :subid("80_1272455242.78413") :method
+.sub "!PREFIX__quote_escape:sym<tab>"  :subid("80_1272816829.8573") :method
 .annotate "line", 33
     new $P247, "ResizablePMCArray"
     push $P247, "\\t"
@@ -3511,7 +3511,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<ff>"  :subid("81_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "quote_escape:sym<ff>"  :subid("81_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx250_tgt
     .local int rx250_pos
@@ -3573,7 +3573,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<ff>"  :subid("82_1272455242.78413") :method
+.sub "!PREFIX__quote_escape:sym<ff>"  :subid("82_1272816829.8573") :method
 .annotate "line", 33
     new $P252, "ResizablePMCArray"
     push $P252, "\\f"
@@ -3582,7 +3582,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<hex>"  :subid("83_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "quote_escape:sym<hex>"  :subid("83_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx255_tgt
     .local int rx255_pos
@@ -3680,7 +3680,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<hex>"  :subid("84_1272455242.78413") :method
+.sub "!PREFIX__quote_escape:sym<hex>"  :subid("84_1272816829.8573") :method
 .annotate "line", 33
     new $P257, "ResizablePMCArray"
     push $P257, unicode:"\\x"
@@ -3689,7 +3689,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<oct>"  :subid("85_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "quote_escape:sym<oct>"  :subid("85_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx261_tgt
     .local int rx261_pos
@@ -3787,7 +3787,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<oct>"  :subid("86_1272455242.78413") :method
+.sub "!PREFIX__quote_escape:sym<oct>"  :subid("86_1272816829.8573") :method
 .annotate "line", 33
     new $P263, "ResizablePMCArray"
     push $P263, "\\o"
@@ -3796,7 +3796,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<chr>"  :subid("87_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "quote_escape:sym<chr>"  :subid("87_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx267_tgt
     .local int rx267_pos
@@ -3865,7 +3865,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<chr>"  :subid("88_1272455242.78413") :method
+.sub "!PREFIX__quote_escape:sym<chr>"  :subid("88_1272816829.8573") :method
 .annotate "line", 33
     new $P269, "ResizablePMCArray"
     push $P269, "\\c"
@@ -3874,7 +3874,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<0>"  :subid("89_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "quote_escape:sym<0>"  :subid("89_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx272_tgt
     .local int rx272_pos
@@ -3957,7 +3957,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<0>"  :subid("90_1272455242.78413") :method
+.sub "!PREFIX__quote_escape:sym<0>"  :subid("90_1272816829.8573") :method
 .annotate "line", 33
     new $P274, "ResizablePMCArray"
     push $P274, "\\0"
@@ -3966,13 +3966,13 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<misc>"  :subid("91_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "quote_escape:sym<misc>"  :subid("91_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
-    .const 'Sub' $P297 = "95_1272455242.78413" 
+    .const 'Sub' $P297 = "95_1272816829.8573" 
     capture_lex $P297
-    .const 'Sub' $P290 = "94_1272455242.78413" 
+    .const 'Sub' $P290 = "94_1272816829.8573" 
     capture_lex $P290
-    .const 'Sub' $P285 = "93_1272455242.78413" 
+    .const 'Sub' $P285 = "93_1272816829.8573" 
     capture_lex $P285
     .local string rx278_tgt
     .local int rx278_pos
@@ -4009,7 +4009,7 @@
     $P283 = $P282."MATCH"()
     store_lex "$/", $P283
 .annotate "line", 99
-    .const 'Sub' $P285 = "93_1272455242.78413" 
+    .const 'Sub' $P285 = "93_1272816829.8573" 
     capture_lex $P285
     $P286 = $P285()
   # rx literal  "\\"
@@ -4035,7 +4035,7 @@
 .annotate "line", 103
   # rx subrule $P290 subtype=capture negate=
     rx278_cur."!cursor_pos"(rx278_pos)
-    .const 'Sub' $P290 = "94_1272455242.78413" 
+    .const 'Sub' $P290 = "94_1272816829.8573" 
     capture_lex $P290
     $P10 = rx278_cur.$P290()
     unless $P10, rx278_fail
@@ -4069,7 +4069,7 @@
     find_lex $P294, unicode:"$\x{a2}"
     $P295 = $P294."MATCH"()
     store_lex "$/", $P295
-    .const 'Sub' $P297 = "95_1272455242.78413" 
+    .const 'Sub' $P297 = "95_1272816829.8573" 
     capture_lex $P297
     $P307 = $P297()
   alt288_end:
@@ -4115,7 +4115,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<misc>"  :subid("92_1272455242.78413") :method
+.sub "!PREFIX__quote_escape:sym<misc>"  :subid("92_1272816829.8573") :method
 .annotate "line", 33
     new $P280, "ResizablePMCArray"
     push $P280, ""
@@ -4124,14 +4124,14 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block284"  :anon :subid("93_1272455242.78413") :outer("91_1272455242.78413")
+.sub "_block284"  :anon :subid("93_1272816829.8573") :outer("91_1272816829.8573")
 .annotate "line", 99
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block289"  :anon :subid("94_1272455242.78413") :method :outer("91_1272455242.78413")
+.sub "_block289"  :anon :subid("94_1272816829.8573") :method :outer("91_1272816829.8573")
 .annotate "line", 103
     .local string rx291_tgt
     .local int rx291_pos
@@ -4186,7 +4186,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block296"  :anon :subid("95_1272455242.78413") :outer("91_1272455242.78413")
+.sub "_block296"  :anon :subid("95_1272816829.8573") :outer("91_1272816829.8573")
 .annotate "line", 104
     find_lex $P298, "$/"
     $P299 = $P298."CURSOR"()
@@ -4209,9 +4209,9 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charname"  :subid("96_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "charname"  :subid("96_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
-    .const 'Sub' $P319 = "98_1272455242.78413" 
+    .const 'Sub' $P319 = "98_1272816829.8573" 
     capture_lex $P319
     .local string rx310_tgt
     .local int rx310_pos
@@ -4289,7 +4289,7 @@
 .annotate "line", 113
   # rx subrule "before" subtype=zerowidth negate=
     rx310_cur."!cursor_pos"(rx310_pos)
-    .const 'Sub' $P319 = "98_1272455242.78413" 
+    .const 'Sub' $P319 = "98_1272816829.8573" 
     capture_lex $P319
     $P10 = rx310_cur."before"($P319)
     unless $P10, rx310_fail
@@ -4314,7 +4314,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charname"  :subid("97_1272455242.78413") :method
+.sub "!PREFIX__charname"  :subid("97_1272816829.8573") :method
 .annotate "line", 33
     $P312 = self."!PREFIX__!subrule"("integer", "")
     new $P313, "ResizablePMCArray"
@@ -4376,7 +4376,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block318"  :anon :subid("98_1272455242.78413") :method :outer("96_1272455242.78413")
+.sub "_block318"  :anon :subid("98_1272816829.8573") :method :outer("96_1272816829.8573")
 .annotate "line", 113
     .local string rx320_tgt
     .local int rx320_pos
@@ -4436,7 +4436,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charnames"  :subid("99_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "charnames"  :subid("99_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx323_tgt
     .local int rx323_pos
@@ -4520,7 +4520,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charnames"  :subid("100_1272455242.78413") :method
+.sub "!PREFIX__charnames"  :subid("100_1272816829.8573") :method
 .annotate "line", 33
     new $P325, "ResizablePMCArray"
     push $P325, ""
@@ -4529,7 +4529,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charspec"  :subid("101_1272455242.78413") :method :outer("11_1272455242.78413")
+.sub "charspec"  :subid("101_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     .local string rx330_tgt
     .local int rx330_pos
@@ -4659,7 +4659,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charspec"  :subid("102_1272455242.78413") :method
+.sub "!PREFIX__charspec"  :subid("102_1272816829.8573") :method
 .annotate "line", 33
     $P332 = self."!PREFIX__!subrule"("", "")
     $P333 = self."!PREFIX__!subrule"("charnames", "[")
@@ -4701,7 +4701,7 @@
 ### .include 'gen/hllgrammar-actions.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1272455244.05365")
+.sub "_block11"  :anon :subid("10_1272816831.39278")
 .annotate "line", 0
     get_hll_global $P14, ["HLL";"Actions"], "_block13" 
     capture_lex $P14
@@ -4715,9 +4715,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post49") :outer("10_1272455244.05365")
+.sub "" :load :init :subid("post49") :outer("10_1272816831.39278")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1272455244.05365" 
+    .const 'Sub' $P12 = "10_1272816831.39278" 
     .local pmc block
     set block, $P12
     $P572 = get_root_global ["parrot"], "P6metaclass"
@@ -4726,72 +4726,72 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block13"  :subid("11_1272455244.05365") :outer("10_1272455244.05365")
+.sub "_block13"  :subid("11_1272816831.39278") :outer("10_1272816831.39278")
 .annotate "line", 3
-    .const 'Sub' $P554 = "48_1272455244.05365" 
+    .const 'Sub' $P554 = "48_1272816831.39278" 
     capture_lex $P554
-    .const 'Sub' $P529 = "46_1272455244.05365" 
+    .const 'Sub' $P529 = "46_1272816831.39278" 
     capture_lex $P529
-    .const 'Sub' $P498 = "45_1272455244.05365" 
+    .const 'Sub' $P498 = "45_1272816831.39278" 
     capture_lex $P498
-    .const 'Sub' $P479 = "44_1272455244.05365" 
+    .const 'Sub' $P479 = "44_1272816831.39278" 
     capture_lex $P479
-    .const 'Sub' $P472 = "43_1272455244.05365" 
+    .const 'Sub' $P472 = "43_1272816831.39278" 
     capture_lex $P472
-    .const 'Sub' $P462 = "42_1272455244.05365" 
+    .const 'Sub' $P462 = "42_1272816831.39278" 
     capture_lex $P462
-    .const 'Sub' $P445 = "41_1272455244.05365" 
+    .const 'Sub' $P445 = "41_1272816831.39278" 
     capture_lex $P445
-    .const 'Sub' $P428 = "40_1272455244.05365" 
+    .const 'Sub' $P428 = "40_1272816831.39278" 
     capture_lex $P428
-    .const 'Sub' $P421 = "39_1272455244.05365" 
+    .const 'Sub' $P421 = "39_1272816831.39278" 
     capture_lex $P421
-    .const 'Sub' $P414 = "38_1272455244.05365" 
+    .const 'Sub' $P414 = "38_1272816831.39278" 
     capture_lex $P414
-    .const 'Sub' $P407 = "37_1272455244.05365" 
+    .const 'Sub' $P407 = "37_1272816831.39278" 
     capture_lex $P407
-    .const 'Sub' $P400 = "36_1272455244.05365" 
+    .const 'Sub' $P400 = "36_1272816831.39278" 
     capture_lex $P400
-    .const 'Sub' $P393 = "35_1272455244.05365" 
+    .const 'Sub' $P393 = "35_1272816831.39278" 
     capture_lex $P393
-    .const 'Sub' $P383 = "34_1272455244.05365" 
+    .const 'Sub' $P383 = "34_1272816831.39278" 
     capture_lex $P383
-    .const 'Sub' $P376 = "33_1272455244.05365" 
+    .const 'Sub' $P376 = "33_1272816831.39278" 
     capture_lex $P376
-    .const 'Sub' $P360 = "32_1272455244.05365" 
+    .const 'Sub' $P360 = "32_1272816831.39278" 
     capture_lex $P360
-    .const 'Sub' $P285 = "30_1272455244.05365" 
+    .const 'Sub' $P285 = "30_1272816831.39278" 
     capture_lex $P285
-    .const 'Sub' $P222 = "27_1272455244.05365" 
+    .const 'Sub' $P222 = "27_1272816831.39278" 
     capture_lex $P222
-    .const 'Sub' $P213 = "26_1272455244.05365" 
+    .const 'Sub' $P213 = "26_1272816831.39278" 
     capture_lex $P213
-    .const 'Sub' $P204 = "25_1272455244.05365" 
+    .const 'Sub' $P204 = "25_1272816831.39278" 
     capture_lex $P204
-    .const 'Sub' $P195 = "24_1272455244.05365" 
+    .const 'Sub' $P195 = "24_1272816831.39278" 
     capture_lex $P195
-    .const 'Sub' $P186 = "23_1272455244.05365" 
+    .const 'Sub' $P186 = "23_1272816831.39278" 
     capture_lex $P186
-    .const 'Sub' $P177 = "22_1272455244.05365" 
+    .const 'Sub' $P177 = "22_1272816831.39278" 
     capture_lex $P177
-    .const 'Sub' $P167 = "21_1272455244.05365" 
+    .const 'Sub' $P167 = "21_1272816831.39278" 
     capture_lex $P167
-    .const 'Sub' $P157 = "20_1272455244.05365" 
+    .const 'Sub' $P157 = "20_1272816831.39278" 
     capture_lex $P157
-    .const 'Sub' $P149 = "19_1272455244.05365" 
+    .const 'Sub' $P149 = "19_1272816831.39278" 
     capture_lex $P149
-    .const 'Sub' $P139 = "18_1272455244.05365" 
+    .const 'Sub' $P139 = "18_1272816831.39278" 
     capture_lex $P139
-    .const 'Sub' $P129 = "17_1272455244.05365" 
+    .const 'Sub' $P129 = "17_1272816831.39278" 
     capture_lex $P129
-    .const 'Sub' $P28 = "14_1272455244.05365" 
+    .const 'Sub' $P28 = "14_1272816831.39278" 
     capture_lex $P28
-    .const 'Sub' $P22 = "13_1272455244.05365" 
+    .const 'Sub' $P22 = "13_1272816831.39278" 
     capture_lex $P22
-    .const 'Sub' $P15 = "12_1272455244.05365" 
+    .const 'Sub' $P15 = "12_1272816831.39278" 
     capture_lex $P15
 .annotate "line", 197
-    .const 'Sub' $P554 = "48_1272455244.05365" 
+    .const 'Sub' $P554 = "48_1272816831.39278" 
     capture_lex $P554
 .annotate "line", 3
     .return ($P554)
@@ -4799,7 +4799,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "string_to_int"  :subid("12_1272455244.05365") :outer("11_1272455244.05365")
+.sub "string_to_int"  :subid("12_1272816831.39278") :outer("11_1272816831.39278")
     .param pmc param_18
     .param pmc param_19
 .annotate "line", 3
@@ -4852,7 +4852,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "ints_to_string"  :subid("13_1272455244.05365") :outer("11_1272455244.05365")
+.sub "ints_to_string"  :subid("13_1272816831.39278") :outer("11_1272816831.39278")
     .param pmc param_25
 .annotate "line", 37
     new $P24, 'ExceptionHandler'
@@ -4893,14 +4893,14 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "EXPR"  :subid("14_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "EXPR"  :subid("14_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_31
     .param pmc param_32 :optional
     .param int has_param_32 :opt_flag
 .annotate "line", 62
-    .const 'Sub' $P111 = "16_1272455244.05365" 
+    .const 'Sub' $P111 = "16_1272816831.39278" 
     capture_lex $P111
-    .const 'Sub' $P78 = "15_1272455244.05365" 
+    .const 'Sub' $P78 = "15_1272816831.39278" 
     capture_lex $P78
     new $P30, 'ExceptionHandler'
     set_addr $P30, control_29
@@ -5035,7 +5035,7 @@
     find_lex $P75, "$past"
     $P76 = $P75."name"()
     if $P76, unless_74_end
-    .const 'Sub' $P78 = "15_1272455244.05365" 
+    .const 'Sub' $P78 = "15_1272816831.39278" 
     capture_lex $P78
     $P78()
   unless_74_end:
@@ -5059,7 +5059,7 @@
     unless $P105, loop122_done
     shift $P109, $P105
   loop122_redo:
-    .const 'Sub' $P111 = "16_1272455244.05365" 
+    .const 'Sub' $P111 = "16_1272816831.39278" 
     capture_lex $P111
     $P111($P109)
   loop122_next:
@@ -5104,7 +5104,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block77"  :anon :subid("15_1272455244.05365") :outer("14_1272455244.05365")
+.sub "_block77"  :anon :subid("15_1272816831.39278") :outer("14_1272816831.39278")
 .annotate "line", 71
     new $P79, "Undef"
     .lex "$name", $P79
@@ -5154,7 +5154,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block110"  :anon :subid("16_1272455244.05365") :outer("14_1272455244.05365")
+.sub "_block110"  :anon :subid("16_1272816831.39278") :outer("14_1272816831.39278")
     .param pmc param_112
 .annotate "line", 82
     .lex "$_", param_112
@@ -5177,7 +5177,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "term:sym<circumfix>"  :subid("17_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "term:sym<circumfix>"  :subid("17_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_132
 .annotate "line", 87
     new $P131, 'ExceptionHandler'
@@ -5207,7 +5207,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "termish"  :subid("18_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "termish"  :subid("18_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_142
 .annotate "line", 89
     new $P141, 'ExceptionHandler'
@@ -5237,7 +5237,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "nullterm"  :subid("19_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "nullterm"  :subid("19_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_152
 .annotate "line", 90
     new $P151, 'ExceptionHandler'
@@ -5259,7 +5259,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "nullterm_alt"  :subid("20_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "nullterm_alt"  :subid("20_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_160
 .annotate "line", 91
     new $P159, 'ExceptionHandler'
@@ -5289,7 +5289,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "integer"  :subid("21_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "integer"  :subid("21_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_170
 .annotate "line", 93
     new $P169, 'ExceptionHandler'
@@ -5319,7 +5319,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "dec_number"  :subid("22_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "dec_number"  :subid("22_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_180
 .annotate "line", 95
     new $P179, 'ExceptionHandler'
@@ -5342,7 +5342,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "decint"  :subid("23_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "decint"  :subid("23_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_189
 .annotate "line", 97
     new $P188, 'ExceptionHandler'
@@ -5365,7 +5365,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "hexint"  :subid("24_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "hexint"  :subid("24_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_198
 .annotate "line", 98
     new $P197, 'ExceptionHandler'
@@ -5388,7 +5388,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "octint"  :subid("25_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "octint"  :subid("25_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_207
 .annotate "line", 99
     new $P206, 'ExceptionHandler'
@@ -5411,7 +5411,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "binint"  :subid("26_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "binint"  :subid("26_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_216
 .annotate "line", 100
     new $P215, 'ExceptionHandler'
@@ -5434,10 +5434,10 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_EXPR"  :subid("27_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "quote_EXPR"  :subid("27_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_225
 .annotate "line", 102
-    .const 'Sub' $P241 = "28_1272455244.05365" 
+    .const 'Sub' $P241 = "28_1272816831.39278" 
     capture_lex $P241
     new $P224, 'ExceptionHandler'
     set_addr $P224, control_223
@@ -5469,7 +5469,7 @@
     $P237 = $P235."ACCEPTS"($P236)
     if $P237, if_234
 .annotate "line", 108
-    .const 'Sub' $P241 = "28_1272455244.05365" 
+    .const 'Sub' $P241 = "28_1272816831.39278" 
     capture_lex $P241
     $P241()
     goto if_234_end
@@ -5508,9 +5508,9 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block240"  :anon :subid("28_1272455244.05365") :outer("27_1272455244.05365")
+.sub "_block240"  :anon :subid("28_1272816831.39278") :outer("27_1272816831.39278")
 .annotate "line", 108
-    .const 'Sub' $P260 = "29_1272455244.05365" 
+    .const 'Sub' $P260 = "29_1272816831.39278" 
     capture_lex $P260
 .annotate "line", 109
     $P242 = root_new ['parrot';'ResizablePMCArray']
@@ -5561,7 +5561,7 @@
     unless $P255, loop265_done
     shift $P258, $P255
   loop265_redo:
-    .const 'Sub' $P260 = "29_1272455244.05365" 
+    .const 'Sub' $P260 = "29_1272816831.39278" 
     capture_lex $P260
     $P260($P258)
   loop265_next:
@@ -5584,7 +5584,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block259"  :anon :subid("29_1272455244.05365") :outer("28_1272455244.05365")
+.sub "_block259"  :anon :subid("29_1272816831.39278") :outer("28_1272816831.39278")
     .param pmc param_261
 .annotate "line", 112
     .lex "$_", param_261
@@ -5596,10 +5596,10 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_delimited"  :subid("30_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "quote_delimited"  :subid("30_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_288
 .annotate "line", 125
-    .const 'Sub' $P300 = "31_1272455244.05365" 
+    .const 'Sub' $P300 = "31_1272816831.39278" 
     capture_lex $P300
     new $P287, 'ExceptionHandler'
     set_addr $P287, control_286
@@ -5642,7 +5642,7 @@
     unless $P294, loop332_done
     shift $P298, $P294
   loop332_redo:
-    .const 'Sub' $P300 = "31_1272455244.05365" 
+    .const 'Sub' $P300 = "31_1272816831.39278" 
     capture_lex $P300
     $P300($P298)
   loop332_next:
@@ -5720,7 +5720,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block299"  :anon :subid("31_1272455244.05365") :outer("30_1272455244.05365")
+.sub "_block299"  :anon :subid("31_1272816831.39278") :outer("30_1272816831.39278")
     .param pmc param_302
 .annotate "line", 129
     new $P301, "Undef"
@@ -5789,7 +5789,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_atom"  :subid("32_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "quote_atom"  :subid("32_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_363
 .annotate "line", 150
     new $P362, 'ExceptionHandler'
@@ -5838,7 +5838,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<backslash>"  :subid("33_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "quote_escape:sym<backslash>"  :subid("33_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_379
 .annotate "line", 154
     new $P378, 'ExceptionHandler'
@@ -5859,7 +5859,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<stopper>"  :subid("34_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "quote_escape:sym<stopper>"  :subid("34_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_386
 .annotate "line", 155
     new $P385, 'ExceptionHandler'
@@ -5889,7 +5889,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<bs>"  :subid("35_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "quote_escape:sym<bs>"  :subid("35_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_396
 .annotate "line", 157
     new $P395, 'ExceptionHandler'
@@ -5910,7 +5910,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<nl>"  :subid("36_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "quote_escape:sym<nl>"  :subid("36_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_403
 .annotate "line", 158
     new $P402, 'ExceptionHandler'
@@ -5931,7 +5931,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<cr>"  :subid("37_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "quote_escape:sym<cr>"  :subid("37_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_410
 .annotate "line", 159
     new $P409, 'ExceptionHandler'
@@ -5952,7 +5952,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<tab>"  :subid("38_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "quote_escape:sym<tab>"  :subid("38_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_417
 .annotate "line", 160
     new $P416, 'ExceptionHandler'
@@ -5973,7 +5973,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<ff>"  :subid("39_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "quote_escape:sym<ff>"  :subid("39_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_424
 .annotate "line", 161
     new $P423, 'ExceptionHandler'
@@ -5994,7 +5994,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<hex>"  :subid("40_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "quote_escape:sym<hex>"  :subid("40_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_431
 .annotate "line", 163
     new $P430, 'ExceptionHandler'
@@ -6052,7 +6052,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<oct>"  :subid("41_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "quote_escape:sym<oct>"  :subid("41_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_448
 .annotate "line", 167
     new $P447, 'ExceptionHandler'
@@ -6110,7 +6110,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<chr>"  :subid("42_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "quote_escape:sym<chr>"  :subid("42_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_465
 .annotate "line", 171
     new $P464, 'ExceptionHandler'
@@ -6142,7 +6142,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<0>"  :subid("43_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "quote_escape:sym<0>"  :subid("43_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_475
 .annotate "line", 175
     new $P474, 'ExceptionHandler'
@@ -6165,7 +6165,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<misc>"  :subid("44_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "quote_escape:sym<misc>"  :subid("44_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_482
 .annotate "line", 179
     new $P481, 'ExceptionHandler'
@@ -6223,7 +6223,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "charname"  :subid("45_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "charname"  :subid("45_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_501
 .annotate "line", 183
     new $P500, 'ExceptionHandler'
@@ -6296,10 +6296,10 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "charnames"  :subid("46_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "charnames"  :subid("46_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_532
 .annotate "line", 191
-    .const 'Sub' $P541 = "47_1272455244.05365" 
+    .const 'Sub' $P541 = "47_1272816831.39278" 
     capture_lex $P541
     new $P531, 'ExceptionHandler'
     set_addr $P531, control_530
@@ -6333,7 +6333,7 @@
     unless $P535, loop547_done
     shift $P539, $P535
   loop547_redo:
-    .const 'Sub' $P541 = "47_1272455244.05365" 
+    .const 'Sub' $P541 = "47_1272816831.39278" 
     capture_lex $P541
     $P541($P539)
   loop547_next:
@@ -6362,7 +6362,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block540"  :anon :subid("47_1272455244.05365") :outer("46_1272455244.05365")
+.sub "_block540"  :anon :subid("47_1272816831.39278") :outer("46_1272816831.39278")
     .param pmc param_542
 .annotate "line", 193
     .lex "$_", param_542
@@ -6376,7 +6376,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "charspec"  :subid("48_1272455244.05365") :method :outer("11_1272455244.05365")
+.sub "charspec"  :subid("48_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_557
 .annotate "line", 197
     new $P556, 'ExceptionHandler'
@@ -6427,7 +6427,7 @@
 ### .include 'gen/hllcompiler.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1272455244.64589")
+.sub "_block11"  :anon :subid("10_1272816832.1082")
 .annotate "line", 0
     get_hll_global $P14, ["HLL";"Compiler"], "_block13" 
     capture_lex $P14
@@ -6441,9 +6441,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post25") :outer("10_1272455244.64589")
+.sub "" :load :init :subid("post25") :outer("10_1272816832.1082")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1272455244.64589" 
+    .const 'Sub' $P12 = "10_1272816832.1082" 
     .local pmc block
     set block, $P12
 .annotate "line", 2
@@ -6457,28 +6457,28 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block13"  :subid("11_1272455244.64589") :outer("10_1272455244.64589")
+.sub "_block13"  :subid("11_1272816832.1082") :outer("10_1272816832.1082")
 .annotate "line", 6
-    .const 'Sub' $P187 = "20_1272455244.64589" 
+    .const 'Sub' $P187 = "20_1272816832.1082" 
     capture_lex $P187
-    .const 'Sub' $P152 = "18_1272455244.64589" 
+    .const 'Sub' $P152 = "18_1272816832.1082" 
     capture_lex $P152
-    .const 'Sub' $P137 = "17_1272455244.64589" 
+    .const 'Sub' $P137 = "17_1272816832.1082" 
     capture_lex $P137
-    .const 'Sub' $P121 = "16_1272455244.64589" 
+    .const 'Sub' $P121 = "16_1272816832.1082" 
     capture_lex $P121
-    .const 'Sub' $P32 = "13_1272455244.64589" 
+    .const 'Sub' $P32 = "13_1272816832.1082" 
     capture_lex $P32
-    .const 'Sub' $P15 = "12_1272455244.64589" 
+    .const 'Sub' $P15 = "12_1272816832.1082" 
     capture_lex $P15
 .annotate "line", 14
-    .const 'Sub' $P15 = "12_1272455244.64589" 
+    .const 'Sub' $P15 = "12_1272816832.1082" 
     capture_lex $P15
     .lex "value_type", $P15
 .annotate "line", 10
     find_lex $P31, "value_type"
 .annotate "line", 69
-    .const 'Sub' $P187 = "20_1272455244.64589" 
+    .const 'Sub' $P187 = "20_1272816832.1082" 
     capture_lex $P187
 .annotate "line", 6
     .return ($P187)
@@ -6486,7 +6486,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "" :load :init :subid("post26") :outer("11_1272455244.64589")
+.sub "" :load :init :subid("post26") :outer("11_1272816832.1082")
 .annotate "line", 6
     get_hll_global $P14, ["HLL";"Compiler"], "_block13" 
     .local pmc block
@@ -6498,7 +6498,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "value_type"  :subid("12_1272455244.64589") :outer("11_1272455244.64589")
+.sub "value_type"  :subid("12_1272816832.1082") :outer("11_1272816832.1082")
     .param pmc param_18
 .annotate "line", 14
     new $P17, 'ExceptionHandler'
@@ -6542,15 +6542,15 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "get_exports"  :subid("13_1272455244.64589") :method :outer("11_1272455244.64589")
+.sub "get_exports"  :subid("13_1272816832.1082") :method :outer("11_1272816832.1082")
     .param pmc param_35
     .param pmc param_38 :slurpy
     .param pmc param_36 :optional :named("tagset")
     .param int has_param_36 :opt_flag
 .annotate "line", 20
-    .const 'Sub' $P104 = "15_1272455244.64589" 
+    .const 'Sub' $P104 = "15_1272816832.1082" 
     capture_lex $P104
-    .const 'Sub' $P83 = "14_1272455244.64589" 
+    .const 'Sub' $P83 = "14_1272816832.1082" 
     capture_lex $P83
     new $P34, 'ExceptionHandler'
     set_addr $P34, control_33
@@ -6656,7 +6656,7 @@
     unless $P99, loop116_done
     shift $P102, $P99
   loop116_redo:
-    .const 'Sub' $P104 = "15_1272455244.64589" 
+    .const 'Sub' $P104 = "15_1272816832.1082" 
     capture_lex $P104
     $P104($P102)
   loop116_next:
@@ -6686,7 +6686,7 @@
     unless $P78, loop96_done
     shift $P81, $P78
   loop96_redo:
-    .const 'Sub' $P83 = "14_1272455244.64589" 
+    .const 'Sub' $P83 = "14_1272816832.1082" 
     capture_lex $P83
     $P83($P81)
   loop96_next:
@@ -6714,7 +6714,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block103"  :anon :subid("15_1272455244.64589") :outer("13_1272455244.64589")
+.sub "_block103"  :anon :subid("15_1272816832.1082") :outer("13_1272816832.1082")
     .param pmc param_106
 .annotate "line", 40
     new $P105, "Undef"
@@ -6746,7 +6746,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block82"  :anon :subid("14_1272455244.64589") :outer("13_1272455244.64589")
+.sub "_block82"  :anon :subid("14_1272816832.1082") :outer("13_1272816832.1082")
     .param pmc param_85
 .annotate "line", 34
     new $P84, "Undef"
@@ -6785,7 +6785,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "get_module"  :subid("16_1272455244.64589") :method :outer("11_1272455244.64589")
+.sub "get_module"  :subid("16_1272816832.1082") :method :outer("11_1272816832.1082")
     .param pmc param_124
 .annotate "line", 47
     new $P123, 'ExceptionHandler'
@@ -6825,7 +6825,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "language"  :subid("17_1272455244.64589") :method :outer("11_1272455244.64589")
+.sub "language"  :subid("17_1272816832.1082") :method :outer("11_1272816832.1082")
     .param pmc param_140 :optional
     .param int has_param_140 :opt_flag
 .annotate "line", 53
@@ -6869,10 +6869,10 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "load_module"  :subid("18_1272455244.64589") :method :outer("11_1272455244.64589")
+.sub "load_module"  :subid("18_1272816832.1082") :method :outer("11_1272816832.1082")
     .param pmc param_155
 .annotate "line", 61
-    .const 'Sub' $P165 = "19_1272455244.64589" 
+    .const 'Sub' $P165 = "19_1272816832.1082" 
     capture_lex $P165
     new $P154, 'ExceptionHandler'
     set_addr $P154, control_153
@@ -6899,7 +6899,7 @@
     assign $P163, 0
     store_lex "$loaded", $P163
 .annotate "line", 64
-    .const 'Sub' $P165 = "19_1272455244.64589" 
+    .const 'Sub' $P165 = "19_1272816832.1082" 
     capture_lex $P165
     $P165()
 .annotate "line", 65
@@ -6928,7 +6928,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block164"  :anon :subid("19_1272455244.64589") :outer("18_1272455244.64589")
+.sub "_block164"  :anon :subid("19_1272816832.1082") :outer("18_1272816832.1082")
 .annotate "line", 64
     new $P172, 'ExceptionHandler'
     set_addr $P172, control_171
@@ -6961,11 +6961,11 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "import"  :subid("20_1272455244.64589") :method :outer("11_1272455244.64589")
+.sub "import"  :subid("20_1272816832.1082") :method :outer("11_1272816832.1082")
     .param pmc param_190
     .param pmc param_191
 .annotate "line", 69
-    .const 'Sub' $P197 = "21_1272455244.64589" 
+    .const 'Sub' $P197 = "21_1272816832.1082" 
     capture_lex $P197
     new $P189, 'ExceptionHandler'
     set_addr $P189, control_188
@@ -6987,7 +6987,7 @@
     unless $P192, loop278_done
     shift $P195, $P192
   loop278_redo:
-    .const 'Sub' $P197 = "21_1272455244.64589" 
+    .const 'Sub' $P197 = "21_1272816832.1082" 
     capture_lex $P197
     $P197($P195)
   loop278_next:
@@ -7012,14 +7012,14 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block196"  :anon :subid("21_1272455244.64589") :outer("20_1272455244.64589")
+.sub "_block196"  :anon :subid("21_1272816832.1082") :outer("20_1272816832.1082")
     .param pmc param_200
 .annotate "line", 70
-    .const 'Sub' $P267 = "24_1272455244.64589" 
+    .const 'Sub' $P267 = "24_1272816832.1082" 
     capture_lex $P267
-    .const 'Sub' $P247 = "23_1272455244.64589" 
+    .const 'Sub' $P247 = "23_1272816832.1082" 
     capture_lex $P247
-    .const 'Sub' $P218 = "22_1272455244.64589" 
+    .const 'Sub' $P218 = "22_1272816832.1082" 
     capture_lex $P218
 .annotate "line", 71
     new $P198, "Undef"
@@ -7067,7 +7067,7 @@
     unless $P262, loop275_done
     shift $P265, $P262
   loop275_redo:
-    .const 'Sub' $P267 = "24_1272455244.64589" 
+    .const 'Sub' $P267 = "24_1272816832.1082" 
     capture_lex $P267
     $P267($P265)
   loop275_next:
@@ -7099,7 +7099,7 @@
     unless $P242, loop259_done
     shift $P245, $P242
   loop259_redo:
-    .const 'Sub' $P247 = "23_1272455244.64589" 
+    .const 'Sub' $P247 = "23_1272816832.1082" 
     capture_lex $P247
     $P247($P245)
   loop259_next:
@@ -7133,7 +7133,7 @@
     unless $P213, loop231_done
     shift $P216, $P213
   loop231_redo:
-    .const 'Sub' $P218 = "22_1272455244.64589" 
+    .const 'Sub' $P218 = "22_1272816832.1082" 
     capture_lex $P218
     $P218($P216)
   loop231_next:
@@ -7156,7 +7156,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block266"  :anon :subid("24_1272455244.64589") :outer("21_1272455244.64589")
+.sub "_block266"  :anon :subid("24_1272816832.1082") :outer("21_1272816832.1082")
     .param pmc param_268
 .annotate "line", 80
     .lex "$_", param_268
@@ -7176,7 +7176,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block246"  :anon :subid("23_1272455244.64589") :outer("21_1272455244.64589")
+.sub "_block246"  :anon :subid("23_1272816832.1082") :outer("21_1272816832.1082")
     .param pmc param_248
 .annotate "line", 77
     .lex "$_", param_248
@@ -7196,7 +7196,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block217"  :anon :subid("22_1272455244.64589") :outer("21_1272455244.64589")
+.sub "_block217"  :anon :subid("22_1272816832.1082") :outer("21_1272816832.1082")
     .param pmc param_219
 .annotate "line", 74
     .lex "$_", param_219

Modified: branches/codestring/ext/nqp-rx/src/stage0/NQP-s0.pir
==============================================================================
--- branches/codestring/ext/nqp-rx/src/stage0/NQP-s0.pir	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/ext/nqp-rx/src/stage0/NQP-s0.pir	Mon May  3 14:39:34 2010	(r46235)
@@ -15,7 +15,7 @@
 ### .include 'gen/nqp-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1272455252.89365")
+.sub "_block11"  :anon :subid("10_1272816833.94956")
 .annotate "line", 0
     get_hll_global $P14, ["NQP";"Grammar"], "_block13" 
     capture_lex $P14
@@ -29,9 +29,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post333") :outer("10_1272455252.89365")
+.sub "" :load :init :subid("post333") :outer("10_1272816833.94956")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1272455252.89365" 
+    .const 'Sub' $P12 = "10_1272816833.94956" 
     .local pmc block
     set block, $P12
     $P1305 = get_root_global ["parrot"], "P6metaclass"
@@ -40,295 +40,295 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block13"  :subid("11_1272455252.89365") :outer("10_1272455252.89365")
+.sub "_block13"  :subid("11_1272816833.94956") :outer("10_1272816833.94956")
 .annotate "line", 4
     get_hll_global $P1248, ["NQP";"Regex"], "_block1247" 
     capture_lex $P1248
-    .const 'Sub' $P1234 = "319_1272455252.89365" 
+    .const 'Sub' $P1234 = "319_1272816833.94956" 
     capture_lex $P1234
-    .const 'Sub' $P1228 = "317_1272455252.89365" 
+    .const 'Sub' $P1228 = "317_1272816833.94956" 
     capture_lex $P1228
-    .const 'Sub' $P1222 = "315_1272455252.89365" 
+    .const 'Sub' $P1222 = "315_1272816833.94956" 
     capture_lex $P1222
-    .const 'Sub' $P1215 = "313_1272455252.89365" 
+    .const 'Sub' $P1215 = "313_1272816833.94956" 
     capture_lex $P1215
-    .const 'Sub' $P1208 = "311_1272455252.89365" 
+    .const 'Sub' $P1208 = "311_1272816833.94956" 
     capture_lex $P1208
-    .const 'Sub' $P1201 = "309_1272455252.89365" 
+    .const 'Sub' $P1201 = "309_1272816833.94956" 
     capture_lex $P1201
-    .const 'Sub' $P1194 = "307_1272455252.89365" 
+    .const 'Sub' $P1194 = "307_1272816833.94956" 
     capture_lex $P1194
-    .const 'Sub' $P1188 = "305_1272455252.89365" 
+    .const 'Sub' $P1188 = "305_1272816833.94956" 
     capture_lex $P1188
-    .const 'Sub' $P1181 = "303_1272455252.89365" 
+    .const 'Sub' $P1181 = "303_1272816833.94956" 
     capture_lex $P1181
-    .const 'Sub' $P1174 = "301_1272455252.89365" 
+    .const 'Sub' $P1174 = "301_1272816833.94956" 
     capture_lex $P1174
-    .const 'Sub' $P1167 = "299_1272455252.89365" 
+    .const 'Sub' $P1167 = "299_1272816833.94956" 
     capture_lex $P1167
-    .const 'Sub' $P1160 = "297_1272455252.89365" 
+    .const 'Sub' $P1160 = "297_1272816833.94956" 
     capture_lex $P1160
-    .const 'Sub' $P1153 = "295_1272455252.89365" 
+    .const 'Sub' $P1153 = "295_1272816833.94956" 
     capture_lex $P1153
-    .const 'Sub' $P1146 = "293_1272455252.89365" 
+    .const 'Sub' $P1146 = "293_1272816833.94956" 
     capture_lex $P1146
-    .const 'Sub' $P1139 = "291_1272455252.89365" 
+    .const 'Sub' $P1139 = "291_1272816833.94956" 
     capture_lex $P1139
-    .const 'Sub' $P1132 = "289_1272455252.89365" 
+    .const 'Sub' $P1132 = "289_1272816833.94956" 
     capture_lex $P1132
-    .const 'Sub' $P1125 = "287_1272455252.89365" 
+    .const 'Sub' $P1125 = "287_1272816833.94956" 
     capture_lex $P1125
-    .const 'Sub' $P1118 = "285_1272455252.89365" 
+    .const 'Sub' $P1118 = "285_1272816833.94956" 
     capture_lex $P1118
-    .const 'Sub' $P1111 = "283_1272455252.89365" 
+    .const 'Sub' $P1111 = "283_1272816833.94956" 
     capture_lex $P1111
-    .const 'Sub' $P1104 = "281_1272455252.89365" 
+    .const 'Sub' $P1104 = "281_1272816833.94956" 
     capture_lex $P1104
-    .const 'Sub' $P1097 = "279_1272455252.89365" 
+    .const 'Sub' $P1097 = "279_1272816833.94956" 
     capture_lex $P1097
-    .const 'Sub' $P1090 = "277_1272455252.89365" 
+    .const 'Sub' $P1090 = "277_1272816833.94956" 
     capture_lex $P1090
-    .const 'Sub' $P1083 = "275_1272455252.89365" 
+    .const 'Sub' $P1083 = "275_1272816833.94956" 
     capture_lex $P1083
-    .const 'Sub' $P1076 = "273_1272455252.89365" 
+    .const 'Sub' $P1076 = "273_1272816833.94956" 
     capture_lex $P1076
-    .const 'Sub' $P1069 = "271_1272455252.89365" 
+    .const 'Sub' $P1069 = "271_1272816833.94956" 
     capture_lex $P1069
-    .const 'Sub' $P1062 = "269_1272455252.89365" 
+    .const 'Sub' $P1062 = "269_1272816833.94956" 
     capture_lex $P1062
-    .const 'Sub' $P1055 = "267_1272455252.89365" 
+    .const 'Sub' $P1055 = "267_1272816833.94956" 
     capture_lex $P1055
-    .const 'Sub' $P1048 = "265_1272455252.89365" 
+    .const 'Sub' $P1048 = "265_1272816833.94956" 
     capture_lex $P1048
-    .const 'Sub' $P1041 = "263_1272455252.89365" 
+    .const 'Sub' $P1041 = "263_1272816833.94956" 
     capture_lex $P1041
-    .const 'Sub' $P1034 = "261_1272455252.89365" 
+    .const 'Sub' $P1034 = "261_1272816833.94956" 
     capture_lex $P1034
-    .const 'Sub' $P1027 = "259_1272455252.89365" 
+    .const 'Sub' $P1027 = "259_1272816833.94956" 
     capture_lex $P1027
-    .const 'Sub' $P1020 = "257_1272455252.89365" 
+    .const 'Sub' $P1020 = "257_1272816833.94956" 
     capture_lex $P1020
-    .const 'Sub' $P1013 = "255_1272455252.89365" 
+    .const 'Sub' $P1013 = "255_1272816833.94956" 
     capture_lex $P1013
-    .const 'Sub' $P1006 = "253_1272455252.89365" 
+    .const 'Sub' $P1006 = "253_1272816833.94956" 
     capture_lex $P1006
-    .const 'Sub' $P1000 = "251_1272455252.89365" 
+    .const 'Sub' $P1000 = "251_1272816833.94956" 
     capture_lex $P1000
-    .const 'Sub' $P993 = "249_1272455252.89365" 
+    .const 'Sub' $P993 = "249_1272816833.94956" 
     capture_lex $P993
-    .const 'Sub' $P986 = "247_1272455252.89365" 
+    .const 'Sub' $P986 = "247_1272816833.94956" 
     capture_lex $P986
-    .const 'Sub' $P979 = "245_1272455252.89365" 
+    .const 'Sub' $P979 = "245_1272816833.94956" 
     capture_lex $P979
-    .const 'Sub' $P972 = "243_1272455252.89365" 
+    .const 'Sub' $P972 = "243_1272816833.94956" 
     capture_lex $P972
-    .const 'Sub' $P965 = "241_1272455252.89365" 
+    .const 'Sub' $P965 = "241_1272816833.94956" 
     capture_lex $P965
-    .const 'Sub' $P958 = "239_1272455252.89365" 
+    .const 'Sub' $P958 = "239_1272816833.94956" 
     capture_lex $P958
-    .const 'Sub' $P951 = "237_1272455252.89365" 
+    .const 'Sub' $P951 = "237_1272816833.94956" 
     capture_lex $P951
-    .const 'Sub' $P945 = "235_1272455252.89365" 
+    .const 'Sub' $P945 = "235_1272816833.94956" 
     capture_lex $P945
-    .const 'Sub' $P939 = "233_1272455252.89365" 
+    .const 'Sub' $P939 = "233_1272816833.94956" 
     capture_lex $P939
-    .const 'Sub' $P934 = "231_1272455252.89365" 
+    .const 'Sub' $P934 = "231_1272816833.94956" 
     capture_lex $P934
-    .const 'Sub' $P928 = "229_1272455252.89365" 
+    .const 'Sub' $P928 = "229_1272816833.94956" 
     capture_lex $P928
-    .const 'Sub' $P922 = "227_1272455252.89365" 
+    .const 'Sub' $P922 = "227_1272816833.94956" 
     capture_lex $P922
-    .const 'Sub' $P917 = "225_1272455252.89365" 
+    .const 'Sub' $P917 = "225_1272816833.94956" 
     capture_lex $P917
-    .const 'Sub' $P912 = "223_1272455252.89365" 
+    .const 'Sub' $P912 = "223_1272816833.94956" 
     capture_lex $P912
-    .const 'Sub' $P905 = "221_1272455252.89365" 
+    .const 'Sub' $P905 = "221_1272816833.94956" 
     capture_lex $P905
-    .const 'Sub' $P897 = "219_1272455252.89365" 
+    .const 'Sub' $P897 = "219_1272816833.94956" 
     capture_lex $P897
-    .const 'Sub' $P892 = "217_1272455252.89365" 
+    .const 'Sub' $P892 = "217_1272816833.94956" 
     capture_lex $P892
-    .const 'Sub' $P887 = "215_1272455252.89365" 
+    .const 'Sub' $P887 = "215_1272816833.94956" 
     capture_lex $P887
-    .const 'Sub' $P882 = "213_1272455252.89365" 
+    .const 'Sub' $P882 = "213_1272816833.94956" 
     capture_lex $P882
-    .const 'Sub' $P874 = "211_1272455252.89365" 
+    .const 'Sub' $P874 = "211_1272816833.94956" 
     capture_lex $P874
-    .const 'Sub' $P866 = "209_1272455252.89365" 
+    .const 'Sub' $P866 = "209_1272816833.94956" 
     capture_lex $P866
-    .const 'Sub' $P861 = "207_1272455252.89365" 
+    .const 'Sub' $P861 = "207_1272816833.94956" 
     capture_lex $P861
-    .const 'Sub' $P856 = "205_1272455252.89365" 
+    .const 'Sub' $P856 = "205_1272816833.94956" 
     capture_lex $P856
-    .const 'Sub' $P851 = "203_1272455252.89365" 
+    .const 'Sub' $P851 = "203_1272816833.94956" 
     capture_lex $P851
-    .const 'Sub' $P845 = "201_1272455252.89365" 
+    .const 'Sub' $P845 = "201_1272816833.94956" 
     capture_lex $P845
-    .const 'Sub' $P839 = "199_1272455252.89365" 
+    .const 'Sub' $P839 = "199_1272816833.94956" 
     capture_lex $P839
-    .const 'Sub' $P833 = "197_1272455252.89365" 
+    .const 'Sub' $P833 = "197_1272816833.94956" 
     capture_lex $P833
-    .const 'Sub' $P827 = "195_1272455252.89365" 
+    .const 'Sub' $P827 = "195_1272816833.94956" 
     capture_lex $P827
-    .const 'Sub' $P821 = "193_1272455252.89365" 
+    .const 'Sub' $P821 = "193_1272816833.94956" 
     capture_lex $P821
-    .const 'Sub' $P816 = "191_1272455252.89365" 
+    .const 'Sub' $P816 = "191_1272816833.94956" 
     capture_lex $P816
-    .const 'Sub' $P811 = "189_1272455252.89365" 
+    .const 'Sub' $P811 = "189_1272816833.94956" 
     capture_lex $P811
-    .const 'Sub' $P798 = "185_1272455252.89365" 
+    .const 'Sub' $P798 = "185_1272816833.94956" 
     capture_lex $P798
-    .const 'Sub' $P790 = "183_1272455252.89365" 
+    .const 'Sub' $P790 = "183_1272816833.94956" 
     capture_lex $P790
-    .const 'Sub' $P784 = "181_1272455252.89365" 
+    .const 'Sub' $P784 = "181_1272816833.94956" 
     capture_lex $P784
-    .const 'Sub' $P777 = "179_1272455252.89365" 
+    .const 'Sub' $P777 = "179_1272816833.94956" 
     capture_lex $P777
-    .const 'Sub' $P771 = "177_1272455252.89365" 
+    .const 'Sub' $P771 = "177_1272816833.94956" 
     capture_lex $P771
-    .const 'Sub' $P763 = "175_1272455252.89365" 
+    .const 'Sub' $P763 = "175_1272816833.94956" 
     capture_lex $P763
-    .const 'Sub' $P755 = "173_1272455252.89365" 
+    .const 'Sub' $P755 = "173_1272816833.94956" 
     capture_lex $P755
-    .const 'Sub' $P749 = "171_1272455252.89365" 
+    .const 'Sub' $P749 = "171_1272816833.94956" 
     capture_lex $P749
-    .const 'Sub' $P743 = "169_1272455252.89365" 
+    .const 'Sub' $P743 = "169_1272816833.94956" 
     capture_lex $P743
-    .const 'Sub' $P728 = "165_1272455252.89365" 
+    .const 'Sub' $P728 = "165_1272816833.94956" 
     capture_lex $P728
-    .const 'Sub' $P691 = "163_1272455252.89365" 
+    .const 'Sub' $P691 = "163_1272816833.94956" 
     capture_lex $P691
-    .const 'Sub' $P683 = "161_1272455252.89365" 
+    .const 'Sub' $P683 = "161_1272816833.94956" 
     capture_lex $P683
-    .const 'Sub' $P677 = "159_1272455252.89365" 
+    .const 'Sub' $P677 = "159_1272816833.94956" 
     capture_lex $P677
-    .const 'Sub' $P667 = "157_1272455252.89365" 
+    .const 'Sub' $P667 = "157_1272816833.94956" 
     capture_lex $P667
-    .const 'Sub' $P652 = "155_1272455252.89365" 
+    .const 'Sub' $P652 = "155_1272816833.94956" 
     capture_lex $P652
-    .const 'Sub' $P643 = "153_1272455252.89365" 
+    .const 'Sub' $P643 = "153_1272816833.94956" 
     capture_lex $P643
-    .const 'Sub' $P624 = "151_1272455252.89365" 
+    .const 'Sub' $P624 = "151_1272816833.94956" 
     capture_lex $P624
-    .const 'Sub' $P600 = "149_1272455252.89365" 
+    .const 'Sub' $P600 = "149_1272816833.94956" 
     capture_lex $P600
-    .const 'Sub' $P593 = "147_1272455252.89365" 
+    .const 'Sub' $P593 = "147_1272816833.94956" 
     capture_lex $P593
-    .const 'Sub' $P586 = "145_1272455252.89365" 
+    .const 'Sub' $P586 = "145_1272816833.94956" 
     capture_lex $P586
-    .const 'Sub' $P576 = "141_1272455252.89365" 
+    .const 'Sub' $P576 = "141_1272816833.94956" 
     capture_lex $P576
-    .const 'Sub' $P565 = "139_1272455252.89365" 
+    .const 'Sub' $P565 = "139_1272816833.94956" 
     capture_lex $P565
-    .const 'Sub' $P558 = "137_1272455252.89365" 
+    .const 'Sub' $P558 = "137_1272816833.94956" 
     capture_lex $P558
-    .const 'Sub' $P551 = "135_1272455252.89365" 
+    .const 'Sub' $P551 = "135_1272816833.94956" 
     capture_lex $P551
-    .const 'Sub' $P544 = "133_1272455252.89365" 
+    .const 'Sub' $P544 = "133_1272816833.94956" 
     capture_lex $P544
-    .const 'Sub' $P517 = "129_1272455252.89365" 
+    .const 'Sub' $P517 = "129_1272816833.94956" 
     capture_lex $P517
-    .const 'Sub' $P508 = "127_1272455252.89365" 
+    .const 'Sub' $P508 = "127_1272816833.94956" 
     capture_lex $P508
-    .const 'Sub' $P501 = "125_1272455252.89365" 
+    .const 'Sub' $P501 = "125_1272816833.94956" 
     capture_lex $P501
-    .const 'Sub' $P492 = "121_1272455252.89365" 
+    .const 'Sub' $P492 = "121_1272816833.94956" 
     capture_lex $P492
-    .const 'Sub' $P487 = "119_1272455252.89365" 
+    .const 'Sub' $P487 = "119_1272816833.94956" 
     capture_lex $P487
-    .const 'Sub' $P475 = "117_1272455252.89365" 
+    .const 'Sub' $P475 = "117_1272816833.94956" 
     capture_lex $P475
-    .const 'Sub' $P463 = "115_1272455252.89365" 
+    .const 'Sub' $P463 = "115_1272816833.94956" 
     capture_lex $P463
-    .const 'Sub' $P455 = "113_1272455252.89365" 
+    .const 'Sub' $P455 = "113_1272816833.94956" 
     capture_lex $P455
-    .const 'Sub' $P450 = "111_1272455252.89365" 
+    .const 'Sub' $P450 = "111_1272816833.94956" 
     capture_lex $P450
-    .const 'Sub' $P444 = "109_1272455252.89365" 
+    .const 'Sub' $P444 = "109_1272816833.94956" 
     capture_lex $P444
-    .const 'Sub' $P438 = "107_1272455252.89365" 
+    .const 'Sub' $P438 = "107_1272816833.94956" 
     capture_lex $P438
-    .const 'Sub' $P432 = "105_1272455252.89365" 
+    .const 'Sub' $P432 = "105_1272816833.94956" 
     capture_lex $P432
-    .const 'Sub' $P426 = "103_1272455252.89365" 
+    .const 'Sub' $P426 = "103_1272816833.94956" 
     capture_lex $P426
-    .const 'Sub' $P420 = "101_1272455252.89365" 
+    .const 'Sub' $P420 = "101_1272816833.94956" 
     capture_lex $P420
-    .const 'Sub' $P414 = "99_1272455252.89365" 
+    .const 'Sub' $P414 = "99_1272816833.94956" 
     capture_lex $P414
-    .const 'Sub' $P408 = "97_1272455252.89365" 
+    .const 'Sub' $P408 = "97_1272816833.94956" 
     capture_lex $P408
-    .const 'Sub' $P402 = "95_1272455252.89365" 
+    .const 'Sub' $P402 = "95_1272816833.94956" 
     capture_lex $P402
-    .const 'Sub' $P394 = "93_1272455252.89365" 
+    .const 'Sub' $P394 = "93_1272816833.94956" 
     capture_lex $P394
-    .const 'Sub' $P386 = "91_1272455252.89365" 
+    .const 'Sub' $P386 = "91_1272816833.94956" 
     capture_lex $P386
-    .const 'Sub' $P374 = "87_1272455252.89365" 
+    .const 'Sub' $P374 = "87_1272816833.94956" 
     capture_lex $P374
-    .const 'Sub' $P366 = "85_1272455252.89365" 
+    .const 'Sub' $P366 = "85_1272816833.94956" 
     capture_lex $P366
-    .const 'Sub' $P356 = "81_1272455252.89365" 
+    .const 'Sub' $P356 = "81_1272816833.94956" 
     capture_lex $P356
-    .const 'Sub' $P349 = "79_1272455252.89365" 
+    .const 'Sub' $P349 = "79_1272816833.94956" 
     capture_lex $P349
-    .const 'Sub' $P342 = "77_1272455252.89365" 
+    .const 'Sub' $P342 = "77_1272816833.94956" 
     capture_lex $P342
-    .const 'Sub' $P330 = "73_1272455252.89365" 
+    .const 'Sub' $P330 = "73_1272816833.94956" 
     capture_lex $P330
-    .const 'Sub' $P322 = "71_1272455252.89365" 
+    .const 'Sub' $P322 = "71_1272816833.94956" 
     capture_lex $P322
-    .const 'Sub' $P314 = "69_1272455252.89365" 
+    .const 'Sub' $P314 = "69_1272816833.94956" 
     capture_lex $P314
-    .const 'Sub' $P294 = "67_1272455252.89365" 
+    .const 'Sub' $P294 = "67_1272816833.94956" 
     capture_lex $P294
-    .const 'Sub' $P285 = "65_1272455252.89365" 
+    .const 'Sub' $P285 = "65_1272816833.94956" 
     capture_lex $P285
-    .const 'Sub' $P267 = "62_1272455252.89365" 
+    .const 'Sub' $P267 = "62_1272816833.94956" 
     capture_lex $P267
-    .const 'Sub' $P247 = "60_1272455252.89365" 
+    .const 'Sub' $P247 = "60_1272816833.94956" 
     capture_lex $P247
-    .const 'Sub' $P238 = "56_1272455252.89365" 
+    .const 'Sub' $P238 = "56_1272816833.94956" 
     capture_lex $P238
-    .const 'Sub' $P233 = "54_1272455252.89365" 
+    .const 'Sub' $P233 = "54_1272816833.94956" 
     capture_lex $P233
-    .const 'Sub' $P224 = "50_1272455252.89365" 
+    .const 'Sub' $P224 = "50_1272816833.94956" 
     capture_lex $P224
-    .const 'Sub' $P219 = "48_1272455252.89365" 
+    .const 'Sub' $P219 = "48_1272816833.94956" 
     capture_lex $P219
-    .const 'Sub' $P211 = "46_1272455252.89365" 
+    .const 'Sub' $P211 = "46_1272816833.94956" 
     capture_lex $P211
-    .const 'Sub' $P204 = "44_1272455252.89365" 
+    .const 'Sub' $P204 = "44_1272816833.94956" 
     capture_lex $P204
-    .const 'Sub' $P198 = "42_1272455252.89365" 
+    .const 'Sub' $P198 = "42_1272816833.94956" 
     capture_lex $P198
-    .const 'Sub' $P190 = "40_1272455252.89365" 
+    .const 'Sub' $P190 = "40_1272816833.94956" 
     capture_lex $P190
-    .const 'Sub' $P184 = "38_1272455252.89365" 
+    .const 'Sub' $P184 = "38_1272816833.94956" 
     capture_lex $P184
-    .const 'Sub' $P178 = "36_1272455252.89365" 
+    .const 'Sub' $P178 = "36_1272816833.94956" 
     capture_lex $P178
-    .const 'Sub' $P162 = "33_1272455252.89365" 
+    .const 'Sub' $P162 = "33_1272816833.94956" 
     capture_lex $P162
-    .const 'Sub' $P149 = "31_1272455252.89365" 
+    .const 'Sub' $P149 = "31_1272816833.94956" 
     capture_lex $P149
-    .const 'Sub' $P142 = "29_1272455252.89365" 
+    .const 'Sub' $P142 = "29_1272816833.94956" 
     capture_lex $P142
-    .const 'Sub' $P96 = "26_1272455252.89365" 
+    .const 'Sub' $P96 = "26_1272816833.94956" 
     capture_lex $P96
-    .const 'Sub' $P78 = "23_1272455252.89365" 
+    .const 'Sub' $P78 = "23_1272816833.94956" 
     capture_lex $P78
-    .const 'Sub' $P68 = "21_1272455252.89365" 
+    .const 'Sub' $P68 = "21_1272816833.94956" 
     capture_lex $P68
-    .const 'Sub' $P54 = "19_1272455252.89365" 
+    .const 'Sub' $P54 = "19_1272816833.94956" 
     capture_lex $P54
-    .const 'Sub' $P46 = "17_1272455252.89365" 
+    .const 'Sub' $P46 = "17_1272816833.94956" 
     capture_lex $P46
-    .const 'Sub' $P39 = "15_1272455252.89365" 
+    .const 'Sub' $P39 = "15_1272816833.94956" 
     capture_lex $P39
-    .const 'Sub' $P33 = "13_1272455252.89365" 
+    .const 'Sub' $P33 = "13_1272816833.94956" 
     capture_lex $P33
-    .const 'Sub' $P15 = "12_1272455252.89365" 
+    .const 'Sub' $P15 = "12_1272816833.94956" 
     capture_lex $P15
 .annotate "line", 536
     get_hll_global $P1248, ["NQP";"Regex"], "_block1247" 
@@ -340,7 +340,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "" :load :init :subid("post334") :outer("11_1272455252.89365")
+.sub "" :load :init :subid("post334") :outer("11_1272816833.94956")
 .annotate "line", 4
     get_hll_global $P14, ["NQP";"Grammar"], "_block13" 
     .local pmc block
@@ -397,7 +397,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "TOP"  :subid("12_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "TOP"  :subid("12_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     new $P17, 'ExceptionHandler'
     set_addr $P17, control_16
@@ -480,7 +480,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "identifier"  :subid("13_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "identifier"  :subid("13_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx34_tgt
     .local int rx34_pos
@@ -538,7 +538,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__identifier"  :subid("14_1272455252.89365") :method
+.sub "!PREFIX__identifier"  :subid("14_1272816833.94956") :method
 .annotate "line", 4
     $P36 = self."!PREFIX__!subrule"("ident", "")
     new $P37, "ResizablePMCArray"
@@ -548,7 +548,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "name"  :subid("15_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "name"  :subid("15_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx40_tgt
     .local int rx40_pos
@@ -622,7 +622,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__name"  :subid("16_1272455252.89365") :method
+.sub "!PREFIX__name"  :subid("16_1272816833.94956") :method
 .annotate "line", 4
     new $P42, "ResizablePMCArray"
     push $P42, ""
@@ -631,7 +631,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "deflongname"  :subid("17_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "deflongname"  :subid("17_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx47_tgt
     .local int rx47_pos
@@ -704,7 +704,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__deflongname"  :subid("18_1272455252.89365") :method
+.sub "!PREFIX__deflongname"  :subid("18_1272816833.94956") :method
 .annotate "line", 4
     $P49 = self."!PREFIX__!subrule"("identifier", "")
     new $P50, "ResizablePMCArray"
@@ -714,7 +714,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "ENDSTMT"  :subid("19_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "ENDSTMT"  :subid("19_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx55_tgt
     .local int rx55_pos
@@ -846,7 +846,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ENDSTMT"  :subid("20_1272455252.89365") :method
+.sub "!PREFIX__ENDSTMT"  :subid("20_1272816833.94956") :method
 .annotate "line", 4
     new $P57, "ResizablePMCArray"
     push $P57, ""
@@ -855,7 +855,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "ws"  :subid("21_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "ws"  :subid("21_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx69_tgt
     .local int rx69_pos
@@ -981,7 +981,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ws"  :subid("22_1272455252.89365") :method
+.sub "!PREFIX__ws"  :subid("22_1272816833.94956") :method
 .annotate "line", 4
     new $P71, "ResizablePMCArray"
     push $P71, ""
@@ -991,9 +991,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "unv"  :subid("23_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "unv"  :subid("23_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
-    .const 'Sub' $P86 = "25_1272455252.89365" 
+    .const 'Sub' $P86 = "25_1272816833.94956" 
     capture_lex $P86
     .local string rx79_tgt
     .local int rx79_pos
@@ -1039,7 +1039,7 @@
   rxanchor84_done:
   # rx subrule "before" subtype=zerowidth negate=
     rx79_cur."!cursor_pos"(rx79_pos)
-    .const 'Sub' $P86 = "25_1272455252.89365" 
+    .const 'Sub' $P86 = "25_1272816833.94956" 
     capture_lex $P86
     $P10 = rx79_cur."before"($P86)
     unless $P10, rx79_fail
@@ -1118,7 +1118,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__unv"  :subid("24_1272455252.89365") :method
+.sub "!PREFIX__unv"  :subid("24_1272816833.94956") :method
 .annotate "line", 4
     new $P81, "ResizablePMCArray"
     push $P81, ""
@@ -1129,7 +1129,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block85"  :anon :subid("25_1272455252.89365") :method :outer("23_1272455252.89365")
+.sub "_block85"  :anon :subid("25_1272816833.94956") :method :outer("23_1272816833.94956")
 .annotate "line", 44
     .local string rx87_tgt
     .local int rx87_pos
@@ -1219,9 +1219,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "pod_comment"  :subid("26_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "pod_comment"  :subid("26_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
-    .const 'Sub' $P133 = "28_1272455252.89365" 
+    .const 'Sub' $P133 = "28_1272816833.94956" 
     capture_lex $P133
     .local string rx97_tgt
     .local int rx97_pos
@@ -1677,7 +1677,7 @@
   rxanchor131_done:
   # rx subrule "before" subtype=zerowidth negate=
     rx97_cur."!cursor_pos"(rx97_pos)
-    .const 'Sub' $P133 = "28_1272455252.89365" 
+    .const 'Sub' $P133 = "28_1272816833.94956" 
     capture_lex $P133
     $P10 = rx97_cur."before"($P133)
     unless $P10, rx97_fail
@@ -1728,7 +1728,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__pod_comment"  :subid("27_1272455252.89365") :method
+.sub "!PREFIX__pod_comment"  :subid("27_1272816833.94956") :method
 .annotate "line", 4
     new $P99, "ResizablePMCArray"
     push $P99, ""
@@ -1737,7 +1737,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block132"  :anon :subid("28_1272455252.89365") :method :outer("26_1272455252.89365")
+.sub "_block132"  :anon :subid("28_1272816833.94956") :method :outer("26_1272816833.94956")
 .annotate "line", 67
     .local string rx134_tgt
     .local int rx134_pos
@@ -1856,7 +1856,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "comp_unit"  :subid("29_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "comp_unit"  :subid("29_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx143_tgt
     .local int rx143_pos
@@ -1935,7 +1935,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__comp_unit"  :subid("30_1272455252.89365") :method
+.sub "!PREFIX__comp_unit"  :subid("30_1272816833.94956") :method
 .annotate "line", 4
     $P145 = self."!PREFIX__!subrule"("", "")
     new $P146, "ResizablePMCArray"
@@ -1945,7 +1945,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statementlist"  :subid("31_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "statementlist"  :subid("31_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx150_tgt
     .local int rx150_pos
@@ -2053,7 +2053,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statementlist"  :subid("32_1272455252.89365") :method
+.sub "!PREFIX__statementlist"  :subid("32_1272816833.94956") :method
 .annotate "line", 4
     new $P152, "ResizablePMCArray"
     push $P152, ""
@@ -2063,9 +2063,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement"  :subid("33_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "statement"  :subid("33_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
-    .const 'Sub' $P168 = "35_1272455252.89365" 
+    .const 'Sub' $P168 = "35_1272816833.94956" 
     capture_lex $P168
     .local string rx163_tgt
     .local int rx163_pos
@@ -2100,7 +2100,7 @@
 .annotate "line", 93
   # rx subrule "before" subtype=zerowidth negate=1
     rx163_cur."!cursor_pos"(rx163_pos)
-    .const 'Sub' $P168 = "35_1272455252.89365" 
+    .const 'Sub' $P168 = "35_1272816833.94956" 
     capture_lex $P168
     $P10 = rx163_cur."before"($P168)
     if $P10, rx163_fail
@@ -2205,7 +2205,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement"  :subid("34_1272455252.89365") :method
+.sub "!PREFIX__statement"  :subid("34_1272816833.94956") :method
 .annotate "line", 4
     new $P165, "ResizablePMCArray"
     push $P165, ""
@@ -2214,7 +2214,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block167"  :anon :subid("35_1272455252.89365") :method :outer("33_1272455252.89365")
+.sub "_block167"  :anon :subid("35_1272816833.94956") :method :outer("33_1272816833.94956")
 .annotate "line", 93
     .local string rx169_tgt
     .local int rx169_pos
@@ -2278,7 +2278,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "eat_terminator"  :subid("36_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "eat_terminator"  :subid("36_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx179_tgt
     .local int rx179_pos
@@ -2365,7 +2365,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__eat_terminator"  :subid("37_1272455252.89365") :method
+.sub "!PREFIX__eat_terminator"  :subid("37_1272816833.94956") :method
 .annotate "line", 4
     new $P181, "ResizablePMCArray"
     push $P181, ""
@@ -2377,7 +2377,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "xblock"  :subid("38_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "xblock"  :subid("38_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx185_tgt
     .local int rx185_pos
@@ -2448,7 +2448,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__xblock"  :subid("39_1272455252.89365") :method
+.sub "!PREFIX__xblock"  :subid("39_1272816833.94956") :method
 .annotate "line", 4
     $P187 = self."!PREFIX__!subrule"("EXPR", "")
     new $P188, "ResizablePMCArray"
@@ -2458,7 +2458,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "pblock"  :subid("40_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "pblock"  :subid("40_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx191_tgt
     .local int rx191_pos
@@ -2577,7 +2577,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__pblock"  :subid("41_1272455252.89365") :method
+.sub "!PREFIX__pblock"  :subid("41_1272816833.94956") :method
 .annotate "line", 4
     $P193 = self."!PREFIX__!subrule"("", "")
     $P194 = self."!PREFIX__!subrule"("", "")
@@ -2590,7 +2590,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "lambda"  :subid("42_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "lambda"  :subid("42_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx199_tgt
     .local int rx199_pos
@@ -2661,7 +2661,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__lambda"  :subid("43_1272455252.89365") :method
+.sub "!PREFIX__lambda"  :subid("43_1272816833.94956") :method
 .annotate "line", 4
     new $P201, "ResizablePMCArray"
     push $P201, "<->"
@@ -2671,7 +2671,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "block"  :subid("44_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "block"  :subid("44_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx205_tgt
     .local int rx205_pos
@@ -2754,7 +2754,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__block"  :subid("45_1272455252.89365") :method
+.sub "!PREFIX__block"  :subid("45_1272816833.94956") :method
 .annotate "line", 4
     $P207 = self."!PREFIX__!subrule"("", "")
     new $P208, "ResizablePMCArray"
@@ -2765,7 +2765,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "blockoid"  :subid("46_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "blockoid"  :subid("46_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx212_tgt
     .local int rx212_pos
@@ -2860,7 +2860,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__blockoid"  :subid("47_1272455252.89365") :method
+.sub "!PREFIX__blockoid"  :subid("47_1272816833.94956") :method
 .annotate "line", 4
     $P214 = self."!PREFIX__!subrule"("", "")
     new $P215, "ResizablePMCArray"
@@ -2870,7 +2870,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "newpad"  :subid("48_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "newpad"  :subid("48_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx220_tgt
     .local int rx220_pos
@@ -2921,7 +2921,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__newpad"  :subid("49_1272455252.89365") :method
+.sub "!PREFIX__newpad"  :subid("49_1272816833.94956") :method
 .annotate "line", 4
     new $P222, "ResizablePMCArray"
     push $P222, ""
@@ -2930,7 +2930,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "finishpad"  :subid("50_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "finishpad"  :subid("50_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx225_tgt
     .local int rx225_pos
@@ -2981,7 +2981,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__finishpad"  :subid("51_1272455252.89365") :method
+.sub "!PREFIX__finishpad"  :subid("51_1272816833.94956") :method
 .annotate "line", 4
     new $P227, "ResizablePMCArray"
     push $P227, ""
@@ -2990,7 +2990,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "terminator"  :subid("52_1272455252.89365") :method
+.sub "terminator"  :subid("52_1272816833.94956") :method
 .annotate "line", 144
     $P230 = self."!protoregex"("terminator")
     .return ($P230)
@@ -2998,7 +2998,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator"  :subid("53_1272455252.89365") :method
+.sub "!PREFIX__terminator"  :subid("53_1272816833.94956") :method
 .annotate "line", 144
     $P232 = self."!PREFIX__!protoregex"("terminator")
     .return ($P232)
@@ -3006,7 +3006,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "terminator:sym<;>"  :subid("54_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "terminator:sym<;>"  :subid("54_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx234_tgt
     .local int rx234_pos
@@ -3063,7 +3063,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator:sym<;>"  :subid("55_1272455252.89365") :method
+.sub "!PREFIX__terminator:sym<;>"  :subid("55_1272816833.94956") :method
 .annotate "line", 4
     new $P236, "ResizablePMCArray"
     push $P236, ";"
@@ -3072,7 +3072,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "terminator:sym<}>"  :subid("56_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "terminator:sym<}>"  :subid("56_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx239_tgt
     .local int rx239_pos
@@ -3129,7 +3129,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator:sym<}>"  :subid("57_1272455252.89365") :method
+.sub "!PREFIX__terminator:sym<}>"  :subid("57_1272816833.94956") :method
 .annotate "line", 4
     new $P241, "ResizablePMCArray"
     push $P241, "}"
@@ -3138,7 +3138,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control"  :subid("58_1272455252.89365") :method
+.sub "statement_control"  :subid("58_1272816833.94956") :method
 .annotate "line", 151
     $P244 = self."!protoregex"("statement_control")
     .return ($P244)
@@ -3146,7 +3146,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control"  :subid("59_1272455252.89365") :method
+.sub "!PREFIX__statement_control"  :subid("59_1272816833.94956") :method
 .annotate "line", 151
     $P246 = self."!PREFIX__!protoregex"("statement_control")
     .return ($P246)
@@ -3154,7 +3154,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<if>"  :subid("60_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "statement_control:sym<if>"  :subid("60_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx248_tgt
     .local int rx248_pos
@@ -3348,7 +3348,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<if>"  :subid("61_1272455252.89365") :method
+.sub "!PREFIX__statement_control:sym<if>"  :subid("61_1272816833.94956") :method
 .annotate "line", 4
     new $P250, "ResizablePMCArray"
     push $P250, "if"
@@ -3357,9 +3357,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<unless>"  :subid("62_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "statement_control:sym<unless>"  :subid("62_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
-    .const 'Sub' $P278 = "64_1272455252.89365" 
+    .const 'Sub' $P278 = "64_1272816833.94956" 
     capture_lex $P278
     .local string rx268_tgt
     .local int rx268_pos
@@ -3447,7 +3447,7 @@
     rx268_pos = $P10."pos"()
   # rx subrule "before" subtype=zerowidth negate=1
     rx268_cur."!cursor_pos"(rx268_pos)
-    .const 'Sub' $P278 = "64_1272455252.89365" 
+    .const 'Sub' $P278 = "64_1272816833.94956" 
     capture_lex $P278
     $P10 = rx268_cur."before"($P278)
     if $P10, rx268_fail
@@ -3499,7 +3499,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<unless>"  :subid("63_1272455252.89365") :method
+.sub "!PREFIX__statement_control:sym<unless>"  :subid("63_1272816833.94956") :method
 .annotate "line", 4
     new $P270, "ResizablePMCArray"
     push $P270, "unless"
@@ -3508,7 +3508,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block277"  :anon :subid("64_1272455252.89365") :method :outer("62_1272455252.89365")
+.sub "_block277"  :anon :subid("64_1272816833.94956") :method :outer("62_1272816833.94956")
 .annotate "line", 163
     .local string rx279_tgt
     .local int rx279_pos
@@ -3564,7 +3564,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<while>"  :subid("65_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "statement_control:sym<while>"  :subid("65_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx286_tgt
     .local int rx286_pos
@@ -3674,7 +3674,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<while>"  :subid("66_1272455252.89365") :method
+.sub "!PREFIX__statement_control:sym<while>"  :subid("66_1272816833.94956") :method
 .annotate "line", 4
     new $P288, "ResizablePMCArray"
     push $P288, "until"
@@ -3684,7 +3684,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<repeat>"  :subid("67_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "statement_control:sym<repeat>"  :subid("67_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx295_tgt
     .local int rx295_pos
@@ -3919,7 +3919,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<repeat>"  :subid("68_1272455252.89365") :method
+.sub "!PREFIX__statement_control:sym<repeat>"  :subid("68_1272816833.94956") :method
 .annotate "line", 4
     new $P297, "ResizablePMCArray"
     push $P297, "repeat"
@@ -3928,7 +3928,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<for>"  :subid("69_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "statement_control:sym<for>"  :subid("69_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx315_tgt
     .local int rx315_pos
@@ -4025,7 +4025,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<for>"  :subid("70_1272455252.89365") :method
+.sub "!PREFIX__statement_control:sym<for>"  :subid("70_1272816833.94956") :method
 .annotate "line", 4
     new $P317, "ResizablePMCArray"
     push $P317, "for"
@@ -4034,7 +4034,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<CATCH>"  :subid("71_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "statement_control:sym<CATCH>"  :subid("71_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx323_tgt
     .local int rx323_pos
@@ -4131,7 +4131,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<CATCH>"  :subid("72_1272455252.89365") :method
+.sub "!PREFIX__statement_control:sym<CATCH>"  :subid("72_1272816833.94956") :method
 .annotate "line", 4
     new $P325, "ResizablePMCArray"
     push $P325, "CATCH"
@@ -4140,7 +4140,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<CONTROL>"  :subid("73_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "statement_control:sym<CONTROL>"  :subid("73_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx331_tgt
     .local int rx331_pos
@@ -4237,7 +4237,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<CONTROL>"  :subid("74_1272455252.89365") :method
+.sub "!PREFIX__statement_control:sym<CONTROL>"  :subid("74_1272816833.94956") :method
 .annotate "line", 4
     new $P333, "ResizablePMCArray"
     push $P333, "CONTROL"
@@ -4246,7 +4246,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_prefix"  :subid("75_1272455252.89365") :method
+.sub "statement_prefix"  :subid("75_1272816833.94956") :method
 .annotate "line", 194
     $P339 = self."!protoregex"("statement_prefix")
     .return ($P339)
@@ -4254,7 +4254,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix"  :subid("76_1272455252.89365") :method
+.sub "!PREFIX__statement_prefix"  :subid("76_1272816833.94956") :method
 .annotate "line", 194
     $P341 = self."!PREFIX__!protoregex"("statement_prefix")
     .return ($P341)
@@ -4262,7 +4262,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_prefix:sym<INIT>"  :subid("77_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "statement_prefix:sym<INIT>"  :subid("77_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx343_tgt
     .local int rx343_pos
@@ -4341,7 +4341,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix:sym<INIT>"  :subid("78_1272455252.89365") :method
+.sub "!PREFIX__statement_prefix:sym<INIT>"  :subid("78_1272816833.94956") :method
 .annotate "line", 4
     $P345 = self."!PREFIX__!subrule"("blorst", "INIT")
     new $P346, "ResizablePMCArray"
@@ -4351,7 +4351,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_prefix:sym<try>"  :subid("79_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "statement_prefix:sym<try>"  :subid("79_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx350_tgt
     .local int rx350_pos
@@ -4432,7 +4432,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix:sym<try>"  :subid("80_1272455252.89365") :method
+.sub "!PREFIX__statement_prefix:sym<try>"  :subid("80_1272816833.94956") :method
 .annotate "line", 4
     $P352 = self."!PREFIX__!subrule"("blorst", "try")
     new $P353, "ResizablePMCArray"
@@ -4442,7 +4442,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "blorst"  :subid("81_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "blorst"  :subid("81_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx357_tgt
     .local int rx357_pos
@@ -4531,7 +4531,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__blorst"  :subid("82_1272455252.89365") :method
+.sub "!PREFIX__blorst"  :subid("82_1272816833.94956") :method
 .annotate "line", 4
     new $P359, "ResizablePMCArray"
     push $P359, ""
@@ -4540,7 +4540,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond"  :subid("83_1272455252.89365") :method
+.sub "statement_mod_cond"  :subid("83_1272816833.94956") :method
 .annotate "line", 208
     $P363 = self."!protoregex"("statement_mod_cond")
     .return ($P363)
@@ -4548,7 +4548,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond"  :subid("84_1272455252.89365") :method
+.sub "!PREFIX__statement_mod_cond"  :subid("84_1272816833.94956") :method
 .annotate "line", 208
     $P365 = self."!PREFIX__!protoregex"("statement_mod_cond")
     .return ($P365)
@@ -4556,7 +4556,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond:sym<if>"  :subid("85_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "statement_mod_cond:sym<if>"  :subid("85_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx367_tgt
     .local int rx367_pos
@@ -4645,7 +4645,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond:sym<if>"  :subid("86_1272455252.89365") :method
+.sub "!PREFIX__statement_mod_cond:sym<if>"  :subid("86_1272816833.94956") :method
 .annotate "line", 4
     new $P369, "ResizablePMCArray"
     push $P369, "if"
@@ -4654,7 +4654,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond:sym<unless>"  :subid("87_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "statement_mod_cond:sym<unless>"  :subid("87_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx375_tgt
     .local int rx375_pos
@@ -4743,7 +4743,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond:sym<unless>"  :subid("88_1272455252.89365") :method
+.sub "!PREFIX__statement_mod_cond:sym<unless>"  :subid("88_1272816833.94956") :method
 .annotate "line", 4
     new $P377, "ResizablePMCArray"
     push $P377, "unless"
@@ -4752,7 +4752,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop"  :subid("89_1272455252.89365") :method
+.sub "statement_mod_loop"  :subid("89_1272816833.94956") :method
 .annotate "line", 213
     $P383 = self."!protoregex"("statement_mod_loop")
     .return ($P383)
@@ -4760,7 +4760,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop"  :subid("90_1272455252.89365") :method
+.sub "!PREFIX__statement_mod_loop"  :subid("90_1272816833.94956") :method
 .annotate "line", 213
     $P385 = self."!PREFIX__!protoregex"("statement_mod_loop")
     .return ($P385)
@@ -4768,7 +4768,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop:sym<while>"  :subid("91_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "statement_mod_loop:sym<while>"  :subid("91_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx387_tgt
     .local int rx387_pos
@@ -4857,7 +4857,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop:sym<while>"  :subid("92_1272455252.89365") :method
+.sub "!PREFIX__statement_mod_loop:sym<while>"  :subid("92_1272816833.94956") :method
 .annotate "line", 4
     new $P389, "ResizablePMCArray"
     push $P389, "while"
@@ -4866,7 +4866,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop:sym<until>"  :subid("93_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "statement_mod_loop:sym<until>"  :subid("93_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx395_tgt
     .local int rx395_pos
@@ -4955,7 +4955,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop:sym<until>"  :subid("94_1272455252.89365") :method
+.sub "!PREFIX__statement_mod_loop:sym<until>"  :subid("94_1272816833.94956") :method
 .annotate "line", 4
     new $P397, "ResizablePMCArray"
     push $P397, "until"
@@ -4964,7 +4964,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<fatarrow>"  :subid("95_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "term:sym<fatarrow>"  :subid("95_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx403_tgt
     .local int rx403_pos
@@ -5022,7 +5022,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<fatarrow>"  :subid("96_1272455252.89365") :method
+.sub "!PREFIX__term:sym<fatarrow>"  :subid("96_1272816833.94956") :method
 .annotate "line", 4
     $P405 = self."!PREFIX__!subrule"("fatarrow", "")
     new $P406, "ResizablePMCArray"
@@ -5032,7 +5032,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<colonpair>"  :subid("97_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "term:sym<colonpair>"  :subid("97_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx409_tgt
     .local int rx409_pos
@@ -5090,7 +5090,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<colonpair>"  :subid("98_1272455252.89365") :method
+.sub "!PREFIX__term:sym<colonpair>"  :subid("98_1272816833.94956") :method
 .annotate "line", 4
     $P411 = self."!PREFIX__!subrule"("colonpair", "")
     new $P412, "ResizablePMCArray"
@@ -5100,7 +5100,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<variable>"  :subid("99_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "term:sym<variable>"  :subid("99_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx415_tgt
     .local int rx415_pos
@@ -5158,7 +5158,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<variable>"  :subid("100_1272455252.89365") :method
+.sub "!PREFIX__term:sym<variable>"  :subid("100_1272816833.94956") :method
 .annotate "line", 4
     $P417 = self."!PREFIX__!subrule"("variable", "")
     new $P418, "ResizablePMCArray"
@@ -5168,7 +5168,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<package_declarator>"  :subid("101_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "term:sym<package_declarator>"  :subid("101_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx421_tgt
     .local int rx421_pos
@@ -5226,7 +5226,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<package_declarator>"  :subid("102_1272455252.89365") :method
+.sub "!PREFIX__term:sym<package_declarator>"  :subid("102_1272816833.94956") :method
 .annotate "line", 4
     $P423 = self."!PREFIX__!subrule"("package_declarator", "")
     new $P424, "ResizablePMCArray"
@@ -5236,7 +5236,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<scope_declarator>"  :subid("103_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "term:sym<scope_declarator>"  :subid("103_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx427_tgt
     .local int rx427_pos
@@ -5294,7 +5294,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<scope_declarator>"  :subid("104_1272455252.89365") :method
+.sub "!PREFIX__term:sym<scope_declarator>"  :subid("104_1272816833.94956") :method
 .annotate "line", 4
     $P429 = self."!PREFIX__!subrule"("scope_declarator", "")
     new $P430, "ResizablePMCArray"
@@ -5304,7 +5304,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<routine_declarator>"  :subid("105_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "term:sym<routine_declarator>"  :subid("105_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx433_tgt
     .local int rx433_pos
@@ -5362,7 +5362,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<routine_declarator>"  :subid("106_1272455252.89365") :method
+.sub "!PREFIX__term:sym<routine_declarator>"  :subid("106_1272816833.94956") :method
 .annotate "line", 4
     $P435 = self."!PREFIX__!subrule"("routine_declarator", "")
     new $P436, "ResizablePMCArray"
@@ -5372,7 +5372,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<regex_declarator>"  :subid("107_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "term:sym<regex_declarator>"  :subid("107_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx439_tgt
     .local int rx439_pos
@@ -5430,7 +5430,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<regex_declarator>"  :subid("108_1272455252.89365") :method
+.sub "!PREFIX__term:sym<regex_declarator>"  :subid("108_1272816833.94956") :method
 .annotate "line", 4
     $P441 = self."!PREFIX__!subrule"("regex_declarator", "")
     new $P442, "ResizablePMCArray"
@@ -5440,7 +5440,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<statement_prefix>"  :subid("109_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "term:sym<statement_prefix>"  :subid("109_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx445_tgt
     .local int rx445_pos
@@ -5498,7 +5498,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<statement_prefix>"  :subid("110_1272455252.89365") :method
+.sub "!PREFIX__term:sym<statement_prefix>"  :subid("110_1272816833.94956") :method
 .annotate "line", 4
     $P447 = self."!PREFIX__!subrule"("statement_prefix", "")
     new $P448, "ResizablePMCArray"
@@ -5508,7 +5508,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<lambda>"  :subid("111_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "term:sym<lambda>"  :subid("111_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx451_tgt
     .local int rx451_pos
@@ -5570,7 +5570,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<lambda>"  :subid("112_1272455252.89365") :method
+.sub "!PREFIX__term:sym<lambda>"  :subid("112_1272816833.94956") :method
 .annotate "line", 4
     new $P453, "ResizablePMCArray"
     push $P453, ""
@@ -5579,7 +5579,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "fatarrow"  :subid("113_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "fatarrow"  :subid("113_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx456_tgt
     .local int rx456_pos
@@ -5672,7 +5672,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__fatarrow"  :subid("114_1272455252.89365") :method
+.sub "!PREFIX__fatarrow"  :subid("114_1272816833.94956") :method
 .annotate "line", 4
     $P458 = self."!PREFIX__!subrule"("key", "")
     new $P459, "ResizablePMCArray"
@@ -5682,7 +5682,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "colonpair"  :subid("115_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "colonpair"  :subid("115_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx464_tgt
     .local int rx464_pos
@@ -5811,7 +5811,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__colonpair"  :subid("116_1272455252.89365") :method
+.sub "!PREFIX__colonpair"  :subid("116_1272816833.94956") :method
 .annotate "line", 4
     $P466 = self."!PREFIX__!subrule"("circumfix", ":")
     $P467 = self."!PREFIX__!subrule"("identifier", ":")
@@ -5825,7 +5825,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "variable"  :subid("117_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "variable"  :subid("117_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx476_tgt
     .local int rx476_pos
@@ -5980,7 +5980,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__variable"  :subid("118_1272455252.89365") :method
+.sub "!PREFIX__variable"  :subid("118_1272816833.94956") :method
 .annotate "line", 4
     $P478 = self."!PREFIX__!subrule"("sigil", "")
     $P479 = self."!PREFIX__!subrule"("sigil", "")
@@ -5995,7 +5995,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "sigil"  :subid("119_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "sigil"  :subid("119_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx488_tgt
     .local int rx488_pos
@@ -6053,7 +6053,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__sigil"  :subid("120_1272455252.89365") :method
+.sub "!PREFIX__sigil"  :subid("120_1272816833.94956") :method
 .annotate "line", 4
     new $P490, "ResizablePMCArray"
     push $P490, "&"
@@ -6065,7 +6065,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "twigil"  :subid("121_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "twigil"  :subid("121_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx493_tgt
     .local int rx493_pos
@@ -6123,7 +6123,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__twigil"  :subid("122_1272455252.89365") :method
+.sub "!PREFIX__twigil"  :subid("122_1272816833.94956") :method
 .annotate "line", 4
     new $P495, "ResizablePMCArray"
     push $P495, "?"
@@ -6134,7 +6134,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_declarator"  :subid("123_1272455252.89365") :method
+.sub "package_declarator"  :subid("123_1272816833.94956") :method
 .annotate "line", 253
     $P498 = self."!protoregex"("package_declarator")
     .return ($P498)
@@ -6142,7 +6142,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator"  :subid("124_1272455252.89365") :method
+.sub "!PREFIX__package_declarator"  :subid("124_1272816833.94956") :method
 .annotate "line", 253
     $P500 = self."!PREFIX__!protoregex"("package_declarator")
     .return ($P500)
@@ -6150,7 +6150,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_declarator:sym<module>"  :subid("125_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "package_declarator:sym<module>"  :subid("125_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx502_tgt
     .local int rx502_pos
@@ -6229,7 +6229,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator:sym<module>"  :subid("126_1272455252.89365") :method
+.sub "!PREFIX__package_declarator:sym<module>"  :subid("126_1272816833.94956") :method
 .annotate "line", 4
     $P504 = self."!PREFIX__!subrule"("package_def", "module")
     new $P505, "ResizablePMCArray"
@@ -6239,7 +6239,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_declarator:sym<class>"  :subid("127_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "package_declarator:sym<class>"  :subid("127_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx509_tgt
     .local int rx509_pos
@@ -6331,7 +6331,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator:sym<class>"  :subid("128_1272455252.89365") :method
+.sub "!PREFIX__package_declarator:sym<class>"  :subid("128_1272816833.94956") :method
 .annotate "line", 4
     $P511 = self."!PREFIX__!subrule"("package_def", "grammar")
     $P512 = self."!PREFIX__!subrule"("package_def", "class")
@@ -6343,7 +6343,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_def"  :subid("129_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "package_def"  :subid("129_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx518_tgt
     .local int rx518_pos
@@ -6547,7 +6547,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_def"  :subid("130_1272455252.89365") :method
+.sub "!PREFIX__package_def"  :subid("130_1272816833.94956") :method
 .annotate "line", 4
     new $P520, "ResizablePMCArray"
     push $P520, ""
@@ -6556,7 +6556,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator"  :subid("131_1272455252.89365") :method
+.sub "scope_declarator"  :subid("131_1272816833.94956") :method
 .annotate "line", 267
     $P541 = self."!protoregex"("scope_declarator")
     .return ($P541)
@@ -6564,7 +6564,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator"  :subid("132_1272455252.89365") :method
+.sub "!PREFIX__scope_declarator"  :subid("132_1272816833.94956") :method
 .annotate "line", 267
     $P543 = self."!PREFIX__!protoregex"("scope_declarator")
     .return ($P543)
@@ -6572,7 +6572,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<my>"  :subid("133_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "scope_declarator:sym<my>"  :subid("133_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx545_tgt
     .local int rx545_pos
@@ -6651,7 +6651,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<my>"  :subid("134_1272455252.89365") :method
+.sub "!PREFIX__scope_declarator:sym<my>"  :subid("134_1272816833.94956") :method
 .annotate "line", 4
     $P547 = self."!PREFIX__!subrule"("scoped", "my")
     new $P548, "ResizablePMCArray"
@@ -6661,7 +6661,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<our>"  :subid("135_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "scope_declarator:sym<our>"  :subid("135_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx552_tgt
     .local int rx552_pos
@@ -6740,7 +6740,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<our>"  :subid("136_1272455252.89365") :method
+.sub "!PREFIX__scope_declarator:sym<our>"  :subid("136_1272816833.94956") :method
 .annotate "line", 4
     $P554 = self."!PREFIX__!subrule"("scoped", "our")
     new $P555, "ResizablePMCArray"
@@ -6750,7 +6750,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<has>"  :subid("137_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "scope_declarator:sym<has>"  :subid("137_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx559_tgt
     .local int rx559_pos
@@ -6829,7 +6829,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<has>"  :subid("138_1272455252.89365") :method
+.sub "!PREFIX__scope_declarator:sym<has>"  :subid("138_1272816833.94956") :method
 .annotate "line", 4
     $P561 = self."!PREFIX__!subrule"("scoped", "has")
     new $P562, "ResizablePMCArray"
@@ -6839,7 +6839,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scoped"  :subid("139_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "scoped"  :subid("139_1272816833.94956") :method :outer("11_1272816833.94956")
     .param pmc param_566
 .annotate "line", 272
     .lex "$*SCOPE", param_566
@@ -6936,7 +6936,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scoped"  :subid("140_1272455252.89365") :method
+.sub "!PREFIX__scoped"  :subid("140_1272816833.94956") :method
 .annotate "line", 4
     new $P569, "ResizablePMCArray"
     push $P569, ""
@@ -6946,7 +6946,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "variable_declarator"  :subid("141_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "variable_declarator"  :subid("141_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx577_tgt
     .local int rx577_pos
@@ -7004,7 +7004,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__variable_declarator"  :subid("142_1272455252.89365") :method
+.sub "!PREFIX__variable_declarator"  :subid("142_1272816833.94956") :method
 .annotate "line", 4
     $P579 = self."!PREFIX__!subrule"("variable", "")
     new $P580, "ResizablePMCArray"
@@ -7014,7 +7014,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_declarator"  :subid("143_1272455252.89365") :method
+.sub "routine_declarator"  :subid("143_1272816833.94956") :method
 .annotate "line", 279
     $P583 = self."!protoregex"("routine_declarator")
     .return ($P583)
@@ -7022,7 +7022,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator"  :subid("144_1272455252.89365") :method
+.sub "!PREFIX__routine_declarator"  :subid("144_1272816833.94956") :method
 .annotate "line", 279
     $P585 = self."!PREFIX__!protoregex"("routine_declarator")
     .return ($P585)
@@ -7030,7 +7030,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_declarator:sym<sub>"  :subid("145_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "routine_declarator:sym<sub>"  :subid("145_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx587_tgt
     .local int rx587_pos
@@ -7109,7 +7109,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator:sym<sub>"  :subid("146_1272455252.89365") :method
+.sub "!PREFIX__routine_declarator:sym<sub>"  :subid("146_1272816833.94956") :method
 .annotate "line", 4
     $P589 = self."!PREFIX__!subrule"("routine_def", "sub")
     new $P590, "ResizablePMCArray"
@@ -7119,7 +7119,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_declarator:sym<method>"  :subid("147_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "routine_declarator:sym<method>"  :subid("147_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx594_tgt
     .local int rx594_pos
@@ -7198,7 +7198,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator:sym<method>"  :subid("148_1272455252.89365") :method
+.sub "!PREFIX__routine_declarator:sym<method>"  :subid("148_1272816833.94956") :method
 .annotate "line", 4
     $P596 = self."!PREFIX__!subrule"("method_def", "method")
     new $P597, "ResizablePMCArray"
@@ -7208,7 +7208,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_def"  :subid("149_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "routine_def"  :subid("149_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx601_tgt
     .local int rx601_pos
@@ -7415,7 +7415,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_def"  :subid("150_1272455252.89365") :method
+.sub "!PREFIX__routine_def"  :subid("150_1272816833.94956") :method
 .annotate "line", 4
     new $P603, "ResizablePMCArray"
     push $P603, ""
@@ -7424,7 +7424,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "method_def"  :subid("151_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "method_def"  :subid("151_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx625_tgt
     .local int rx625_pos
@@ -7594,7 +7594,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__method_def"  :subid("152_1272455252.89365") :method
+.sub "!PREFIX__method_def"  :subid("152_1272816833.94956") :method
 .annotate "line", 4
     new $P627, "ResizablePMCArray"
     push $P627, ""
@@ -7603,7 +7603,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "signature"  :subid("153_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "signature"  :subid("153_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx644_tgt
     .local int rx644_pos
@@ -7693,7 +7693,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__signature"  :subid("154_1272455252.89365") :method
+.sub "!PREFIX__signature"  :subid("154_1272816833.94956") :method
 .annotate "line", 4
     new $P646, "ResizablePMCArray"
     push $P646, ""
@@ -7702,7 +7702,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "parameter"  :subid("155_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "parameter"  :subid("155_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx653_tgt
     .local int rx653_pos
@@ -7863,7 +7863,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__parameter"  :subid("156_1272455252.89365") :method
+.sub "!PREFIX__parameter"  :subid("156_1272816833.94956") :method
 .annotate "line", 4
     $P655 = self."!PREFIX__!subrule"("named_param", "")
     $P656 = self."!PREFIX__!subrule"("param_var", "")
@@ -7877,7 +7877,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "param_var"  :subid("157_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "param_var"  :subid("157_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx668_tgt
     .local int rx668_pos
@@ -7985,7 +7985,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__param_var"  :subid("158_1272455252.89365") :method
+.sub "!PREFIX__param_var"  :subid("158_1272816833.94956") :method
 .annotate "line", 4
     $P670 = self."!PREFIX__!subrule"("sigil", "")
     new $P671, "ResizablePMCArray"
@@ -7995,7 +7995,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "named_param"  :subid("159_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "named_param"  :subid("159_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx678_tgt
     .local int rx678_pos
@@ -8061,7 +8061,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__named_param"  :subid("160_1272455252.89365") :method
+.sub "!PREFIX__named_param"  :subid("160_1272816833.94956") :method
 .annotate "line", 4
     $P680 = self."!PREFIX__!subrule"("param_var", ":")
     new $P681, "ResizablePMCArray"
@@ -8071,7 +8071,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "default_value"  :subid("161_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "default_value"  :subid("161_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx684_tgt
     .local int rx684_pos
@@ -8151,7 +8151,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__default_value"  :subid("162_1272455252.89365") :method
+.sub "!PREFIX__default_value"  :subid("162_1272816833.94956") :method
 .annotate "line", 4
     new $P686, "ResizablePMCArray"
     push $P686, ""
@@ -8160,7 +8160,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "regex_declarator"  :subid("163_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "regex_declarator"  :subid("163_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx692_tgt
     .local int rx692_pos
@@ -8561,7 +8561,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__regex_declarator"  :subid("164_1272455252.89365") :method
+.sub "!PREFIX__regex_declarator"  :subid("164_1272816833.94956") :method
 .annotate "line", 4
     new $P694, "ResizablePMCArray"
     push $P694, ""
@@ -8570,7 +8570,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "dotty"  :subid("165_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "dotty"  :subid("165_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx729_tgt
     .local int rx729_pos
@@ -8726,7 +8726,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__dotty"  :subid("166_1272455252.89365") :method
+.sub "!PREFIX__dotty"  :subid("166_1272816833.94956") :method
 .annotate "line", 4
     $P731 = self."!PREFIX__!subrule"("longname=identifier", ".")
     new $P732, "ResizablePMCArray"
@@ -8738,7 +8738,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term"  :subid("167_1272455252.89365") :method
+.sub "term"  :subid("167_1272816833.94956") :method
 .annotate "line", 351
     $P740 = self."!protoregex"("term")
     .return ($P740)
@@ -8746,7 +8746,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term"  :subid("168_1272455252.89365") :method
+.sub "!PREFIX__term"  :subid("168_1272816833.94956") :method
 .annotate "line", 351
     $P742 = self."!PREFIX__!protoregex"("term")
     .return ($P742)
@@ -8754,7 +8754,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<self>"  :subid("169_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "term:sym<self>"  :subid("169_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx744_tgt
     .local int rx744_pos
@@ -8834,7 +8834,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<self>"  :subid("170_1272455252.89365") :method
+.sub "!PREFIX__term:sym<self>"  :subid("170_1272816833.94956") :method
 .annotate "line", 4
     new $P746, "ResizablePMCArray"
     push $P746, "self"
@@ -8843,7 +8843,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<identifier>"  :subid("171_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "term:sym<identifier>"  :subid("171_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx750_tgt
     .local int rx750_pos
@@ -8915,7 +8915,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<identifier>"  :subid("172_1272455252.89365") :method
+.sub "!PREFIX__term:sym<identifier>"  :subid("172_1272816833.94956") :method
 .annotate "line", 4
     $P752 = self."!PREFIX__!subrule"("identifier", "")
     new $P753, "ResizablePMCArray"
@@ -8925,7 +8925,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<name>"  :subid("173_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "term:sym<name>"  :subid("173_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx756_tgt
     .local int rx756_pos
@@ -8998,7 +8998,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<name>"  :subid("174_1272455252.89365") :method
+.sub "!PREFIX__term:sym<name>"  :subid("174_1272816833.94956") :method
 .annotate "line", 4
     $P758 = self."!PREFIX__!subrule"("name", "")
     new $P759, "ResizablePMCArray"
@@ -9008,7 +9008,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<pir::op>"  :subid("175_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "term:sym<pir::op>"  :subid("175_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx764_tgt
     .local int rx764_pos
@@ -9101,7 +9101,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<pir::op>"  :subid("176_1272455252.89365") :method
+.sub "!PREFIX__term:sym<pir::op>"  :subid("176_1272816833.94956") :method
 .annotate "line", 4
     new $P766, "ResizablePMCArray"
     push $P766, "pir::"
@@ -9110,7 +9110,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "args"  :subid("177_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "args"  :subid("177_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx772_tgt
     .local int rx772_pos
@@ -9182,7 +9182,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__args"  :subid("178_1272455252.89365") :method
+.sub "!PREFIX__args"  :subid("178_1272816833.94956") :method
 .annotate "line", 4
     $P774 = self."!PREFIX__!subrule"("arglist", "(")
     new $P775, "ResizablePMCArray"
@@ -9192,7 +9192,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "arglist"  :subid("179_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "arglist"  :subid("179_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx778_tgt
     .local int rx778_pos
@@ -9264,7 +9264,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__arglist"  :subid("180_1272455252.89365") :method
+.sub "!PREFIX__arglist"  :subid("180_1272816833.94956") :method
 .annotate "line", 4
     $P780 = self."!PREFIX__!subrule"("", "")
     new $P781, "ResizablePMCArray"
@@ -9274,7 +9274,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<value>"  :subid("181_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "term:sym<value>"  :subid("181_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx785_tgt
     .local int rx785_pos
@@ -9332,7 +9332,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<value>"  :subid("182_1272455252.89365") :method
+.sub "!PREFIX__term:sym<value>"  :subid("182_1272816833.94956") :method
 .annotate "line", 4
     $P787 = self."!PREFIX__!subrule"("value", "")
     new $P788, "ResizablePMCArray"
@@ -9342,7 +9342,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "value"  :subid("183_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "value"  :subid("183_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx791_tgt
     .local int rx791_pos
@@ -9416,7 +9416,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__value"  :subid("184_1272455252.89365") :method
+.sub "!PREFIX__value"  :subid("184_1272816833.94956") :method
 .annotate "line", 4
     $P793 = self."!PREFIX__!subrule"("number", "")
     $P794 = self."!PREFIX__!subrule"("quote", "")
@@ -9428,7 +9428,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "number"  :subid("185_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "number"  :subid("185_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx799_tgt
     .local int rx799_pos
@@ -9528,7 +9528,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__number"  :subid("186_1272455252.89365") :method
+.sub "!PREFIX__number"  :subid("186_1272816833.94956") :method
 .annotate "line", 4
     new $P801, "ResizablePMCArray"
     push $P801, ""
@@ -9537,7 +9537,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote"  :subid("187_1272455252.89365") :method
+.sub "quote"  :subid("187_1272816833.94956") :method
 .annotate "line", 392
     $P808 = self."!protoregex"("quote")
     .return ($P808)
@@ -9545,7 +9545,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote"  :subid("188_1272455252.89365") :method
+.sub "!PREFIX__quote"  :subid("188_1272816833.94956") :method
 .annotate "line", 392
     $P810 = self."!PREFIX__!protoregex"("quote")
     .return ($P810)
@@ -9553,7 +9553,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<apos>"  :subid("189_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "quote:sym<apos>"  :subid("189_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx812_tgt
     .local int rx812_pos
@@ -9617,7 +9617,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<apos>"  :subid("190_1272455252.89365") :method
+.sub "!PREFIX__quote:sym<apos>"  :subid("190_1272816833.94956") :method
 .annotate "line", 4
     new $P814, "ResizablePMCArray"
     push $P814, "'"
@@ -9626,7 +9626,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<dblq>"  :subid("191_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "quote:sym<dblq>"  :subid("191_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx817_tgt
     .local int rx817_pos
@@ -9690,7 +9690,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<dblq>"  :subid("192_1272455252.89365") :method
+.sub "!PREFIX__quote:sym<dblq>"  :subid("192_1272816833.94956") :method
 .annotate "line", 4
     new $P819, "ResizablePMCArray"
     push $P819, "\""
@@ -9699,7 +9699,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<q>"  :subid("193_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "quote:sym<q>"  :subid("193_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx822_tgt
     .local int rx822_pos
@@ -9738,6 +9738,14 @@
     substr $S10, rx822_tgt, $I11, 1
     ne $S10, "q", rx822_fail
     add rx822_pos, 1
+  # rxanchor rwb
+    le rx822_pos, 0, rx822_fail
+    sub $I10, rx822_pos, rx822_off
+    is_cclass $I11, 8192, rx822_tgt, $I10
+    if $I11, rx822_fail
+    dec $I10
+    is_cclass $I11, 8192, rx822_tgt, $I10
+    unless $I11, rx822_fail
   # rx enumcharlist negate=1 zerowidth
     ge rx822_pos, rx822_eos, rx822_fail
     sub $I10, rx822_pos, rx822_off
@@ -9775,7 +9783,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<q>"  :subid("194_1272455252.89365") :method
+.sub "!PREFIX__quote:sym<q>"  :subid("194_1272816833.94956") :method
 .annotate "line", 4
     $P824 = self."!PREFIX__!subrule"("", "q")
     new $P825, "ResizablePMCArray"
@@ -9785,7 +9793,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<qq>"  :subid("195_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "quote:sym<qq>"  :subid("195_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx828_tgt
     .local int rx828_pos
@@ -9824,6 +9832,14 @@
     substr $S10, rx828_tgt, $I11, 2
     ne $S10, "qq", rx828_fail
     add rx828_pos, 2
+  # rxanchor rwb
+    le rx828_pos, 0, rx828_fail
+    sub $I10, rx828_pos, rx828_off
+    is_cclass $I11, 8192, rx828_tgt, $I10
+    if $I11, rx828_fail
+    dec $I10
+    is_cclass $I11, 8192, rx828_tgt, $I10
+    unless $I11, rx828_fail
   # rx enumcharlist negate=1 zerowidth
     ge rx828_pos, rx828_eos, rx828_fail
     sub $I10, rx828_pos, rx828_off
@@ -9861,7 +9877,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<qq>"  :subid("196_1272455252.89365") :method
+.sub "!PREFIX__quote:sym<qq>"  :subid("196_1272816833.94956") :method
 .annotate "line", 4
     $P830 = self."!PREFIX__!subrule"("", "qq")
     new $P831, "ResizablePMCArray"
@@ -9871,7 +9887,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<Q>"  :subid("197_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "quote:sym<Q>"  :subid("197_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx834_tgt
     .local int rx834_pos
@@ -9910,6 +9926,14 @@
     substr $S10, rx834_tgt, $I11, 1
     ne $S10, "Q", rx834_fail
     add rx834_pos, 1
+  # rxanchor rwb
+    le rx834_pos, 0, rx834_fail
+    sub $I10, rx834_pos, rx834_off
+    is_cclass $I11, 8192, rx834_tgt, $I10
+    if $I11, rx834_fail
+    dec $I10
+    is_cclass $I11, 8192, rx834_tgt, $I10
+    unless $I11, rx834_fail
   # rx enumcharlist negate=1 zerowidth
     ge rx834_pos, rx834_eos, rx834_fail
     sub $I10, rx834_pos, rx834_off
@@ -9947,7 +9971,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<Q>"  :subid("198_1272455252.89365") :method
+.sub "!PREFIX__quote:sym<Q>"  :subid("198_1272816833.94956") :method
 .annotate "line", 4
     $P836 = self."!PREFIX__!subrule"("", "Q")
     new $P837, "ResizablePMCArray"
@@ -9957,7 +9981,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<Q:PIR>"  :subid("199_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "quote:sym<Q:PIR>"  :subid("199_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx840_tgt
     .local int rx840_pos
@@ -10027,7 +10051,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<Q:PIR>"  :subid("200_1272455252.89365") :method
+.sub "!PREFIX__quote:sym<Q:PIR>"  :subid("200_1272816833.94956") :method
 .annotate "line", 4
     $P842 = self."!PREFIX__!subrule"("", "Q:PIR")
     new $P843, "ResizablePMCArray"
@@ -10037,7 +10061,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym</ />"  :subid("201_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "quote:sym</ />"  :subid("201_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx846_tgt
     .local int rx846_pos
@@ -10122,7 +10146,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym</ />"  :subid("202_1272455252.89365") :method
+.sub "!PREFIX__quote:sym</ />"  :subid("202_1272816833.94956") :method
 .annotate "line", 4
     $P848 = self."!PREFIX__!subrule"("", "/")
     new $P849, "ResizablePMCArray"
@@ -10132,7 +10156,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<$>"  :subid("203_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "quote_escape:sym<$>"  :subid("203_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx852_tgt
     .local int rx852_pos
@@ -10200,7 +10224,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<$>"  :subid("204_1272455252.89365") :method
+.sub "!PREFIX__quote_escape:sym<$>"  :subid("204_1272816833.94956") :method
 .annotate "line", 4
     new $P854, "ResizablePMCArray"
     push $P854, "$"
@@ -10209,7 +10233,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<{ }>"  :subid("205_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "quote_escape:sym<{ }>"  :subid("205_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx857_tgt
     .local int rx857_pos
@@ -10277,7 +10301,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<{ }>"  :subid("206_1272455252.89365") :method
+.sub "!PREFIX__quote_escape:sym<{ }>"  :subid("206_1272816833.94956") :method
 .annotate "line", 4
     new $P859, "ResizablePMCArray"
     push $P859, "{"
@@ -10286,7 +10310,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<esc>"  :subid("207_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "quote_escape:sym<esc>"  :subid("207_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx862_tgt
     .local int rx862_pos
@@ -10348,7 +10372,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<esc>"  :subid("208_1272455252.89365") :method
+.sub "!PREFIX__quote_escape:sym<esc>"  :subid("208_1272816833.94956") :method
 .annotate "line", 4
     new $P864, "ResizablePMCArray"
     push $P864, "\\e"
@@ -10357,7 +10381,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<( )>"  :subid("209_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "circumfix:sym<( )>"  :subid("209_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx867_tgt
     .local int rx867_pos
@@ -10441,7 +10465,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<( )>"  :subid("210_1272455252.89365") :method
+.sub "!PREFIX__circumfix:sym<( )>"  :subid("210_1272816833.94956") :method
 .annotate "line", 4
     $P869 = self."!PREFIX__!subrule"("", "(")
     new $P870, "ResizablePMCArray"
@@ -10451,7 +10475,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<[ ]>"  :subid("211_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "circumfix:sym<[ ]>"  :subid("211_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx875_tgt
     .local int rx875_pos
@@ -10535,7 +10559,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<[ ]>"  :subid("212_1272455252.89365") :method
+.sub "!PREFIX__circumfix:sym<[ ]>"  :subid("212_1272816833.94956") :method
 .annotate "line", 4
     $P877 = self."!PREFIX__!subrule"("", "[")
     new $P878, "ResizablePMCArray"
@@ -10545,7 +10569,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<ang>"  :subid("213_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "circumfix:sym<ang>"  :subid("213_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx883_tgt
     .local int rx883_pos
@@ -10609,7 +10633,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<ang>"  :subid("214_1272455252.89365") :method
+.sub "!PREFIX__circumfix:sym<ang>"  :subid("214_1272816833.94956") :method
 .annotate "line", 4
     new $P885, "ResizablePMCArray"
     push $P885, "<"
@@ -10618,7 +10642,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("215_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("215_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx888_tgt
     .local int rx888_pos
@@ -10682,7 +10706,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub unicode:"!PREFIX__circumfix:sym<\x{ab} \x{bb}>"  :subid("216_1272455252.89365") :method
+.sub unicode:"!PREFIX__circumfix:sym<\x{ab} \x{bb}>"  :subid("216_1272816833.94956") :method
 .annotate "line", 4
     new $P890, "ResizablePMCArray"
     push $P890, unicode:"\x{ab}"
@@ -10691,7 +10715,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<{ }>"  :subid("217_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "circumfix:sym<{ }>"  :subid("217_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx893_tgt
     .local int rx893_pos
@@ -10755,7 +10779,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<{ }>"  :subid("218_1272455252.89365") :method
+.sub "!PREFIX__circumfix:sym<{ }>"  :subid("218_1272816833.94956") :method
 .annotate "line", 4
     new $P895, "ResizablePMCArray"
     push $P895, "{"
@@ -10764,7 +10788,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<sigil>"  :subid("219_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "circumfix:sym<sigil>"  :subid("219_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx898_tgt
     .local int rx898_pos
@@ -10854,7 +10878,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<sigil>"  :subid("220_1272455252.89365") :method
+.sub "!PREFIX__circumfix:sym<sigil>"  :subid("220_1272816833.94956") :method
 .annotate "line", 4
     $P900 = self."!PREFIX__!subrule"("sigil", "")
     new $P901, "ResizablePMCArray"
@@ -10864,7 +10888,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "semilist"  :subid("221_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "semilist"  :subid("221_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx906_tgt
     .local int rx906_pos
@@ -10932,7 +10956,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__semilist"  :subid("222_1272455252.89365") :method
+.sub "!PREFIX__semilist"  :subid("222_1272816833.94956") :method
 .annotate "line", 4
     new $P908, "ResizablePMCArray"
     push $P908, ""
@@ -10941,7 +10965,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infixish"  :subid("223_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infixish"  :subid("223_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx913_tgt
     .local int rx913_pos
@@ -11003,7 +11027,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infixish"  :subid("224_1272455252.89365") :method
+.sub "!PREFIX__infixish"  :subid("224_1272816833.94956") :method
 .annotate "line", 422
     new $P915, "ResizablePMCArray"
     push $P915, ""
@@ -11012,7 +11036,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infixstopper"  :subid("225_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infixstopper"  :subid("225_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx918_tgt
     .local int rx918_pos
@@ -11067,7 +11091,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infixstopper"  :subid("226_1272455252.89365") :method
+.sub "!PREFIX__infixstopper"  :subid("226_1272816833.94956") :method
 .annotate "line", 422
     new $P920, "ResizablePMCArray"
     push $P920, ""
@@ -11076,7 +11100,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<[ ]>"  :subid("227_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "postcircumfix:sym<[ ]>"  :subid("227_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx923_tgt
     .local int rx923_pos
@@ -11162,7 +11186,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<[ ]>"  :subid("228_1272455252.89365") :method
+.sub "!PREFIX__postcircumfix:sym<[ ]>"  :subid("228_1272816833.94956") :method
 .annotate "line", 422
     $P925 = self."!PREFIX__!subrule"("", "[")
     new $P926, "ResizablePMCArray"
@@ -11172,7 +11196,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<{ }>"  :subid("229_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "postcircumfix:sym<{ }>"  :subid("229_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx929_tgt
     .local int rx929_pos
@@ -11258,7 +11282,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<{ }>"  :subid("230_1272455252.89365") :method
+.sub "!PREFIX__postcircumfix:sym<{ }>"  :subid("230_1272816833.94956") :method
 .annotate "line", 422
     $P931 = self."!PREFIX__!subrule"("", "{")
     new $P932, "ResizablePMCArray"
@@ -11268,7 +11292,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<ang>"  :subid("231_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "postcircumfix:sym<ang>"  :subid("231_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx935_tgt
     .local int rx935_pos
@@ -11341,7 +11365,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<ang>"  :subid("232_1272455252.89365") :method
+.sub "!PREFIX__postcircumfix:sym<ang>"  :subid("232_1272816833.94956") :method
 .annotate "line", 422
     new $P937, "ResizablePMCArray"
     push $P937, "<"
@@ -11350,7 +11374,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<( )>"  :subid("233_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "postcircumfix:sym<( )>"  :subid("233_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx940_tgt
     .local int rx940_pos
@@ -11436,7 +11460,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<( )>"  :subid("234_1272455252.89365") :method
+.sub "!PREFIX__postcircumfix:sym<( )>"  :subid("234_1272816833.94956") :method
 .annotate "line", 422
     $P942 = self."!PREFIX__!subrule"("", "(")
     new $P943, "ResizablePMCArray"
@@ -11446,7 +11470,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postfix:sym<.>"  :subid("235_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "postfix:sym<.>"  :subid("235_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx946_tgt
     .local int rx946_pos
@@ -11511,7 +11535,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<.>"  :subid("236_1272455252.89365") :method
+.sub "!PREFIX__postfix:sym<.>"  :subid("236_1272816833.94956") :method
 .annotate "line", 422
     $P948 = self."!PREFIX__!subrule"("dotty", "")
     new $P949, "ResizablePMCArray"
@@ -11521,7 +11545,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<++>"  :subid("237_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "prefix:sym<++>"  :subid("237_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx952_tgt
     .local int rx952_pos
@@ -11600,7 +11624,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<++>"  :subid("238_1272455252.89365") :method
+.sub "!PREFIX__prefix:sym<++>"  :subid("238_1272816833.94956") :method
 .annotate "line", 422
     $P954 = self."!PREFIX__!subrule"("O", "++")
     new $P955, "ResizablePMCArray"
@@ -11610,7 +11634,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<-->"  :subid("239_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "prefix:sym<-->"  :subid("239_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx959_tgt
     .local int rx959_pos
@@ -11689,7 +11713,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<-->"  :subid("240_1272455252.89365") :method
+.sub "!PREFIX__prefix:sym<-->"  :subid("240_1272816833.94956") :method
 .annotate "line", 422
     $P961 = self."!PREFIX__!subrule"("O", "--")
     new $P962, "ResizablePMCArray"
@@ -11699,7 +11723,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postfix:sym<++>"  :subid("241_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "postfix:sym<++>"  :subid("241_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx966_tgt
     .local int rx966_pos
@@ -11778,7 +11802,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<++>"  :subid("242_1272455252.89365") :method
+.sub "!PREFIX__postfix:sym<++>"  :subid("242_1272816833.94956") :method
 .annotate "line", 422
     $P968 = self."!PREFIX__!subrule"("O", "++")
     new $P969, "ResizablePMCArray"
@@ -11788,7 +11812,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postfix:sym<-->"  :subid("243_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "postfix:sym<-->"  :subid("243_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx973_tgt
     .local int rx973_pos
@@ -11867,7 +11891,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<-->"  :subid("244_1272455252.89365") :method
+.sub "!PREFIX__postfix:sym<-->"  :subid("244_1272816833.94956") :method
 .annotate "line", 422
     $P975 = self."!PREFIX__!subrule"("O", "--")
     new $P976, "ResizablePMCArray"
@@ -11877,7 +11901,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<**>"  :subid("245_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<**>"  :subid("245_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx980_tgt
     .local int rx980_pos
@@ -11956,7 +11980,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<**>"  :subid("246_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<**>"  :subid("246_1272816833.94956") :method
 .annotate "line", 422
     $P982 = self."!PREFIX__!subrule"("O", "**")
     new $P983, "ResizablePMCArray"
@@ -11966,7 +11990,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<+>"  :subid("247_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "prefix:sym<+>"  :subid("247_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx987_tgt
     .local int rx987_pos
@@ -12045,7 +12069,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<+>"  :subid("248_1272455252.89365") :method
+.sub "!PREFIX__prefix:sym<+>"  :subid("248_1272816833.94956") :method
 .annotate "line", 422
     $P989 = self."!PREFIX__!subrule"("O", "+")
     new $P990, "ResizablePMCArray"
@@ -12055,7 +12079,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<~>"  :subid("249_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "prefix:sym<~>"  :subid("249_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx994_tgt
     .local int rx994_pos
@@ -12134,7 +12158,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<~>"  :subid("250_1272455252.89365") :method
+.sub "!PREFIX__prefix:sym<~>"  :subid("250_1272816833.94956") :method
 .annotate "line", 422
     $P996 = self."!PREFIX__!subrule"("O", "~")
     new $P997, "ResizablePMCArray"
@@ -12144,7 +12168,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<->"  :subid("251_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "prefix:sym<->"  :subid("251_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1001_tgt
     .local int rx1001_pos
@@ -12233,7 +12257,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<->"  :subid("252_1272455252.89365") :method
+.sub "!PREFIX__prefix:sym<->"  :subid("252_1272816833.94956") :method
 .annotate "line", 422
     new $P1003, "ResizablePMCArray"
     push $P1003, "-"
@@ -12242,7 +12266,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<?>"  :subid("253_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "prefix:sym<?>"  :subid("253_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1007_tgt
     .local int rx1007_pos
@@ -12321,7 +12345,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<?>"  :subid("254_1272455252.89365") :method
+.sub "!PREFIX__prefix:sym<?>"  :subid("254_1272816833.94956") :method
 .annotate "line", 422
     $P1009 = self."!PREFIX__!subrule"("O", "?")
     new $P1010, "ResizablePMCArray"
@@ -12331,7 +12355,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<!>"  :subid("255_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "prefix:sym<!>"  :subid("255_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1014_tgt
     .local int rx1014_pos
@@ -12410,7 +12434,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<!>"  :subid("256_1272455252.89365") :method
+.sub "!PREFIX__prefix:sym<!>"  :subid("256_1272816833.94956") :method
 .annotate "line", 422
     $P1016 = self."!PREFIX__!subrule"("O", "!")
     new $P1017, "ResizablePMCArray"
@@ -12420,7 +12444,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<|>"  :subid("257_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "prefix:sym<|>"  :subid("257_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1021_tgt
     .local int rx1021_pos
@@ -12499,7 +12523,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<|>"  :subid("258_1272455252.89365") :method
+.sub "!PREFIX__prefix:sym<|>"  :subid("258_1272816833.94956") :method
 .annotate "line", 422
     $P1023 = self."!PREFIX__!subrule"("O", "|")
     new $P1024, "ResizablePMCArray"
@@ -12509,7 +12533,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<*>"  :subid("259_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<*>"  :subid("259_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1028_tgt
     .local int rx1028_pos
@@ -12588,7 +12612,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<*>"  :subid("260_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<*>"  :subid("260_1272816833.94956") :method
 .annotate "line", 422
     $P1030 = self."!PREFIX__!subrule"("O", "*")
     new $P1031, "ResizablePMCArray"
@@ -12598,7 +12622,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym</>"  :subid("261_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym</>"  :subid("261_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1035_tgt
     .local int rx1035_pos
@@ -12677,7 +12701,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym</>"  :subid("262_1272455252.89365") :method
+.sub "!PREFIX__infix:sym</>"  :subid("262_1272816833.94956") :method
 .annotate "line", 422
     $P1037 = self."!PREFIX__!subrule"("O", "/")
     new $P1038, "ResizablePMCArray"
@@ -12687,7 +12711,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<%>"  :subid("263_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<%>"  :subid("263_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1042_tgt
     .local int rx1042_pos
@@ -12766,7 +12790,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<%>"  :subid("264_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<%>"  :subid("264_1272816833.94956") :method
 .annotate "line", 422
     $P1044 = self."!PREFIX__!subrule"("O", "%")
     new $P1045, "ResizablePMCArray"
@@ -12776,7 +12800,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<+>"  :subid("265_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<+>"  :subid("265_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1049_tgt
     .local int rx1049_pos
@@ -12855,7 +12879,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<+>"  :subid("266_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<+>"  :subid("266_1272816833.94956") :method
 .annotate "line", 422
     $P1051 = self."!PREFIX__!subrule"("O", "+")
     new $P1052, "ResizablePMCArray"
@@ -12865,7 +12889,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<->"  :subid("267_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<->"  :subid("267_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1056_tgt
     .local int rx1056_pos
@@ -12944,7 +12968,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<->"  :subid("268_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<->"  :subid("268_1272816833.94956") :method
 .annotate "line", 422
     $P1058 = self."!PREFIX__!subrule"("O", "-")
     new $P1059, "ResizablePMCArray"
@@ -12954,7 +12978,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<~>"  :subid("269_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<~>"  :subid("269_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1063_tgt
     .local int rx1063_pos
@@ -13033,7 +13057,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<~>"  :subid("270_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<~>"  :subid("270_1272816833.94956") :method
 .annotate "line", 422
     $P1065 = self."!PREFIX__!subrule"("O", "~")
     new $P1066, "ResizablePMCArray"
@@ -13043,7 +13067,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<==>"  :subid("271_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<==>"  :subid("271_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1070_tgt
     .local int rx1070_pos
@@ -13122,7 +13146,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<==>"  :subid("272_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<==>"  :subid("272_1272816833.94956") :method
 .annotate "line", 422
     $P1072 = self."!PREFIX__!subrule"("O", "==")
     new $P1073, "ResizablePMCArray"
@@ -13132,7 +13156,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<!=>"  :subid("273_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<!=>"  :subid("273_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1077_tgt
     .local int rx1077_pos
@@ -13211,7 +13235,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<!=>"  :subid("274_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<!=>"  :subid("274_1272816833.94956") :method
 .annotate "line", 422
     $P1079 = self."!PREFIX__!subrule"("O", "!=")
     new $P1080, "ResizablePMCArray"
@@ -13221,7 +13245,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<<=>"  :subid("275_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<<=>"  :subid("275_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1084_tgt
     .local int rx1084_pos
@@ -13300,7 +13324,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<<=>"  :subid("276_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<<=>"  :subid("276_1272816833.94956") :method
 .annotate "line", 422
     $P1086 = self."!PREFIX__!subrule"("O", "<=")
     new $P1087, "ResizablePMCArray"
@@ -13310,7 +13334,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<>=>"  :subid("277_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<>=>"  :subid("277_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1091_tgt
     .local int rx1091_pos
@@ -13389,7 +13413,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<>=>"  :subid("278_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<>=>"  :subid("278_1272816833.94956") :method
 .annotate "line", 422
     $P1093 = self."!PREFIX__!subrule"("O", ">=")
     new $P1094, "ResizablePMCArray"
@@ -13399,7 +13423,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<<>"  :subid("279_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<<>"  :subid("279_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1098_tgt
     .local int rx1098_pos
@@ -13478,7 +13502,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<<>"  :subid("280_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<<>"  :subid("280_1272816833.94956") :method
 .annotate "line", 422
     $P1100 = self."!PREFIX__!subrule"("O", "<")
     new $P1101, "ResizablePMCArray"
@@ -13488,7 +13512,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<>>"  :subid("281_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<>>"  :subid("281_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1105_tgt
     .local int rx1105_pos
@@ -13567,7 +13591,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<>>"  :subid("282_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<>>"  :subid("282_1272816833.94956") :method
 .annotate "line", 422
     $P1107 = self."!PREFIX__!subrule"("O", ">")
     new $P1108, "ResizablePMCArray"
@@ -13577,7 +13601,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<eq>"  :subid("283_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<eq>"  :subid("283_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1112_tgt
     .local int rx1112_pos
@@ -13656,7 +13680,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<eq>"  :subid("284_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<eq>"  :subid("284_1272816833.94956") :method
 .annotate "line", 422
     $P1114 = self."!PREFIX__!subrule"("O", "eq")
     new $P1115, "ResizablePMCArray"
@@ -13666,7 +13690,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<ne>"  :subid("285_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<ne>"  :subid("285_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1119_tgt
     .local int rx1119_pos
@@ -13745,7 +13769,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<ne>"  :subid("286_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<ne>"  :subid("286_1272816833.94956") :method
 .annotate "line", 422
     $P1121 = self."!PREFIX__!subrule"("O", "ne")
     new $P1122, "ResizablePMCArray"
@@ -13755,7 +13779,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<le>"  :subid("287_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<le>"  :subid("287_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1126_tgt
     .local int rx1126_pos
@@ -13834,7 +13858,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<le>"  :subid("288_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<le>"  :subid("288_1272816833.94956") :method
 .annotate "line", 422
     $P1128 = self."!PREFIX__!subrule"("O", "le")
     new $P1129, "ResizablePMCArray"
@@ -13844,7 +13868,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<ge>"  :subid("289_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<ge>"  :subid("289_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1133_tgt
     .local int rx1133_pos
@@ -13923,7 +13947,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<ge>"  :subid("290_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<ge>"  :subid("290_1272816833.94956") :method
 .annotate "line", 422
     $P1135 = self."!PREFIX__!subrule"("O", "ge")
     new $P1136, "ResizablePMCArray"
@@ -13933,7 +13957,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<lt>"  :subid("291_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<lt>"  :subid("291_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1140_tgt
     .local int rx1140_pos
@@ -14012,7 +14036,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<lt>"  :subid("292_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<lt>"  :subid("292_1272816833.94956") :method
 .annotate "line", 422
     $P1142 = self."!PREFIX__!subrule"("O", "lt")
     new $P1143, "ResizablePMCArray"
@@ -14022,7 +14046,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<gt>"  :subid("293_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<gt>"  :subid("293_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1147_tgt
     .local int rx1147_pos
@@ -14101,7 +14125,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<gt>"  :subid("294_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<gt>"  :subid("294_1272816833.94956") :method
 .annotate "line", 422
     $P1149 = self."!PREFIX__!subrule"("O", "gt")
     new $P1150, "ResizablePMCArray"
@@ -14111,7 +14135,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<=:=>"  :subid("295_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<=:=>"  :subid("295_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1154_tgt
     .local int rx1154_pos
@@ -14190,7 +14214,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<=:=>"  :subid("296_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<=:=>"  :subid("296_1272816833.94956") :method
 .annotate "line", 422
     $P1156 = self."!PREFIX__!subrule"("O", "=:=")
     new $P1157, "ResizablePMCArray"
@@ -14200,7 +14224,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<~~>"  :subid("297_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<~~>"  :subid("297_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1161_tgt
     .local int rx1161_pos
@@ -14279,7 +14303,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<~~>"  :subid("298_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<~~>"  :subid("298_1272816833.94956") :method
 .annotate "line", 422
     $P1163 = self."!PREFIX__!subrule"("O", "~~")
     new $P1164, "ResizablePMCArray"
@@ -14289,7 +14313,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<&&>"  :subid("299_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<&&>"  :subid("299_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1168_tgt
     .local int rx1168_pos
@@ -14368,7 +14392,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<&&>"  :subid("300_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<&&>"  :subid("300_1272816833.94956") :method
 .annotate "line", 422
     $P1170 = self."!PREFIX__!subrule"("O", "&&")
     new $P1171, "ResizablePMCArray"
@@ -14378,7 +14402,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<||>"  :subid("301_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<||>"  :subid("301_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1175_tgt
     .local int rx1175_pos
@@ -14457,7 +14481,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<||>"  :subid("302_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<||>"  :subid("302_1272816833.94956") :method
 .annotate "line", 422
     $P1177 = self."!PREFIX__!subrule"("O", "||")
     new $P1178, "ResizablePMCArray"
@@ -14467,7 +14491,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<//>"  :subid("303_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<//>"  :subid("303_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1182_tgt
     .local int rx1182_pos
@@ -14546,7 +14570,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<//>"  :subid("304_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<//>"  :subid("304_1272816833.94956") :method
 .annotate "line", 422
     $P1184 = self."!PREFIX__!subrule"("O", "//")
     new $P1185, "ResizablePMCArray"
@@ -14556,7 +14580,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<?? !!>"  :subid("305_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<?? !!>"  :subid("305_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1189_tgt
     .local int rx1189_pos
@@ -14645,7 +14669,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<?? !!>"  :subid("306_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<?? !!>"  :subid("306_1272816833.94956") :method
 .annotate "line", 422
     $P1191 = self."!PREFIX__!subrule"("", "??")
     new $P1192, "ResizablePMCArray"
@@ -14655,7 +14679,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<=>"  :subid("307_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<=>"  :subid("307_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1195_tgt
     .local int rx1195_pos
@@ -14733,7 +14757,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<=>"  :subid("308_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<=>"  :subid("308_1272816833.94956") :method
 .annotate "line", 422
     $P1197 = self."!PREFIX__!subrule"("", "=")
     new $P1198, "ResizablePMCArray"
@@ -14743,7 +14767,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<:=>"  :subid("309_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<:=>"  :subid("309_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1202_tgt
     .local int rx1202_pos
@@ -14822,7 +14846,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<:=>"  :subid("310_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<:=>"  :subid("310_1272816833.94956") :method
 .annotate "line", 422
     $P1204 = self."!PREFIX__!subrule"("O", ":=")
     new $P1205, "ResizablePMCArray"
@@ -14832,7 +14856,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<::=>"  :subid("311_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<::=>"  :subid("311_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1209_tgt
     .local int rx1209_pos
@@ -14911,7 +14935,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<::=>"  :subid("312_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<::=>"  :subid("312_1272816833.94956") :method
 .annotate "line", 422
     $P1211 = self."!PREFIX__!subrule"("O", "::=")
     new $P1212, "ResizablePMCArray"
@@ -14921,7 +14945,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<,>"  :subid("313_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "infix:sym<,>"  :subid("313_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1216_tgt
     .local int rx1216_pos
@@ -15000,7 +15024,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<,>"  :subid("314_1272455252.89365") :method
+.sub "!PREFIX__infix:sym<,>"  :subid("314_1272816833.94956") :method
 .annotate "line", 422
     $P1218 = self."!PREFIX__!subrule"("O", ",")
     new $P1219, "ResizablePMCArray"
@@ -15010,7 +15034,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<return>"  :subid("315_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "prefix:sym<return>"  :subid("315_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1223_tgt
     .local int rx1223_pos
@@ -15095,7 +15119,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<return>"  :subid("316_1272455252.89365") :method
+.sub "!PREFIX__prefix:sym<return>"  :subid("316_1272816833.94956") :method
 .annotate "line", 422
     new $P1225, "ResizablePMCArray"
     push $P1225, "return"
@@ -15104,7 +15128,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<make>"  :subid("317_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "prefix:sym<make>"  :subid("317_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 422
     .local string rx1229_tgt
     .local int rx1229_pos
@@ -15189,7 +15213,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<make>"  :subid("318_1272455252.89365") :method
+.sub "!PREFIX__prefix:sym<make>"  :subid("318_1272816833.94956") :method
 .annotate "line", 422
     new $P1231, "ResizablePMCArray"
     push $P1231, "make"
@@ -15198,7 +15222,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "smartmatch"  :subid("319_1272455252.89365") :method :outer("11_1272455252.89365")
+.sub "smartmatch"  :subid("319_1272816833.94956") :method :outer("11_1272816833.94956")
     .param pmc param_1237
 .annotate "line", 530
     new $P1236, 'ExceptionHandler'
@@ -15251,28 +15275,28 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1247"  :subid("320_1272455252.89365") :outer("11_1272455252.89365")
+.sub "_block1247"  :subid("320_1272816833.94956") :outer("11_1272816833.94956")
 .annotate "line", 536
-    .const 'Sub' $P1281 = "331_1272455252.89365" 
+    .const 'Sub' $P1281 = "331_1272816833.94956" 
     capture_lex $P1281
-    .const 'Sub' $P1268 = "328_1272455252.89365" 
+    .const 'Sub' $P1268 = "328_1272816833.94956" 
     capture_lex $P1268
-    .const 'Sub' $P1263 = "326_1272455252.89365" 
+    .const 'Sub' $P1263 = "326_1272816833.94956" 
     capture_lex $P1263
-    .const 'Sub' $P1258 = "324_1272455252.89365" 
+    .const 'Sub' $P1258 = "324_1272816833.94956" 
     capture_lex $P1258
-    .const 'Sub' $P1249 = "321_1272455252.89365" 
+    .const 'Sub' $P1249 = "321_1272816833.94956" 
     capture_lex $P1249
-    .const 'Sub' $P1281 = "331_1272455252.89365" 
+    .const 'Sub' $P1281 = "331_1272816833.94956" 
     capture_lex $P1281
     .return ($P1281)
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "metachar:sym<:my>"  :subid("321_1272455252.89365") :method :outer("320_1272455252.89365")
+.sub "metachar:sym<:my>"  :subid("321_1272816833.94956") :method :outer("320_1272816833.94956")
 .annotate "line", 536
-    .const 'Sub' $P1255 = "323_1272455252.89365" 
+    .const 'Sub' $P1255 = "323_1272816833.94956" 
     capture_lex $P1255
     .local string rx1250_tgt
     .local int rx1250_pos
@@ -15313,7 +15337,7 @@
     add rx1250_pos, 1
   # rx subrule "before" subtype=zerowidth negate=
     rx1250_cur."!cursor_pos"(rx1250_pos)
-    .const 'Sub' $P1255 = "323_1272455252.89365" 
+    .const 'Sub' $P1255 = "323_1272816833.94956" 
     capture_lex $P1255
     $P10 = rx1250_cur."before"($P1255)
     unless $P10, rx1250_fail
@@ -15356,7 +15380,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__metachar:sym<:my>"  :subid("322_1272455252.89365") :method
+.sub "!PREFIX__metachar:sym<:my>"  :subid("322_1272816833.94956") :method
 .annotate "line", 536
     new $P1252, "ResizablePMCArray"
     push $P1252, ":"
@@ -15365,7 +15389,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1254"  :anon :subid("323_1272455252.89365") :method :outer("321_1272455252.89365")
+.sub "_block1254"  :anon :subid("323_1272816833.94956") :method :outer("321_1272816833.94956")
 .annotate "line", 538
     .local string rx1256_tgt
     .local int rx1256_pos
@@ -15421,7 +15445,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "metachar:sym<{ }>"  :subid("324_1272455252.89365") :method :outer("320_1272455252.89365")
+.sub "metachar:sym<{ }>"  :subid("324_1272816833.94956") :method :outer("320_1272816833.94956")
 .annotate "line", 536
     .local string rx1259_tgt
     .local int rx1259_pos
@@ -15486,7 +15510,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__metachar:sym<{ }>"  :subid("325_1272455252.89365") :method
+.sub "!PREFIX__metachar:sym<{ }>"  :subid("325_1272816833.94956") :method
 .annotate "line", 536
     new $P1261, "ResizablePMCArray"
     push $P1261, "{"
@@ -15495,7 +15519,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "assertion:sym<{ }>"  :subid("326_1272455252.89365") :method :outer("320_1272455252.89365")
+.sub "assertion:sym<{ }>"  :subid("326_1272816833.94956") :method :outer("320_1272816833.94956")
 .annotate "line", 536
     .local string rx1264_tgt
     .local int rx1264_pos
@@ -15560,7 +15584,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<{ }>"  :subid("327_1272455252.89365") :method
+.sub "!PREFIX__assertion:sym<{ }>"  :subid("327_1272816833.94956") :method
 .annotate "line", 536
     new $P1266, "ResizablePMCArray"
     push $P1266, "{"
@@ -15569,9 +15593,9 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "assertion:sym<name>"  :subid("328_1272455252.89365") :method :outer("320_1272455252.89365")
+.sub "assertion:sym<name>"  :subid("328_1272816833.94956") :method :outer("320_1272816833.94956")
 .annotate "line", 536
-    .const 'Sub' $P1277 = "330_1272455252.89365" 
+    .const 'Sub' $P1277 = "330_1272816833.94956" 
     capture_lex $P1277
     .local string rx1269_tgt
     .local int rx1269_pos
@@ -15581,7 +15605,7 @@
     .local pmc rx1269_cur
     (rx1269_cur, rx1269_pos, rx1269_tgt) = self."!cursor_start"()
     rx1269_cur."!cursor_debug"("START ", "assertion:sym<name>")
-    rx1269_cur."!cursor_caparray"("arglist", "nibbler", "assertion")
+    rx1269_cur."!cursor_caparray"("nibbler", "arglist", "assertion")
     .lex unicode:"$\x{a2}", rx1269_cur
     .local pmc match
     .lex "$/", match
@@ -15636,7 +15660,7 @@
 .annotate "line", 552
   # rx subrule "before" subtype=zerowidth negate=
     rx1269_cur."!cursor_pos"(rx1269_pos)
-    .const 'Sub' $P1277 = "330_1272455252.89365" 
+    .const 'Sub' $P1277 = "330_1272816833.94956" 
     capture_lex $P1277
     $P10 = rx1269_cur."before"($P1277)
     unless $P10, rx1269_fail
@@ -15743,7 +15767,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<name>"  :subid("329_1272455252.89365") :method
+.sub "!PREFIX__assertion:sym<name>"  :subid("329_1272816833.94956") :method
 .annotate "line", 536
     new $P1271, "ResizablePMCArray"
     push $P1271, ""
@@ -15752,7 +15776,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1276"  :anon :subid("330_1272455252.89365") :method :outer("328_1272455252.89365")
+.sub "_block1276"  :anon :subid("330_1272816833.94956") :method :outer("328_1272816833.94956")
 .annotate "line", 552
     .local string rx1278_tgt
     .local int rx1278_pos
@@ -15808,7 +15832,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "codeblock"  :subid("331_1272455252.89365") :method :outer("320_1272455252.89365")
+.sub "codeblock"  :subid("331_1272816833.94956") :method :outer("320_1272816833.94956")
 .annotate "line", 536
     .local string rx1282_tgt
     .local int rx1282_pos
@@ -15867,7 +15891,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__codeblock"  :subid("332_1272455252.89365") :method
+.sub "!PREFIX__codeblock"  :subid("332_1272816833.94956") :method
 .annotate "line", 536
     $P1284 = self."!PREFIX__!subrule"("block", "")
     new $P1285, "ResizablePMCArray"
@@ -15878,7 +15902,7 @@
 ### .include 'gen/nqp-actions.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1272455259.05437")
+.sub "_block11"  :anon :subid("10_1272816841.80681")
 .annotate "line", 0
     get_hll_global $P14, ["NQP";"Actions"], "_block13" 
     capture_lex $P14
@@ -15892,9 +15916,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post127") :outer("10_1272455259.05437")
+.sub "" :load :init :subid("post127") :outer("10_1272816841.80681")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1272455259.05437" 
+    .const 'Sub' $P12 = "10_1272816841.80681" 
     .local pmc block
     set block, $P12
     $P2176 = get_root_global ["parrot"], "P6metaclass"
@@ -15903,201 +15927,201 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block13"  :subid("11_1272455259.05437") :outer("10_1272455259.05437")
+.sub "_block13"  :subid("11_1272816841.80681") :outer("10_1272816841.80681")
 .annotate "line", 3
-    .const 'Sub' $P2171 = "126_1272455259.05437" 
+    .const 'Sub' $P2171 = "126_1272816841.80681" 
     capture_lex $P2171
     get_hll_global $P2107, ["NQP";"RegexActions"], "_block2106" 
     capture_lex $P2107
-    .const 'Sub' $P2096 = "120_1272455259.05437" 
+    .const 'Sub' $P2096 = "120_1272816841.80681" 
     capture_lex $P2096
-    .const 'Sub' $P2084 = "119_1272455259.05437" 
+    .const 'Sub' $P2084 = "119_1272816841.80681" 
     capture_lex $P2084
-    .const 'Sub' $P2074 = "118_1272455259.05437" 
+    .const 'Sub' $P2074 = "118_1272816841.80681" 
     capture_lex $P2074
-    .const 'Sub' $P2064 = "117_1272455259.05437" 
+    .const 'Sub' $P2064 = "117_1272816841.80681" 
     capture_lex $P2064
-    .const 'Sub' $P2054 = "116_1272455259.05437" 
+    .const 'Sub' $P2054 = "116_1272816841.80681" 
     capture_lex $P2054
-    .const 'Sub' $P2047 = "115_1272455259.05437" 
+    .const 'Sub' $P2047 = "115_1272816841.80681" 
     capture_lex $P2047
-    .const 'Sub' $P2033 = "114_1272455259.05437" 
+    .const 'Sub' $P2033 = "114_1272816841.80681" 
     capture_lex $P2033
-    .const 'Sub' $P2023 = "113_1272455259.05437" 
+    .const 'Sub' $P2023 = "113_1272816841.80681" 
     capture_lex $P2023
-    .const 'Sub' $P1986 = "112_1272455259.05437" 
+    .const 'Sub' $P1986 = "112_1272816841.80681" 
     capture_lex $P1986
-    .const 'Sub' $P1972 = "111_1272455259.05437" 
+    .const 'Sub' $P1972 = "111_1272816841.80681" 
     capture_lex $P1972
-    .const 'Sub' $P1962 = "110_1272455259.05437" 
+    .const 'Sub' $P1962 = "110_1272816841.80681" 
     capture_lex $P1962
-    .const 'Sub' $P1952 = "109_1272455259.05437" 
+    .const 'Sub' $P1952 = "109_1272816841.80681" 
     capture_lex $P1952
-    .const 'Sub' $P1942 = "108_1272455259.05437" 
+    .const 'Sub' $P1942 = "108_1272816841.80681" 
     capture_lex $P1942
-    .const 'Sub' $P1932 = "107_1272455259.05437" 
+    .const 'Sub' $P1932 = "107_1272816841.80681" 
     capture_lex $P1932
-    .const 'Sub' $P1922 = "106_1272455259.05437" 
+    .const 'Sub' $P1922 = "106_1272816841.80681" 
     capture_lex $P1922
-    .const 'Sub' $P1894 = "105_1272455259.05437" 
+    .const 'Sub' $P1894 = "105_1272816841.80681" 
     capture_lex $P1894
-    .const 'Sub' $P1877 = "104_1272455259.05437" 
+    .const 'Sub' $P1877 = "104_1272816841.80681" 
     capture_lex $P1877
-    .const 'Sub' $P1867 = "103_1272455259.05437" 
+    .const 'Sub' $P1867 = "103_1272816841.80681" 
     capture_lex $P1867
-    .const 'Sub' $P1854 = "102_1272455259.05437" 
+    .const 'Sub' $P1854 = "102_1272816841.80681" 
     capture_lex $P1854
-    .const 'Sub' $P1841 = "101_1272455259.05437" 
+    .const 'Sub' $P1841 = "101_1272816841.80681" 
     capture_lex $P1841
-    .const 'Sub' $P1828 = "100_1272455259.05437" 
+    .const 'Sub' $P1828 = "100_1272816841.80681" 
     capture_lex $P1828
-    .const 'Sub' $P1818 = "99_1272455259.05437" 
+    .const 'Sub' $P1818 = "99_1272816841.80681" 
     capture_lex $P1818
-    .const 'Sub' $P1789 = "98_1272455259.05437" 
+    .const 'Sub' $P1789 = "98_1272816841.80681" 
     capture_lex $P1789
-    .const 'Sub' $P1769 = "97_1272455259.05437" 
+    .const 'Sub' $P1769 = "97_1272816841.80681" 
     capture_lex $P1769
-    .const 'Sub' $P1759 = "96_1272455259.05437" 
+    .const 'Sub' $P1759 = "96_1272816841.80681" 
     capture_lex $P1759
-    .const 'Sub' $P1749 = "95_1272455259.05437" 
+    .const 'Sub' $P1749 = "95_1272816841.80681" 
     capture_lex $P1749
-    .const 'Sub' $P1722 = "94_1272455259.05437" 
+    .const 'Sub' $P1722 = "94_1272816841.80681" 
     capture_lex $P1722
-    .const 'Sub' $P1704 = "93_1272455259.05437" 
+    .const 'Sub' $P1704 = "93_1272816841.80681" 
     capture_lex $P1704
-    .const 'Sub' $P1694 = "92_1272455259.05437" 
+    .const 'Sub' $P1694 = "92_1272816841.80681" 
     capture_lex $P1694
-    .const 'Sub' $P1610 = "89_1272455259.05437" 
+    .const 'Sub' $P1610 = "89_1272816841.80681" 
     capture_lex $P1610
-    .const 'Sub' $P1600 = "88_1272455259.05437" 
+    .const 'Sub' $P1600 = "88_1272816841.80681" 
     capture_lex $P1600
-    .const 'Sub' $P1571 = "87_1272455259.05437" 
+    .const 'Sub' $P1571 = "87_1272816841.80681" 
     capture_lex $P1571
-    .const 'Sub' $P1529 = "86_1272455259.05437" 
+    .const 'Sub' $P1529 = "86_1272816841.80681" 
     capture_lex $P1529
-    .const 'Sub' $P1513 = "85_1272455259.05437" 
+    .const 'Sub' $P1513 = "85_1272816841.80681" 
     capture_lex $P1513
-    .const 'Sub' $P1504 = "84_1272455259.05437" 
+    .const 'Sub' $P1504 = "84_1272816841.80681" 
     capture_lex $P1504
-    .const 'Sub' $P1472 = "83_1272455259.05437" 
+    .const 'Sub' $P1472 = "83_1272816841.80681" 
     capture_lex $P1472
-    .const 'Sub' $P1373 = "80_1272455259.05437" 
+    .const 'Sub' $P1373 = "80_1272816841.80681" 
     capture_lex $P1373
-    .const 'Sub' $P1356 = "79_1272455259.05437" 
+    .const 'Sub' $P1356 = "79_1272816841.80681" 
     capture_lex $P1356
-    .const 'Sub' $P1336 = "78_1272455259.05437" 
+    .const 'Sub' $P1336 = "78_1272816841.80681" 
     capture_lex $P1336
-    .const 'Sub' $P1252 = "77_1272455259.05437" 
+    .const 'Sub' $P1252 = "77_1272816841.80681" 
     capture_lex $P1252
-    .const 'Sub' $P1228 = "75_1272455259.05437" 
+    .const 'Sub' $P1228 = "75_1272816841.80681" 
     capture_lex $P1228
-    .const 'Sub' $P1194 = "73_1272455259.05437" 
+    .const 'Sub' $P1194 = "73_1272816841.80681" 
     capture_lex $P1194
-    .const 'Sub' $P1144 = "71_1272455259.05437" 
+    .const 'Sub' $P1144 = "71_1272816841.80681" 
     capture_lex $P1144
-    .const 'Sub' $P1134 = "70_1272455259.05437" 
+    .const 'Sub' $P1134 = "70_1272816841.80681" 
     capture_lex $P1134
-    .const 'Sub' $P1124 = "69_1272455259.05437" 
+    .const 'Sub' $P1124 = "69_1272816841.80681" 
     capture_lex $P1124
-    .const 'Sub' $P1053 = "67_1272455259.05437" 
+    .const 'Sub' $P1053 = "67_1272816841.80681" 
     capture_lex $P1053
-    .const 'Sub' $P1036 = "66_1272455259.05437" 
+    .const 'Sub' $P1036 = "66_1272816841.80681" 
     capture_lex $P1036
-    .const 'Sub' $P1026 = "65_1272455259.05437" 
+    .const 'Sub' $P1026 = "65_1272816841.80681" 
     capture_lex $P1026
-    .const 'Sub' $P1016 = "64_1272455259.05437" 
+    .const 'Sub' $P1016 = "64_1272816841.80681" 
     capture_lex $P1016
-    .const 'Sub' $P1006 = "63_1272455259.05437" 
+    .const 'Sub' $P1006 = "63_1272816841.80681" 
     capture_lex $P1006
-    .const 'Sub' $P982 = "62_1272455259.05437" 
+    .const 'Sub' $P982 = "62_1272816841.80681" 
     capture_lex $P982
-    .const 'Sub' $P929 = "61_1272455259.05437" 
+    .const 'Sub' $P929 = "61_1272816841.80681" 
     capture_lex $P929
-    .const 'Sub' $P919 = "60_1272455259.05437" 
+    .const 'Sub' $P919 = "60_1272816841.80681" 
     capture_lex $P919
-    .const 'Sub' $P830 = "58_1272455259.05437" 
+    .const 'Sub' $P830 = "58_1272816841.80681" 
     capture_lex $P830
-    .const 'Sub' $P804 = "57_1272455259.05437" 
+    .const 'Sub' $P804 = "57_1272816841.80681" 
     capture_lex $P804
-    .const 'Sub' $P788 = "56_1272455259.05437" 
+    .const 'Sub' $P788 = "56_1272816841.80681" 
     capture_lex $P788
-    .const 'Sub' $P778 = "55_1272455259.05437" 
+    .const 'Sub' $P778 = "55_1272816841.80681" 
     capture_lex $P778
-    .const 'Sub' $P768 = "54_1272455259.05437" 
+    .const 'Sub' $P768 = "54_1272816841.80681" 
     capture_lex $P768
-    .const 'Sub' $P758 = "53_1272455259.05437" 
+    .const 'Sub' $P758 = "53_1272816841.80681" 
     capture_lex $P758
-    .const 'Sub' $P748 = "52_1272455259.05437" 
+    .const 'Sub' $P748 = "52_1272816841.80681" 
     capture_lex $P748
-    .const 'Sub' $P738 = "51_1272455259.05437" 
+    .const 'Sub' $P738 = "51_1272816841.80681" 
     capture_lex $P738
-    .const 'Sub' $P728 = "50_1272455259.05437" 
+    .const 'Sub' $P728 = "50_1272816841.80681" 
     capture_lex $P728
-    .const 'Sub' $P718 = "49_1272455259.05437" 
+    .const 'Sub' $P718 = "49_1272816841.80681" 
     capture_lex $P718
-    .const 'Sub' $P708 = "48_1272455259.05437" 
+    .const 'Sub' $P708 = "48_1272816841.80681" 
     capture_lex $P708
-    .const 'Sub' $P698 = "47_1272455259.05437" 
+    .const 'Sub' $P698 = "47_1272816841.80681" 
     capture_lex $P698
-    .const 'Sub' $P688 = "46_1272455259.05437" 
+    .const 'Sub' $P688 = "46_1272816841.80681" 
     capture_lex $P688
-    .const 'Sub' $P678 = "45_1272455259.05437" 
+    .const 'Sub' $P678 = "45_1272816841.80681" 
     capture_lex $P678
-    .const 'Sub' $P668 = "44_1272455259.05437" 
+    .const 'Sub' $P668 = "44_1272816841.80681" 
     capture_lex $P668
-    .const 'Sub' $P658 = "43_1272455259.05437" 
+    .const 'Sub' $P658 = "43_1272816841.80681" 
     capture_lex $P658
-    .const 'Sub' $P640 = "42_1272455259.05437" 
+    .const 'Sub' $P640 = "42_1272816841.80681" 
     capture_lex $P640
-    .const 'Sub' $P605 = "41_1272455259.05437" 
+    .const 'Sub' $P605 = "41_1272816841.80681" 
     capture_lex $P605
-    .const 'Sub' $P589 = "40_1272455259.05437" 
+    .const 'Sub' $P589 = "40_1272816841.80681" 
     capture_lex $P589
-    .const 'Sub' $P568 = "39_1272455259.05437" 
+    .const 'Sub' $P568 = "39_1272816841.80681" 
     capture_lex $P568
-    .const 'Sub' $P548 = "38_1272455259.05437" 
+    .const 'Sub' $P548 = "38_1272816841.80681" 
     capture_lex $P548
-    .const 'Sub' $P535 = "37_1272455259.05437" 
+    .const 'Sub' $P535 = "37_1272816841.80681" 
     capture_lex $P535
-    .const 'Sub' $P509 = "36_1272455259.05437" 
+    .const 'Sub' $P509 = "36_1272816841.80681" 
     capture_lex $P509
-    .const 'Sub' $P473 = "35_1272455259.05437" 
+    .const 'Sub' $P473 = "35_1272816841.80681" 
     capture_lex $P473
-    .const 'Sub' $P456 = "34_1272455259.05437" 
+    .const 'Sub' $P456 = "34_1272816841.80681" 
     capture_lex $P456
-    .const 'Sub' $P442 = "33_1272455259.05437" 
+    .const 'Sub' $P442 = "33_1272816841.80681" 
     capture_lex $P442
-    .const 'Sub' $P389 = "31_1272455259.05437" 
+    .const 'Sub' $P389 = "31_1272816841.80681" 
     capture_lex $P389
-    .const 'Sub' $P376 = "30_1272455259.05437" 
+    .const 'Sub' $P376 = "30_1272816841.80681" 
     capture_lex $P376
-    .const 'Sub' $P357 = "29_1272455259.05437" 
+    .const 'Sub' $P357 = "29_1272816841.80681" 
     capture_lex $P357
-    .const 'Sub' $P347 = "28_1272455259.05437" 
+    .const 'Sub' $P347 = "28_1272816841.80681" 
     capture_lex $P347
-    .const 'Sub' $P337 = "27_1272455259.05437" 
+    .const 'Sub' $P337 = "27_1272816841.80681" 
     capture_lex $P337
-    .const 'Sub' $P321 = "26_1272455259.05437" 
+    .const 'Sub' $P321 = "26_1272816841.80681" 
     capture_lex $P321
-    .const 'Sub' $P261 = "24_1272455259.05437" 
+    .const 'Sub' $P261 = "24_1272816841.80681" 
     capture_lex $P261
-    .const 'Sub' $P212 = "22_1272455259.05437" 
+    .const 'Sub' $P212 = "22_1272816841.80681" 
     capture_lex $P212
-    .const 'Sub' $P193 = "21_1272455259.05437" 
+    .const 'Sub' $P193 = "21_1272816841.80681" 
     capture_lex $P193
-    .const 'Sub' $P160 = "20_1272455259.05437" 
+    .const 'Sub' $P160 = "20_1272816841.80681" 
     capture_lex $P160
-    .const 'Sub' $P150 = "19_1272455259.05437" 
+    .const 'Sub' $P150 = "19_1272816841.80681" 
     capture_lex $P150
-    .const 'Sub' $P96 = "18_1272455259.05437" 
+    .const 'Sub' $P96 = "18_1272816841.80681" 
     capture_lex $P96
-    .const 'Sub' $P81 = "17_1272455259.05437" 
+    .const 'Sub' $P81 = "17_1272816841.80681" 
     capture_lex $P81
-    .const 'Sub' $P61 = "16_1272455259.05437" 
+    .const 'Sub' $P61 = "16_1272816841.80681" 
     capture_lex $P61
-    .const 'Sub' $P26 = "13_1272455259.05437" 
+    .const 'Sub' $P26 = "13_1272816841.80681" 
     capture_lex $P26
-    .const 'Sub' $P16 = "12_1272455259.05437" 
+    .const 'Sub' $P16 = "12_1272816841.80681" 
     capture_lex $P16
     get_global $P15, "@BLOCK"
     unless_null $P15, vivify_130
@@ -16105,23 +16129,23 @@
     set_global "@BLOCK", $P15
   vivify_130:
 .annotate "line", 9
-    .const 'Sub' $P16 = "12_1272455259.05437" 
+    .const 'Sub' $P16 = "12_1272816841.80681" 
     capture_lex $P16
     .lex "xblock_immediate", $P16
 .annotate "line", 14
-    .const 'Sub' $P26 = "13_1272455259.05437" 
+    .const 'Sub' $P26 = "13_1272816841.80681" 
     capture_lex $P26
     .lex "block_immediate", $P26
 .annotate "line", 24
-    .const 'Sub' $P61 = "16_1272455259.05437" 
+    .const 'Sub' $P61 = "16_1272816841.80681" 
     capture_lex $P61
     .lex "vivitype", $P61
 .annotate "line", 43
-    .const 'Sub' $P81 = "17_1272455259.05437" 
+    .const 'Sub' $P81 = "17_1272816841.80681" 
     capture_lex $P81
     .lex "colonpair_str", $P81
 .annotate "line", 190
-    .const 'Sub' $P96 = "18_1272455259.05437" 
+    .const 'Sub' $P96 = "18_1272816841.80681" 
     capture_lex $P96
     .lex "push_block_handler", $P96
 .annotate "line", 3
@@ -16144,13 +16168,13 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "" :load :init :subid("post128") :outer("11_1272455259.05437")
+.sub "" :load :init :subid("post128") :outer("11_1272816841.80681")
 .annotate "line", 3
     get_hll_global $P14, ["NQP";"Actions"], "_block13" 
     .local pmc block
     set block, $P14
 .annotate "line", 5
-    .const 'Sub' $P2171 = "126_1272455259.05437" 
+    .const 'Sub' $P2171 = "126_1272816841.80681" 
     capture_lex $P2171
     $P2171()
     $P2174 = get_root_global ["parrot"], "P6metaclass"
@@ -16159,7 +16183,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block2170"  :anon :subid("126_1272455259.05437") :outer("11_1272455259.05437")
+.sub "_block2170"  :anon :subid("126_1272816841.80681") :outer("11_1272816841.80681")
 .annotate "line", 6
     get_global $P2172, "@BLOCK"
     unless_null $P2172, vivify_129
@@ -16174,7 +16198,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "xblock_immediate"  :subid("12_1272455259.05437") :outer("11_1272455259.05437")
+.sub "xblock_immediate"  :subid("12_1272816841.80681") :outer("11_1272816841.80681")
     .param pmc param_19
 .annotate "line", 9
     new $P18, 'ExceptionHandler'
@@ -16210,10 +16234,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "block_immediate"  :subid("13_1272455259.05437") :outer("11_1272455259.05437")
+.sub "block_immediate"  :subid("13_1272816841.80681") :outer("11_1272816841.80681")
     .param pmc param_29
 .annotate "line", 14
-    .const 'Sub' $P39 = "14_1272455259.05437" 
+    .const 'Sub' $P39 = "14_1272816841.80681" 
     capture_lex $P39
     new $P28, 'ExceptionHandler'
     set_addr $P28, control_27
@@ -16235,7 +16259,7 @@
     set $P32, $P37
   unless_33_end:
     if $P32, unless_31_end
-    .const 'Sub' $P39 = "14_1272455259.05437" 
+    .const 'Sub' $P39 = "14_1272816841.80681" 
     capture_lex $P39
     $P39()
   unless_31_end:
@@ -16251,9 +16275,9 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block38"  :anon :subid("14_1272455259.05437") :outer("13_1272455259.05437")
+.sub "_block38"  :anon :subid("14_1272816841.80681") :outer("13_1272816841.80681")
 .annotate "line", 16
-    .const 'Sub' $P50 = "15_1272455259.05437" 
+    .const 'Sub' $P50 = "15_1272816841.80681" 
     capture_lex $P50
 .annotate "line", 17
     new $P40, "Undef"
@@ -16276,7 +16300,7 @@
     unless $P44, loop55_done
     shift $P48, $P44
   loop55_redo:
-    .const 'Sub' $P50 = "15_1272455259.05437" 
+    .const 'Sub' $P50 = "15_1272816841.80681" 
     capture_lex $P50
     $P50($P48)
   loop55_next:
@@ -16299,7 +16323,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block49"  :anon :subid("15_1272455259.05437") :outer("14_1272455259.05437")
+.sub "_block49"  :anon :subid("15_1272816841.80681") :outer("14_1272816841.80681")
     .param pmc param_51
 .annotate "line", 18
     .lex "$_", param_51
@@ -16311,7 +16335,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "vivitype"  :subid("16_1272455259.05437") :outer("11_1272455259.05437")
+.sub "vivitype"  :subid("16_1272816841.80681") :outer("11_1272816841.80681")
     .param pmc param_64
 .annotate "line", 24
     new $P63, 'ExceptionHandler'
@@ -16359,7 +16383,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "colonpair_str"  :subid("17_1272455259.05437") :outer("11_1272455259.05437")
+.sub "colonpair_str"  :subid("17_1272816841.80681") :outer("11_1272816841.80681")
     .param pmc param_84
 .annotate "line", 43
     new $P83, 'ExceptionHandler'
@@ -16397,7 +16421,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "push_block_handler"  :subid("18_1272455259.05437") :outer("11_1272455259.05437")
+.sub "push_block_handler"  :subid("18_1272816841.80681") :outer("11_1272816841.80681")
     .param pmc param_99
     .param pmc param_100
 .annotate "line", 190
@@ -16514,7 +16538,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "TOP"  :subid("19_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "TOP"  :subid("19_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_153
 .annotate "line", 33
     new $P152, 'ExceptionHandler'
@@ -16544,7 +16568,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "deflongname"  :subid("20_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "deflongname"  :subid("20_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_163
 .annotate "line", 35
     new $P162, 'ExceptionHandler'
@@ -16633,7 +16657,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "comp_unit"  :subid("21_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "comp_unit"  :subid("21_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_196
 .annotate "line", 49
     new $P195, 'ExceptionHandler'
@@ -16686,10 +16710,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statementlist"  :subid("22_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "statementlist"  :subid("22_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_215
 .annotate "line", 57
-    .const 'Sub' $P229 = "23_1272455259.05437" 
+    .const 'Sub' $P229 = "23_1272816841.80681" 
     capture_lex $P229
     new $P214, 'ExceptionHandler'
     set_addr $P214, control_213
@@ -16734,7 +16758,7 @@
     unless $P223, loop254_done
     shift $P227, $P223
   loop254_redo:
-    .const 'Sub' $P229 = "23_1272455259.05437" 
+    .const 'Sub' $P229 = "23_1272816841.80681" 
     capture_lex $P229
     $P229($P227)
   loop254_next:
@@ -16764,7 +16788,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block228"  :anon :subid("23_1272455259.05437") :outer("22_1272455259.05437")
+.sub "_block228"  :anon :subid("23_1272816841.80681") :outer("22_1272816841.80681")
     .param pmc param_231
 .annotate "line", 61
     new $P230, "Undef"
@@ -16824,12 +16848,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement"  :subid("24_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "statement"  :subid("24_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_264
     .param pmc param_265 :optional
     .param int has_param_265 :opt_flag
 .annotate "line", 72
-    .const 'Sub' $P273 = "25_1272455259.05437" 
+    .const 'Sub' $P273 = "25_1272816841.80681" 
     capture_lex $P273
     new $P263, 'ExceptionHandler'
     set_addr $P263, control_262
@@ -16888,7 +16912,7 @@
     goto if_269_end
   if_269:
 .annotate "line", 74
-    .const 'Sub' $P273 = "25_1272455259.05437" 
+    .const 'Sub' $P273 = "25_1272816841.80681" 
     capture_lex $P273
     $P273()
   if_269_end:
@@ -16907,7 +16931,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block272"  :anon :subid("25_1272455259.05437") :outer("24_1272455259.05437")
+.sub "_block272"  :anon :subid("25_1272816841.80681") :outer("24_1272816841.80681")
 .annotate "line", 75
     new $P274, "Undef"
     .lex "$mc", $P274
@@ -17020,7 +17044,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "xblock"  :subid("26_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "xblock"  :subid("26_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_324
 .annotate "line", 90
     new $P323, 'ExceptionHandler'
@@ -17064,7 +17088,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "pblock"  :subid("27_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "pblock"  :subid("27_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_340
 .annotate "line", 94
     new $P339, 'ExceptionHandler'
@@ -17096,7 +17120,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "block"  :subid("28_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "block"  :subid("28_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_350
 .annotate "line", 98
     new $P349, 'ExceptionHandler'
@@ -17128,7 +17152,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "blockoid"  :subid("29_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "blockoid"  :subid("29_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_360
 .annotate "line", 102
     new $P359, 'ExceptionHandler'
@@ -17181,7 +17205,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "newpad"  :subid("30_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "newpad"  :subid("30_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_379
 .annotate "line", 110
     new $P378, 'ExceptionHandler'
@@ -17216,10 +17240,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<if>"  :subid("31_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "statement_control:sym<if>"  :subid("31_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_392
 .annotate "line", 117
-    .const 'Sub' $P420 = "32_1272455259.05437" 
+    .const 'Sub' $P420 = "32_1272816841.80681" 
     capture_lex $P420
     new $P391, 'ExceptionHandler'
     set_addr $P391, control_390
@@ -17304,7 +17328,7 @@
     isgt $I418, $N417, 0.0
     unless $I418, loop435_done
   loop435_redo:
-    .const 'Sub' $P420 = "32_1272455259.05437" 
+    .const 'Sub' $P420 = "32_1272816841.80681" 
     capture_lex $P420
     $P420()
   loop435_next:
@@ -17332,7 +17356,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block419"  :anon :subid("32_1272455259.05437") :outer("31_1272455259.05437")
+.sub "_block419"  :anon :subid("32_1272816841.80681") :outer("31_1272816841.80681")
 .annotate "line", 126
     new $P421, "Undef"
     .lex "$else", $P421
@@ -17371,7 +17395,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<unless>"  :subid("33_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "statement_control:sym<unless>"  :subid("33_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_445
 .annotate "line", 133
     new $P444, 'ExceptionHandler'
@@ -17412,7 +17436,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<while>"  :subid("34_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "statement_control:sym<while>"  :subid("34_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_459
 .annotate "line", 139
     new $P458, 'ExceptionHandler'
@@ -17462,7 +17486,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<repeat>"  :subid("35_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "statement_control:sym<repeat>"  :subid("35_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_476
 .annotate "line", 145
     new $P475, 'ExceptionHandler'
@@ -17562,7 +17586,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<for>"  :subid("36_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "statement_control:sym<for>"  :subid("36_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_512
 .annotate "line", 159
     new $P511, 'ExceptionHandler'
@@ -17642,7 +17666,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<return>"  :subid("37_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "statement_control:sym<return>"  :subid("37_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_538
 .annotate "line", 172
     new $P537, 'ExceptionHandler'
@@ -17677,7 +17701,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<CATCH>"  :subid("38_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "statement_control:sym<CATCH>"  :subid("38_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_551
 .annotate "line", 176
     new $P550, 'ExceptionHandler'
@@ -17735,7 +17759,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<CONTROL>"  :subid("39_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "statement_control:sym<CONTROL>"  :subid("39_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_571
 .annotate "line", 183
     new $P570, 'ExceptionHandler'
@@ -17793,7 +17817,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_prefix:sym<INIT>"  :subid("40_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "statement_prefix:sym<INIT>"  :subid("40_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_592
 .annotate "line", 227
     new $P591, 'ExceptionHandler'
@@ -17839,7 +17863,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_prefix:sym<try>"  :subid("41_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "statement_prefix:sym<try>"  :subid("41_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_608
 .annotate "line", 232
     new $P607, 'ExceptionHandler'
@@ -17916,7 +17940,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "blorst"  :subid("42_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "blorst"  :subid("42_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_643
 .annotate "line", 255
     new $P642, 'ExceptionHandler'
@@ -17975,7 +17999,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_cond:sym<if>"  :subid("43_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "statement_mod_cond:sym<if>"  :subid("43_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_661
 .annotate "line", 263
     new $P660, 'ExceptionHandler'
@@ -18005,7 +18029,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_cond:sym<unless>"  :subid("44_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "statement_mod_cond:sym<unless>"  :subid("44_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_671
 .annotate "line", 264
     new $P670, 'ExceptionHandler'
@@ -18035,7 +18059,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_loop:sym<while>"  :subid("45_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "statement_mod_loop:sym<while>"  :subid("45_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_681
 .annotate "line", 266
     new $P680, 'ExceptionHandler'
@@ -18065,7 +18089,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_loop:sym<until>"  :subid("46_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "statement_mod_loop:sym<until>"  :subid("46_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_691
 .annotate "line", 267
     new $P690, 'ExceptionHandler'
@@ -18095,7 +18119,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<fatarrow>"  :subid("47_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "term:sym<fatarrow>"  :subid("47_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_701
 .annotate "line", 271
     new $P700, 'ExceptionHandler'
@@ -18125,7 +18149,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<colonpair>"  :subid("48_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "term:sym<colonpair>"  :subid("48_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_711
 .annotate "line", 272
     new $P710, 'ExceptionHandler'
@@ -18155,7 +18179,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<variable>"  :subid("49_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "term:sym<variable>"  :subid("49_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_721
 .annotate "line", 273
     new $P720, 'ExceptionHandler'
@@ -18185,7 +18209,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<package_declarator>"  :subid("50_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "term:sym<package_declarator>"  :subid("50_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_731
 .annotate "line", 274
     new $P730, 'ExceptionHandler'
@@ -18215,7 +18239,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<scope_declarator>"  :subid("51_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "term:sym<scope_declarator>"  :subid("51_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_741
 .annotate "line", 275
     new $P740, 'ExceptionHandler'
@@ -18245,7 +18269,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<routine_declarator>"  :subid("52_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "term:sym<routine_declarator>"  :subid("52_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_751
 .annotate "line", 276
     new $P750, 'ExceptionHandler'
@@ -18275,7 +18299,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<regex_declarator>"  :subid("53_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "term:sym<regex_declarator>"  :subid("53_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_761
 .annotate "line", 277
     new $P760, 'ExceptionHandler'
@@ -18305,7 +18329,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<statement_prefix>"  :subid("54_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "term:sym<statement_prefix>"  :subid("54_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_771
 .annotate "line", 278
     new $P770, 'ExceptionHandler'
@@ -18335,7 +18359,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<lambda>"  :subid("55_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "term:sym<lambda>"  :subid("55_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_781
 .annotate "line", 279
     new $P780, 'ExceptionHandler'
@@ -18365,7 +18389,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "fatarrow"  :subid("56_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "fatarrow"  :subid("56_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_791
 .annotate "line", 281
     new $P790, 'ExceptionHandler'
@@ -18414,7 +18438,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "colonpair"  :subid("57_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "colonpair"  :subid("57_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_807
 .annotate "line", 287
     new $P806, 'ExceptionHandler'
@@ -18495,10 +18519,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "variable"  :subid("58_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "variable"  :subid("58_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_833
 .annotate "line", 295
-    .const 'Sub' $P846 = "59_1272455259.05437" 
+    .const 'Sub' $P846 = "59_1272816841.80681" 
     capture_lex $P846
     new $P832, 'ExceptionHandler'
     set_addr $P832, control_831
@@ -18522,7 +18546,7 @@
   vivify_297:
     if $P838, if_836
 .annotate "line", 301
-    .const 'Sub' $P846 = "59_1272455259.05437" 
+    .const 'Sub' $P846 = "59_1272816841.80681" 
     capture_lex $P846
     $P846()
     goto if_836_end
@@ -18559,7 +18583,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block845"  :anon :subid("59_1272455259.05437") :outer("58_1272455259.05437")
+.sub "_block845"  :anon :subid("59_1272816841.80681") :outer("58_1272816841.80681")
 .annotate "line", 302
     $P847 = root_new ['parrot';'ResizablePMCArray']
     .lex "@name", $P847
@@ -18728,7 +18752,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "package_declarator:sym<module>"  :subid("60_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "package_declarator:sym<module>"  :subid("60_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_922
 .annotate "line", 333
     new $P921, 'ExceptionHandler'
@@ -18758,7 +18782,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "package_declarator:sym<class>"  :subid("61_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "package_declarator:sym<class>"  :subid("61_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_932
 .annotate "line", 334
     new $P931, 'ExceptionHandler'
@@ -18915,7 +18939,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "package_def"  :subid("62_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "package_def"  :subid("62_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_985
 .annotate "line", 357
     new $P984, 'ExceptionHandler'
@@ -18993,7 +19017,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<my>"  :subid("63_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "scope_declarator:sym<my>"  :subid("63_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1009
 .annotate "line", 364
     new $P1008, 'ExceptionHandler'
@@ -19023,7 +19047,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<our>"  :subid("64_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "scope_declarator:sym<our>"  :subid("64_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1019
 .annotate "line", 365
     new $P1018, 'ExceptionHandler'
@@ -19053,7 +19077,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<has>"  :subid("65_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "scope_declarator:sym<has>"  :subid("65_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1029
 .annotate "line", 366
     new $P1028, 'ExceptionHandler'
@@ -19083,7 +19107,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "scoped"  :subid("66_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "scoped"  :subid("66_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1039
 .annotate "line", 368
     new $P1038, 'ExceptionHandler'
@@ -19141,10 +19165,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "variable_declarator"  :subid("67_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "variable_declarator"  :subid("67_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1056
 .annotate "line", 374
-    .const 'Sub' $P1096 = "68_1272455259.05437" 
+    .const 'Sub' $P1096 = "68_1272816841.80681" 
     capture_lex $P1096
     new $P1055, 'ExceptionHandler'
     set_addr $P1055, control_1054
@@ -19226,7 +19250,7 @@
     iseq $I1081, $S1080, "has"
     if $I1081, if_1078
 .annotate "line", 391
-    .const 'Sub' $P1096 = "68_1272455259.05437" 
+    .const 'Sub' $P1096 = "68_1272816841.80681" 
     capture_lex $P1096
     $P1096()
     goto if_1078_end
@@ -19286,7 +19310,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1095"  :anon :subid("68_1272455259.05437") :outer("67_1272455259.05437")
+.sub "_block1095"  :anon :subid("68_1272816841.80681") :outer("67_1272816841.80681")
 .annotate "line", 392
     new $P1097, "Undef"
     .lex "$scope", $P1097
@@ -19347,7 +19371,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "routine_declarator:sym<sub>"  :subid("69_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "routine_declarator:sym<sub>"  :subid("69_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1127
 .annotate "line", 402
     new $P1126, 'ExceptionHandler'
@@ -19377,7 +19401,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "routine_declarator:sym<method>"  :subid("70_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "routine_declarator:sym<method>"  :subid("70_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1137
 .annotate "line", 403
     new $P1136, 'ExceptionHandler'
@@ -19407,10 +19431,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "routine_def"  :subid("71_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "routine_def"  :subid("71_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1147
 .annotate "line", 405
-    .const 'Sub' $P1158 = "72_1272455259.05437" 
+    .const 'Sub' $P1158 = "72_1272816841.80681" 
     capture_lex $P1158
     new $P1146, 'ExceptionHandler'
     set_addr $P1146, control_1145
@@ -19447,7 +19471,7 @@
     new $P1156, "Undef"
   vivify_381:
     unless $P1156, if_1154_end
-    .const 'Sub' $P1158 = "72_1272455259.05437" 
+    .const 'Sub' $P1158 = "72_1272816841.80681" 
     capture_lex $P1158
     $P1158()
   if_1154_end:
@@ -19466,7 +19490,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1157"  :anon :subid("72_1272455259.05437") :outer("71_1272455259.05437")
+.sub "_block1157"  :anon :subid("72_1272816841.80681") :outer("71_1272816841.80681")
 .annotate "line", 410
     new $P1159, "Undef"
     .lex "$name", $P1159
@@ -19562,10 +19586,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "method_def"  :subid("73_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "method_def"  :subid("73_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1197
 .annotate "line", 423
-    .const 'Sub' $P1213 = "74_1272455259.05437" 
+    .const 'Sub' $P1213 = "74_1272816841.80681" 
     capture_lex $P1213
     new $P1196, 'ExceptionHandler'
     set_addr $P1196, control_1195
@@ -19617,7 +19641,7 @@
     new $P1211, "Undef"
   vivify_400:
     unless $P1211, if_1209_end
-    .const 'Sub' $P1213 = "74_1272455259.05437" 
+    .const 'Sub' $P1213 = "74_1272816841.80681" 
     capture_lex $P1213
     $P1213()
   if_1209_end:
@@ -19636,7 +19660,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1212"  :anon :subid("74_1272455259.05437") :outer("73_1272455259.05437")
+.sub "_block1212"  :anon :subid("74_1272816841.80681") :outer("73_1272816841.80681")
 .annotate "line", 430
     new $P1214, "Undef"
     .lex "$name", $P1214
@@ -19667,10 +19691,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "signature"  :subid("75_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "signature"  :subid("75_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1231
 .annotate "line", 437
-    .const 'Sub' $P1242 = "76_1272455259.05437" 
+    .const 'Sub' $P1242 = "76_1272816841.80681" 
     capture_lex $P1242
     new $P1230, 'ExceptionHandler'
     set_addr $P1230, control_1229
@@ -19714,7 +19738,7 @@
     unless $P1236, loop1248_done
     shift $P1240, $P1236
   loop1248_redo:
-    .const 'Sub' $P1242 = "76_1272455259.05437" 
+    .const 'Sub' $P1242 = "76_1272816841.80681" 
     capture_lex $P1242
     $P1242($P1240)
   loop1248_next:
@@ -19739,7 +19763,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1241"  :anon :subid("76_1272455259.05437") :outer("75_1272455259.05437")
+.sub "_block1241"  :anon :subid("76_1272816841.80681") :outer("75_1272816841.80681")
     .param pmc param_1243
 .annotate "line", 439
     .lex "$_", param_1243
@@ -19752,7 +19776,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "parameter"  :subid("77_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "parameter"  :subid("77_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1255
 .annotate "line", 442
     new $P1254, 'ExceptionHandler'
@@ -19984,7 +20008,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "param_var"  :subid("78_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "param_var"  :subid("78_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1339
 .annotate "line", 474
     new $P1338, 'ExceptionHandler'
@@ -20037,7 +20061,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "named_param"  :subid("79_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "named_param"  :subid("79_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1359
 .annotate "line", 482
     new $P1358, 'ExceptionHandler'
@@ -20090,14 +20114,14 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "regex_declarator"  :subid("80_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "regex_declarator"  :subid("80_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1376
     .param pmc param_1377 :optional
     .param int has_param_1377 :opt_flag
 .annotate "line", 488
-    .const 'Sub' $P1447 = "82_1272455259.05437" 
+    .const 'Sub' $P1447 = "82_1272816841.80681" 
     capture_lex $P1447
-    .const 'Sub' $P1419 = "81_1272455259.05437" 
+    .const 'Sub' $P1419 = "81_1272816841.80681" 
     capture_lex $P1419
     new $P1375, 'ExceptionHandler'
     set_addr $P1375, control_1374
@@ -20155,13 +20179,13 @@
     iseq $I1417, $S1416, "open"
     if $I1417, if_1414
 .annotate "line", 534
-    .const 'Sub' $P1447 = "82_1272455259.05437" 
+    .const 'Sub' $P1447 = "82_1272816841.80681" 
     capture_lex $P1447
     $P1447()
     goto if_1414_end
   if_1414:
 .annotate "line", 521
-    .const 'Sub' $P1419 = "81_1272455259.05437" 
+    .const 'Sub' $P1419 = "81_1272816841.80681" 
     capture_lex $P1419
     $P1419()
   if_1414_end:
@@ -20218,7 +20242,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1446"  :anon :subid("82_1272455259.05437") :outer("80_1272455259.05437")
+.sub "_block1446"  :anon :subid("82_1272816841.80681") :outer("80_1272816841.80681")
 .annotate "line", 535
     new $P1448, "Undef"
     .lex "$regex", $P1448
@@ -20269,7 +20293,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1418"  :anon :subid("81_1272455259.05437") :outer("80_1272455259.05437")
+.sub "_block1418"  :anon :subid("81_1272816841.80681") :outer("80_1272816841.80681")
 .annotate "line", 522
     $P1420 = root_new ['parrot';'Hash']
     .lex "%h", $P1420
@@ -20367,7 +20391,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "dotty"  :subid("83_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "dotty"  :subid("83_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1475
 .annotate "line", 552
     new $P1474, 'ExceptionHandler'
@@ -20464,7 +20488,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<self>"  :subid("84_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "term:sym<self>"  :subid("84_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1507
 .annotate "line", 561
     new $P1506, 'ExceptionHandler'
@@ -20489,7 +20513,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<identifier>"  :subid("85_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "term:sym<identifier>"  :subid("85_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1516
 .annotate "line", 565
     new $P1515, 'ExceptionHandler'
@@ -20538,7 +20562,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<name>"  :subid("86_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "term:sym<name>"  :subid("86_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1532
 .annotate "line", 571
     new $P1531, 'ExceptionHandler'
@@ -20656,7 +20680,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<pir::op>"  :subid("87_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "term:sym<pir::op>"  :subid("87_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1574
 .annotate "line", 585
     new $P1573, 'ExceptionHandler'
@@ -20747,7 +20771,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "args"  :subid("88_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "args"  :subid("88_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1603
 .annotate "line", 600
     new $P1602, 'ExceptionHandler'
@@ -20777,10 +20801,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "arglist"  :subid("89_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "arglist"  :subid("89_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1613
 .annotate "line", 602
-    .const 'Sub' $P1624 = "90_1272455259.05437" 
+    .const 'Sub' $P1624 = "90_1272816841.80681" 
     capture_lex $P1624
     new $P1612, 'ExceptionHandler'
     set_addr $P1612, control_1611
@@ -20812,7 +20836,7 @@
     new $P1622, "Undef"
   vivify_499:
     unless $P1622, if_1620_end
-    .const 'Sub' $P1624 = "90_1272455259.05437" 
+    .const 'Sub' $P1624 = "90_1272816841.80681" 
     capture_lex $P1624
     $P1624()
   if_1620_end:
@@ -20920,9 +20944,9 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1623"  :anon :subid("90_1272455259.05437") :outer("89_1272455259.05437")
+.sub "_block1623"  :anon :subid("90_1272816841.80681") :outer("89_1272816841.80681")
 .annotate "line", 604
-    .const 'Sub' $P1645 = "91_1272455259.05437" 
+    .const 'Sub' $P1645 = "91_1272816841.80681" 
     capture_lex $P1645
 .annotate "line", 605
     new $P1625, "Undef"
@@ -20975,7 +20999,7 @@
     unless $P1639, loop1650_done
     shift $P1643, $P1639
   loop1650_redo:
-    .const 'Sub' $P1645 = "91_1272455259.05437" 
+    .const 'Sub' $P1645 = "91_1272816841.80681" 
     capture_lex $P1645
     $P1645($P1643)
   loop1650_next:
@@ -20998,7 +21022,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1644"  :anon :subid("91_1272455259.05437") :outer("90_1272455259.05437")
+.sub "_block1644"  :anon :subid("91_1272816841.80681") :outer("90_1272816841.80681")
     .param pmc param_1646
 .annotate "line", 607
     .lex "$_", param_1646
@@ -21010,7 +21034,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<value>"  :subid("92_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "term:sym<value>"  :subid("92_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1697
 .annotate "line", 624
     new $P1696, 'ExceptionHandler'
@@ -21040,7 +21064,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<( )>"  :subid("93_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "circumfix:sym<( )>"  :subid("93_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1707
 .annotate "line", 626
     new $P1706, 'ExceptionHandler'
@@ -21096,7 +21120,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<[ ]>"  :subid("94_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "circumfix:sym<[ ]>"  :subid("94_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1725
 .annotate "line", 632
     new $P1724, 'ExceptionHandler'
@@ -21172,7 +21196,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<ang>"  :subid("95_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "circumfix:sym<ang>"  :subid("95_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1752
 .annotate "line", 647
     new $P1751, 'ExceptionHandler'
@@ -21202,7 +21226,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("96_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("96_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1762
 .annotate "line", 648
     new $P1761, 'ExceptionHandler'
@@ -21232,7 +21256,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<{ }>"  :subid("97_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "circumfix:sym<{ }>"  :subid("97_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1772
 .annotate "line", 650
     new $P1771, 'ExceptionHandler'
@@ -21296,7 +21320,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<sigil>"  :subid("98_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "circumfix:sym<sigil>"  :subid("98_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1792
 .annotate "line", 656
     new $P1791, 'ExceptionHandler'
@@ -21375,7 +21399,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "semilist"  :subid("99_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "semilist"  :subid("99_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1821
 .annotate "line", 663
     new $P1820, 'ExceptionHandler'
@@ -21405,7 +21429,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<[ ]>"  :subid("100_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "postcircumfix:sym<[ ]>"  :subid("100_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1831
 .annotate "line", 665
     new $P1830, 'ExceptionHandler'
@@ -21442,7 +21466,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<{ }>"  :subid("101_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "postcircumfix:sym<{ }>"  :subid("101_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1844
 .annotate "line", 671
     new $P1843, 'ExceptionHandler'
@@ -21479,7 +21503,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<ang>"  :subid("102_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "postcircumfix:sym<ang>"  :subid("102_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1857
 .annotate "line", 677
     new $P1856, 'ExceptionHandler'
@@ -21516,7 +21540,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<( )>"  :subid("103_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "postcircumfix:sym<( )>"  :subid("103_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1870
 .annotate "line", 683
     new $P1869, 'ExceptionHandler'
@@ -21548,7 +21572,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "value"  :subid("104_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "value"  :subid("104_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1880
 .annotate "line", 687
     new $P1879, 'ExceptionHandler'
@@ -21603,7 +21627,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "number"  :subid("105_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "number"  :subid("105_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1897
 .annotate "line", 691
     new $P1896, 'ExceptionHandler'
@@ -21681,7 +21705,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<apos>"  :subid("106_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "quote:sym<apos>"  :subid("106_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1925
 .annotate "line", 697
     new $P1924, 'ExceptionHandler'
@@ -21711,7 +21735,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<dblq>"  :subid("107_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "quote:sym<dblq>"  :subid("107_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1935
 .annotate "line", 698
     new $P1934, 'ExceptionHandler'
@@ -21741,7 +21765,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<qq>"  :subid("108_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "quote:sym<qq>"  :subid("108_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1945
 .annotate "line", 699
     new $P1944, 'ExceptionHandler'
@@ -21771,7 +21795,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<q>"  :subid("109_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "quote:sym<q>"  :subid("109_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1955
 .annotate "line", 700
     new $P1954, 'ExceptionHandler'
@@ -21801,7 +21825,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<Q>"  :subid("110_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "quote:sym<Q>"  :subid("110_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1965
 .annotate "line", 701
     new $P1964, 'ExceptionHandler'
@@ -21831,7 +21855,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<Q:PIR>"  :subid("111_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "quote:sym<Q:PIR>"  :subid("111_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1975
 .annotate "line", 702
     new $P1974, 'ExceptionHandler'
@@ -21867,7 +21891,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym</ />"  :subid("112_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "quote:sym</ />"  :subid("112_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1989
     .param pmc param_1990 :optional
     .param int has_param_1990 :opt_flag
@@ -21976,7 +22000,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote_escape:sym<$>"  :subid("113_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "quote_escape:sym<$>"  :subid("113_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_2026
 .annotate "line", 731
     new $P2025, 'ExceptionHandler'
@@ -22006,7 +22030,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote_escape:sym<{ }>"  :subid("114_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "quote_escape:sym<{ }>"  :subid("114_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_2036
 .annotate "line", 732
     new $P2035, 'ExceptionHandler'
@@ -22044,7 +22068,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote_escape:sym<esc>"  :subid("115_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "quote_escape:sym<esc>"  :subid("115_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_2050
 .annotate "line", 737
     new $P2049, 'ExceptionHandler'
@@ -22065,7 +22089,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postfix:sym<.>"  :subid("116_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "postfix:sym<.>"  :subid("116_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_2057
 .annotate "line", 741
     new $P2056, 'ExceptionHandler'
@@ -22095,7 +22119,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postfix:sym<++>"  :subid("117_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "postfix:sym<++>"  :subid("117_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_2067
 .annotate "line", 743
     new $P2066, 'ExceptionHandler'
@@ -22125,7 +22149,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postfix:sym<-->"  :subid("118_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "postfix:sym<-->"  :subid("118_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_2077
 .annotate "line", 749
     new $P2076, 'ExceptionHandler'
@@ -22155,7 +22179,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "prefix:sym<make>"  :subid("119_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "prefix:sym<make>"  :subid("119_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_2087
 .annotate "line", 755
     new $P2086, 'ExceptionHandler'
@@ -22185,7 +22209,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "infix:sym<~~>"  :subid("120_1272455259.05437") :method :outer("11_1272455259.05437")
+.sub "infix:sym<~~>"  :subid("120_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_2099
 .annotate "line", 764
     new $P2098, 'ExceptionHandler'
@@ -22211,18 +22235,18 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "_block2106"  :subid("121_1272455259.05437") :outer("11_1272455259.05437")
+.sub "_block2106"  :subid("121_1272816841.80681") :outer("11_1272816841.80681")
 .annotate "line", 769
-    .const 'Sub' $P2142 = "125_1272455259.05437" 
+    .const 'Sub' $P2142 = "125_1272816841.80681" 
     capture_lex $P2142
-    .const 'Sub' $P2132 = "124_1272455259.05437" 
+    .const 'Sub' $P2132 = "124_1272816841.80681" 
     capture_lex $P2132
-    .const 'Sub' $P2122 = "123_1272455259.05437" 
+    .const 'Sub' $P2122 = "123_1272816841.80681" 
     capture_lex $P2122
-    .const 'Sub' $P2108 = "122_1272455259.05437" 
+    .const 'Sub' $P2108 = "122_1272816841.80681" 
     capture_lex $P2108
 .annotate "line", 780
-    .const 'Sub' $P2142 = "125_1272455259.05437" 
+    .const 'Sub' $P2142 = "125_1272816841.80681" 
     capture_lex $P2142
 .annotate "line", 769
     .return ($P2142)
@@ -22230,7 +22254,7 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "metachar:sym<:my>"  :subid("122_1272455259.05437") :method :outer("121_1272455259.05437")
+.sub "metachar:sym<:my>"  :subid("122_1272816841.80681") :method :outer("121_1272816841.80681")
     .param pmc param_2111
 .annotate "line", 771
     new $P2110, 'ExceptionHandler'
@@ -22269,7 +22293,7 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "metachar:sym<{ }>"  :subid("123_1272455259.05437") :method :outer("121_1272455259.05437")
+.sub "metachar:sym<{ }>"  :subid("123_1272816841.80681") :method :outer("121_1272816841.80681")
     .param pmc param_2125
 .annotate "line", 776
     new $P2124, 'ExceptionHandler'
@@ -22299,7 +22323,7 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "assertion:sym<{ }>"  :subid("124_1272455259.05437") :method :outer("121_1272455259.05437")
+.sub "assertion:sym<{ }>"  :subid("124_1272816841.80681") :method :outer("121_1272816841.80681")
     .param pmc param_2135
 .annotate "line", 778
     new $P2134, 'ExceptionHandler'
@@ -22329,7 +22353,7 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "codeblock"  :subid("125_1272455259.05437") :method :outer("121_1272455259.05437")
+.sub "codeblock"  :subid("125_1272816841.80681") :method :outer("121_1272816841.80681")
     .param pmc param_2145
 .annotate "line", 780
     new $P2144, 'ExceptionHandler'

Modified: branches/codestring/ext/nqp-rx/src/stage0/P6Regex-s0.pir
==============================================================================
--- branches/codestring/ext/nqp-rx/src/stage0/P6Regex-s0.pir	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/ext/nqp-rx/src/stage0/P6Regex-s0.pir	Mon May  3 14:39:34 2010	(r46235)
@@ -16,7 +16,7 @@
 ### .include 'gen/p6regex-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1272455245.85124")
+.sub "_block11"  :anon :subid("10_1272816831.40736")
 .annotate "line", 0
     get_hll_global $P14, ["Regex";"P6Regex";"Grammar"], "_block13" 
     capture_lex $P14
@@ -30,9 +30,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post158") :outer("10_1272455245.85124")
+.sub "" :load :init :subid("post158") :outer("10_1272816831.40736")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1272455245.85124" 
+    .const 'Sub' $P12 = "10_1272816831.40736" 
     .local pmc block
     set block, $P12
     $P580 = get_root_global ["parrot"], "P6metaclass"
@@ -41,140 +41,140 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block13"  :subid("11_1272455245.85124") :outer("10_1272455245.85124")
+.sub "_block13"  :subid("11_1272816831.40736") :outer("10_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P571 = "156_1272455245.85124" 
+    .const 'Sub' $P571 = "156_1272816831.40736" 
     capture_lex $P571
-    .const 'Sub' $P563 = "154_1272455245.85124" 
+    .const 'Sub' $P563 = "154_1272816831.40736" 
     capture_lex $P563
-    .const 'Sub' $P555 = "152_1272455245.85124" 
+    .const 'Sub' $P555 = "152_1272816831.40736" 
     capture_lex $P555
-    .const 'Sub' $P534 = "147_1272455245.85124" 
+    .const 'Sub' $P534 = "147_1272816831.40736" 
     capture_lex $P534
-    .const 'Sub' $P499 = "141_1272455245.85124" 
+    .const 'Sub' $P499 = "141_1272816831.40736" 
     capture_lex $P499
-    .const 'Sub' $P487 = "138_1272455245.85124" 
+    .const 'Sub' $P487 = "138_1272816831.40736" 
     capture_lex $P487
-    .const 'Sub' $P474 = "135_1272455245.85124" 
+    .const 'Sub' $P474 = "135_1272816831.40736" 
     capture_lex $P474
-    .const 'Sub' $P468 = "133_1272455245.85124" 
+    .const 'Sub' $P468 = "133_1272816831.40736" 
     capture_lex $P468
-    .const 'Sub' $P457 = "130_1272455245.85124" 
+    .const 'Sub' $P457 = "130_1272816831.40736" 
     capture_lex $P457
-    .const 'Sub' $P446 = "127_1272455245.85124" 
+    .const 'Sub' $P446 = "127_1272816831.40736" 
     capture_lex $P446
-    .const 'Sub' $P437 = "123_1272455245.85124" 
+    .const 'Sub' $P437 = "123_1272816831.40736" 
     capture_lex $P437
-    .const 'Sub' $P431 = "121_1272455245.85124" 
+    .const 'Sub' $P431 = "121_1272816831.40736" 
     capture_lex $P431
-    .const 'Sub' $P425 = "119_1272455245.85124" 
+    .const 'Sub' $P425 = "119_1272816831.40736" 
     capture_lex $P425
-    .const 'Sub' $P419 = "117_1272455245.85124" 
+    .const 'Sub' $P419 = "117_1272816831.40736" 
     capture_lex $P419
-    .const 'Sub' $P413 = "115_1272455245.85124" 
+    .const 'Sub' $P413 = "115_1272816831.40736" 
     capture_lex $P413
-    .const 'Sub' $P405 = "113_1272455245.85124" 
+    .const 'Sub' $P405 = "113_1272816831.40736" 
     capture_lex $P405
-    .const 'Sub' $P394 = "111_1272455245.85124" 
+    .const 'Sub' $P394 = "111_1272816831.40736" 
     capture_lex $P394
-    .const 'Sub' $P383 = "109_1272455245.85124" 
+    .const 'Sub' $P383 = "109_1272816831.40736" 
     capture_lex $P383
-    .const 'Sub' $P377 = "107_1272455245.85124" 
+    .const 'Sub' $P377 = "107_1272816831.40736" 
     capture_lex $P377
-    .const 'Sub' $P371 = "105_1272455245.85124" 
+    .const 'Sub' $P371 = "105_1272816831.40736" 
     capture_lex $P371
-    .const 'Sub' $P365 = "103_1272455245.85124" 
+    .const 'Sub' $P365 = "103_1272816831.40736" 
     capture_lex $P365
-    .const 'Sub' $P359 = "101_1272455245.85124" 
+    .const 'Sub' $P359 = "101_1272816831.40736" 
     capture_lex $P359
-    .const 'Sub' $P353 = "99_1272455245.85124" 
+    .const 'Sub' $P353 = "99_1272816831.40736" 
     capture_lex $P353
-    .const 'Sub' $P347 = "97_1272455245.85124" 
+    .const 'Sub' $P347 = "97_1272816831.40736" 
     capture_lex $P347
-    .const 'Sub' $P341 = "95_1272455245.85124" 
+    .const 'Sub' $P341 = "95_1272816831.40736" 
     capture_lex $P341
-    .const 'Sub' $P335 = "93_1272455245.85124" 
+    .const 'Sub' $P335 = "93_1272816831.40736" 
     capture_lex $P335
-    .const 'Sub' $P323 = "89_1272455245.85124" 
+    .const 'Sub' $P323 = "89_1272816831.40736" 
     capture_lex $P323
-    .const 'Sub' $P311 = "87_1272455245.85124" 
+    .const 'Sub' $P311 = "87_1272816831.40736" 
     capture_lex $P311
-    .const 'Sub' $P304 = "85_1272455245.85124" 
+    .const 'Sub' $P304 = "85_1272816831.40736" 
     capture_lex $P304
-    .const 'Sub' $P287 = "83_1272455245.85124" 
+    .const 'Sub' $P287 = "83_1272816831.40736" 
     capture_lex $P287
-    .const 'Sub' $P280 = "81_1272455245.85124" 
+    .const 'Sub' $P280 = "81_1272816831.40736" 
     capture_lex $P280
-    .const 'Sub' $P274 = "79_1272455245.85124" 
+    .const 'Sub' $P274 = "79_1272816831.40736" 
     capture_lex $P274
-    .const 'Sub' $P268 = "77_1272455245.85124" 
+    .const 'Sub' $P268 = "77_1272816831.40736" 
     capture_lex $P268
-    .const 'Sub' $P261 = "75_1272455245.85124" 
+    .const 'Sub' $P261 = "75_1272816831.40736" 
     capture_lex $P261
-    .const 'Sub' $P254 = "73_1272455245.85124" 
+    .const 'Sub' $P254 = "73_1272816831.40736" 
     capture_lex $P254
-    .const 'Sub' $P247 = "71_1272455245.85124" 
+    .const 'Sub' $P247 = "71_1272816831.40736" 
     capture_lex $P247
-    .const 'Sub' $P240 = "69_1272455245.85124" 
+    .const 'Sub' $P240 = "69_1272816831.40736" 
     capture_lex $P240
-    .const 'Sub' $P234 = "67_1272455245.85124" 
+    .const 'Sub' $P234 = "67_1272816831.40736" 
     capture_lex $P234
-    .const 'Sub' $P228 = "65_1272455245.85124" 
+    .const 'Sub' $P228 = "65_1272816831.40736" 
     capture_lex $P228
-    .const 'Sub' $P222 = "63_1272455245.85124" 
+    .const 'Sub' $P222 = "63_1272816831.40736" 
     capture_lex $P222
-    .const 'Sub' $P216 = "61_1272455245.85124" 
+    .const 'Sub' $P216 = "61_1272816831.40736" 
     capture_lex $P216
-    .const 'Sub' $P210 = "59_1272455245.85124" 
+    .const 'Sub' $P210 = "59_1272816831.40736" 
     capture_lex $P210
-    .const 'Sub' $P205 = "57_1272455245.85124" 
+    .const 'Sub' $P205 = "57_1272816831.40736" 
     capture_lex $P205
-    .const 'Sub' $P200 = "55_1272455245.85124" 
+    .const 'Sub' $P200 = "55_1272816831.40736" 
     capture_lex $P200
-    .const 'Sub' $P194 = "53_1272455245.85124" 
+    .const 'Sub' $P194 = "53_1272816831.40736" 
     capture_lex $P194
-    .const 'Sub' $P188 = "51_1272455245.85124" 
+    .const 'Sub' $P188 = "51_1272816831.40736" 
     capture_lex $P188
-    .const 'Sub' $P182 = "49_1272455245.85124" 
+    .const 'Sub' $P182 = "49_1272816831.40736" 
     capture_lex $P182
-    .const 'Sub' $P166 = "44_1272455245.85124" 
+    .const 'Sub' $P166 = "44_1272816831.40736" 
     capture_lex $P166
-    .const 'Sub' $P154 = "42_1272455245.85124" 
+    .const 'Sub' $P154 = "42_1272816831.40736" 
     capture_lex $P154
-    .const 'Sub' $P147 = "40_1272455245.85124" 
+    .const 'Sub' $P147 = "40_1272816831.40736" 
     capture_lex $P147
-    .const 'Sub' $P140 = "38_1272455245.85124" 
+    .const 'Sub' $P140 = "38_1272816831.40736" 
     capture_lex $P140
-    .const 'Sub' $P133 = "36_1272455245.85124" 
+    .const 'Sub' $P133 = "36_1272816831.40736" 
     capture_lex $P133
-    .const 'Sub' $P114 = "31_1272455245.85124" 
+    .const 'Sub' $P114 = "31_1272816831.40736" 
     capture_lex $P114
-    .const 'Sub' $P101 = "28_1272455245.85124" 
+    .const 'Sub' $P101 = "28_1272816831.40736" 
     capture_lex $P101
-    .const 'Sub' $P94 = "26_1272455245.85124" 
+    .const 'Sub' $P94 = "26_1272816831.40736" 
     capture_lex $P94
-    .const 'Sub' $P82 = "24_1272455245.85124" 
+    .const 'Sub' $P82 = "24_1272816831.40736" 
     capture_lex $P82
-    .const 'Sub' $P75 = "22_1272455245.85124" 
+    .const 'Sub' $P75 = "22_1272816831.40736" 
     capture_lex $P75
-    .const 'Sub' $P63 = "20_1272455245.85124" 
+    .const 'Sub' $P63 = "20_1272816831.40736" 
     capture_lex $P63
-    .const 'Sub' $P56 = "18_1272455245.85124" 
+    .const 'Sub' $P56 = "18_1272816831.40736" 
     capture_lex $P56
-    .const 'Sub' $P46 = "15_1272455245.85124" 
+    .const 'Sub' $P46 = "15_1272816831.40736" 
     capture_lex $P46
-    .const 'Sub' $P38 = "13_1272455245.85124" 
+    .const 'Sub' $P38 = "13_1272816831.40736" 
     capture_lex $P38
-    .const 'Sub' $P15 = "12_1272455245.85124" 
+    .const 'Sub' $P15 = "12_1272816831.40736" 
     capture_lex $P15
-    .const 'Sub' $P571 = "156_1272455245.85124" 
+    .const 'Sub' $P571 = "156_1272816831.40736" 
     capture_lex $P571
     .return ($P571)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "obs"  :subid("12_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "obs"  :subid("12_1272816831.40736") :method :outer("11_1272816831.40736")
     .param pmc param_18
     .param pmc param_19
     .param pmc param_20 :optional
@@ -222,7 +222,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "ws"  :subid("13_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "ws"  :subid("13_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx39_tgt
     .local int rx39_pos
@@ -304,7 +304,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__ws"  :subid("14_1272455245.85124") :method
+.sub "!PREFIX__ws"  :subid("14_1272816831.40736") :method
 .annotate "line", 3
     new $P41, "ResizablePMCArray"
     push $P41, ""
@@ -313,9 +313,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "normspace"  :subid("15_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "normspace"  :subid("15_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P52 = "17_1272455245.85124" 
+    .const 'Sub' $P52 = "17_1272816831.40736" 
     capture_lex $P52
     .local string rx47_tgt
     .local int rx47_pos
@@ -349,7 +349,7 @@
 .annotate "line", 10
   # rx subrule "before" subtype=zerowidth negate=
     rx47_cur."!cursor_pos"(rx47_pos)
-    .const 'Sub' $P52 = "17_1272455245.85124" 
+    .const 'Sub' $P52 = "17_1272816831.40736" 
     capture_lex $P52
     $P10 = rx47_cur."before"($P52)
     unless $P10, rx47_fail
@@ -377,7 +377,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__normspace"  :subid("16_1272455245.85124") :method
+.sub "!PREFIX__normspace"  :subid("16_1272816831.40736") :method
 .annotate "line", 3
     new $P49, "ResizablePMCArray"
     push $P49, ""
@@ -386,7 +386,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block51"  :anon :subid("17_1272455245.85124") :method :outer("15_1272455245.85124")
+.sub "_block51"  :anon :subid("17_1272816831.40736") :method :outer("15_1272816831.40736")
 .annotate "line", 10
     .local string rx53_tgt
     .local int rx53_pos
@@ -454,7 +454,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "arg"  :subid("18_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "arg"  :subid("18_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx57_tgt
     .local int rx57_pos
@@ -565,7 +565,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__arg"  :subid("19_1272455245.85124") :method
+.sub "!PREFIX__arg"  :subid("19_1272816831.40736") :method
 .annotate "line", 3
     new $P59, "ResizablePMCArray"
     push $P59, ""
@@ -576,7 +576,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "arglist"  :subid("20_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "arglist"  :subid("20_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx64_tgt
     .local int rx64_pos
@@ -682,7 +682,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__arglist"  :subid("21_1272455245.85124") :method
+.sub "!PREFIX__arglist"  :subid("21_1272816831.40736") :method
 .annotate "line", 3
     new $P66, "ResizablePMCArray"
     push $P66, ""
@@ -691,7 +691,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "TOP"  :subid("22_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "TOP"  :subid("22_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx76_tgt
     .local int rx76_pos
@@ -764,7 +764,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__TOP"  :subid("23_1272455245.85124") :method
+.sub "!PREFIX__TOP"  :subid("23_1272816831.40736") :method
 .annotate "line", 3
     $P78 = self."!PREFIX__!subrule"("nibbler", "")
     new $P79, "ResizablePMCArray"
@@ -774,7 +774,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "nibbler"  :subid("24_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "nibbler"  :subid("24_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx83_tgt
     .local int rx83_pos
@@ -942,7 +942,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__nibbler"  :subid("25_1272455245.85124") :method
+.sub "!PREFIX__nibbler"  :subid("25_1272816831.40736") :method
 .annotate "line", 3
     new $P85, "ResizablePMCArray"
     push $P85, ""
@@ -951,7 +951,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "termish"  :subid("26_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "termish"  :subid("26_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx95_tgt
     .local int rx95_pos
@@ -1019,7 +1019,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__termish"  :subid("27_1272455245.85124") :method
+.sub "!PREFIX__termish"  :subid("27_1272816831.40736") :method
 .annotate "line", 3
     new $P97, "ResizablePMCArray"
     push $P97, ""
@@ -1028,9 +1028,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantified_atom"  :subid("28_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "quantified_atom"  :subid("28_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P110 = "30_1272455245.85124" 
+    .const 'Sub' $P110 = "30_1272816831.40736" 
     capture_lex $P110
     .local string rx102_tgt
     .local int rx102_pos
@@ -1093,7 +1093,7 @@
   alt108_1:
   # rx subrule "before" subtype=zerowidth negate=
     rx102_cur."!cursor_pos"(rx102_pos)
-    .const 'Sub' $P110 = "30_1272455245.85124" 
+    .const 'Sub' $P110 = "30_1272816831.40736" 
     capture_lex $P110
     $P10 = rx102_cur."before"($P110)
     unless $P10, rx102_fail
@@ -1131,7 +1131,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantified_atom"  :subid("29_1272455245.85124") :method
+.sub "!PREFIX__quantified_atom"  :subid("29_1272816831.40736") :method
 .annotate "line", 3
     $P104 = self."!PREFIX__!subrule"("atom", "")
     new $P105, "ResizablePMCArray"
@@ -1141,7 +1141,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block109"  :anon :subid("30_1272455245.85124") :method :outer("28_1272455245.85124")
+.sub "_block109"  :anon :subid("30_1272816831.40736") :method :outer("28_1272816831.40736")
 .annotate "line", 41
     .local string rx111_tgt
     .local int rx111_pos
@@ -1197,9 +1197,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "atom"  :subid("31_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "atom"  :subid("31_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P125 = "33_1272455245.85124" 
+    .const 'Sub' $P125 = "33_1272816831.40736" 
     capture_lex $P125
     .local string rx115_tgt
     .local int rx115_pos
@@ -1259,7 +1259,7 @@
   rxquantg122_done:
   # rx subrule "before" subtype=zerowidth negate=
     rx115_cur."!cursor_pos"(rx115_pos)
-    .const 'Sub' $P125 = "33_1272455245.85124" 
+    .const 'Sub' $P125 = "33_1272816831.40736" 
     capture_lex $P125
     $P10 = rx115_cur."before"($P125)
     unless $P10, rx115_fail
@@ -1296,7 +1296,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__atom"  :subid("32_1272455245.85124") :method
+.sub "!PREFIX__atom"  :subid("32_1272816831.40736") :method
 .annotate "line", 3
     $P117 = self."!PREFIX__!subrule"("metachar", "")
     new $P118, "ResizablePMCArray"
@@ -1307,7 +1307,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block124"  :anon :subid("33_1272455245.85124") :method :outer("31_1272455245.85124")
+.sub "_block124"  :anon :subid("33_1272816831.40736") :method :outer("31_1272816831.40736")
 .annotate "line", 47
     .local string rx126_tgt
     .local int rx126_pos
@@ -1362,7 +1362,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier"  :subid("34_1272455245.85124") :method
+.sub "quantifier"  :subid("34_1272816831.40736") :method
 .annotate "line", 52
     $P130 = self."!protoregex"("quantifier")
     .return ($P130)
@@ -1370,7 +1370,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier"  :subid("35_1272455245.85124") :method
+.sub "!PREFIX__quantifier"  :subid("35_1272816831.40736") :method
 .annotate "line", 52
     $P132 = self."!PREFIX__!protoregex"("quantifier")
     .return ($P132)
@@ -1378,7 +1378,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<*>"  :subid("36_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "quantifier:sym<*>"  :subid("36_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx134_tgt
     .local int rx134_pos
@@ -1457,7 +1457,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<*>"  :subid("37_1272455245.85124") :method
+.sub "!PREFIX__quantifier:sym<*>"  :subid("37_1272816831.40736") :method
 .annotate "line", 3
     $P136 = self."!PREFIX__!subrule"("backmod", "*")
     new $P137, "ResizablePMCArray"
@@ -1467,7 +1467,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<+>"  :subid("38_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "quantifier:sym<+>"  :subid("38_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx141_tgt
     .local int rx141_pos
@@ -1546,7 +1546,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<+>"  :subid("39_1272455245.85124") :method
+.sub "!PREFIX__quantifier:sym<+>"  :subid("39_1272816831.40736") :method
 .annotate "line", 3
     $P143 = self."!PREFIX__!subrule"("backmod", "+")
     new $P144, "ResizablePMCArray"
@@ -1556,7 +1556,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<?>"  :subid("40_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "quantifier:sym<?>"  :subid("40_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx148_tgt
     .local int rx148_pos
@@ -1635,7 +1635,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<?>"  :subid("41_1272455245.85124") :method
+.sub "!PREFIX__quantifier:sym<?>"  :subid("41_1272816831.40736") :method
 .annotate "line", 3
     $P150 = self."!PREFIX__!subrule"("backmod", "?")
     new $P151, "ResizablePMCArray"
@@ -1645,7 +1645,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<**>"  :subid("42_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "quantifier:sym<**>"  :subid("42_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx155_tgt
     .local int rx155_pos
@@ -1834,7 +1834,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<**>"  :subid("43_1272455245.85124") :method
+.sub "!PREFIX__quantifier:sym<**>"  :subid("43_1272816831.40736") :method
 .annotate "line", 3
     new $P157, "ResizablePMCArray"
     push $P157, "**"
@@ -1843,9 +1843,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backmod"  :subid("44_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "backmod"  :subid("44_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P175 = "46_1272455245.85124" 
+    .const 'Sub' $P175 = "46_1272816831.40736" 
     capture_lex $P175
     .local string rx167_tgt
     .local int rx167_pos
@@ -1915,7 +1915,7 @@
   alt173_2:
   # rx subrule "before" subtype=zerowidth negate=1
     rx167_cur."!cursor_pos"(rx167_pos)
-    .const 'Sub' $P175 = "46_1272455245.85124" 
+    .const 'Sub' $P175 = "46_1272816831.40736" 
     capture_lex $P175
     $P10 = rx167_cur."before"($P175)
     if $P10, rx167_fail
@@ -1939,7 +1939,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backmod"  :subid("45_1272455245.85124") :method
+.sub "!PREFIX__backmod"  :subid("45_1272816831.40736") :method
 .annotate "line", 3
     new $P169, "ResizablePMCArray"
     push $P169, ""
@@ -1948,7 +1948,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block174"  :anon :subid("46_1272455245.85124") :method :outer("44_1272455245.85124")
+.sub "_block174"  :anon :subid("46_1272816831.40736") :method :outer("44_1272816831.40736")
 .annotate "line", 71
     .local string rx176_tgt
     .local int rx176_pos
@@ -2004,7 +2004,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar"  :subid("47_1272455245.85124") :method
+.sub "metachar"  :subid("47_1272816831.40736") :method
 .annotate "line", 73
     $P179 = self."!protoregex"("metachar")
     .return ($P179)
@@ -2012,7 +2012,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar"  :subid("48_1272455245.85124") :method
+.sub "!PREFIX__metachar"  :subid("48_1272816831.40736") :method
 .annotate "line", 73
     $P181 = self."!PREFIX__!protoregex"("metachar")
     .return ($P181)
@@ -2020,7 +2020,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<ws>"  :subid("49_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "metachar:sym<ws>"  :subid("49_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx183_tgt
     .local int rx183_pos
@@ -2076,7 +2076,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<ws>"  :subid("50_1272455245.85124") :method
+.sub "!PREFIX__metachar:sym<ws>"  :subid("50_1272816831.40736") :method
 .annotate "line", 3
     $P185 = self."!PREFIX__!subrule"("", "")
     new $P186, "ResizablePMCArray"
@@ -2086,7 +2086,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<[ ]>"  :subid("51_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "metachar:sym<[ ]>"  :subid("51_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx189_tgt
     .local int rx189_pos
@@ -2158,7 +2158,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<[ ]>"  :subid("52_1272455245.85124") :method
+.sub "!PREFIX__metachar:sym<[ ]>"  :subid("52_1272816831.40736") :method
 .annotate "line", 3
     $P191 = self."!PREFIX__!subrule"("nibbler", "[")
     new $P192, "ResizablePMCArray"
@@ -2168,7 +2168,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<( )>"  :subid("53_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "metachar:sym<( )>"  :subid("53_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx195_tgt
     .local int rx195_pos
@@ -2240,7 +2240,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<( )>"  :subid("54_1272455245.85124") :method
+.sub "!PREFIX__metachar:sym<( )>"  :subid("54_1272816831.40736") :method
 .annotate "line", 3
     $P197 = self."!PREFIX__!subrule"("nibbler", "(")
     new $P198, "ResizablePMCArray"
@@ -2250,7 +2250,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<'>"  :subid("55_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "metachar:sym<'>"  :subid("55_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx201_tgt
     .local int rx201_pos
@@ -2314,7 +2314,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<'>"  :subid("56_1272455245.85124") :method
+.sub "!PREFIX__metachar:sym<'>"  :subid("56_1272816831.40736") :method
 .annotate "line", 3
     new $P203, "ResizablePMCArray"
     push $P203, "'"
@@ -2323,7 +2323,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<\">"  :subid("57_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "metachar:sym<\">"  :subid("57_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx206_tgt
     .local int rx206_pos
@@ -2387,7 +2387,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<\">"  :subid("58_1272455245.85124") :method
+.sub "!PREFIX__metachar:sym<\">"  :subid("58_1272816831.40736") :method
 .annotate "line", 3
     new $P208, "ResizablePMCArray"
     push $P208, "\""
@@ -2396,7 +2396,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<.>"  :subid("59_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "metachar:sym<.>"  :subid("59_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx211_tgt
     .local int rx211_pos
@@ -2468,7 +2468,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<.>"  :subid("60_1272455245.85124") :method
+.sub "!PREFIX__metachar:sym<.>"  :subid("60_1272816831.40736") :method
 .annotate "line", 3
     new $P213, "ResizablePMCArray"
     push $P213, "."
@@ -2477,7 +2477,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<^>"  :subid("61_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "metachar:sym<^>"  :subid("61_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx217_tgt
     .local int rx217_pos
@@ -2549,7 +2549,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<^>"  :subid("62_1272455245.85124") :method
+.sub "!PREFIX__metachar:sym<^>"  :subid("62_1272816831.40736") :method
 .annotate "line", 3
     new $P219, "ResizablePMCArray"
     push $P219, "^"
@@ -2558,7 +2558,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<^^>"  :subid("63_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "metachar:sym<^^>"  :subid("63_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx223_tgt
     .local int rx223_pos
@@ -2630,7 +2630,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<^^>"  :subid("64_1272455245.85124") :method
+.sub "!PREFIX__metachar:sym<^^>"  :subid("64_1272816831.40736") :method
 .annotate "line", 3
     new $P225, "ResizablePMCArray"
     push $P225, "^^"
@@ -2639,7 +2639,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<$>"  :subid("65_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "metachar:sym<$>"  :subid("65_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx229_tgt
     .local int rx229_pos
@@ -2711,7 +2711,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<$>"  :subid("66_1272455245.85124") :method
+.sub "!PREFIX__metachar:sym<$>"  :subid("66_1272816831.40736") :method
 .annotate "line", 3
     new $P231, "ResizablePMCArray"
     push $P231, "$"
@@ -2720,7 +2720,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<$$>"  :subid("67_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "metachar:sym<$$>"  :subid("67_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx235_tgt
     .local int rx235_pos
@@ -2792,7 +2792,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<$$>"  :subid("68_1272455245.85124") :method
+.sub "!PREFIX__metachar:sym<$$>"  :subid("68_1272816831.40736") :method
 .annotate "line", 3
     new $P237, "ResizablePMCArray"
     push $P237, "$$"
@@ -2801,7 +2801,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<:::>"  :subid("69_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "metachar:sym<:::>"  :subid("69_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx241_tgt
     .local int rx241_pos
@@ -2878,7 +2878,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<:::>"  :subid("70_1272455245.85124") :method
+.sub "!PREFIX__metachar:sym<:::>"  :subid("70_1272816831.40736") :method
 .annotate "line", 3
     $P243 = self."!PREFIX__!subrule"("", ":::")
     new $P244, "ResizablePMCArray"
@@ -2888,7 +2888,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<::>"  :subid("71_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "metachar:sym<::>"  :subid("71_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx248_tgt
     .local int rx248_pos
@@ -2965,7 +2965,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<::>"  :subid("72_1272455245.85124") :method
+.sub "!PREFIX__metachar:sym<::>"  :subid("72_1272816831.40736") :method
 .annotate "line", 3
     $P250 = self."!PREFIX__!subrule"("", "::")
     new $P251, "ResizablePMCArray"
@@ -2975,7 +2975,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<lwb>"  :subid("73_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "metachar:sym<lwb>"  :subid("73_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx255_tgt
     .local int rx255_pos
@@ -3060,7 +3060,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<lwb>"  :subid("74_1272455245.85124") :method
+.sub "!PREFIX__metachar:sym<lwb>"  :subid("74_1272816831.40736") :method
 .annotate "line", 3
     new $P257, "ResizablePMCArray"
     push $P257, unicode:"\x{ab}"
@@ -3070,7 +3070,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<rwb>"  :subid("75_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "metachar:sym<rwb>"  :subid("75_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx262_tgt
     .local int rx262_pos
@@ -3155,7 +3155,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<rwb>"  :subid("76_1272455245.85124") :method
+.sub "!PREFIX__metachar:sym<rwb>"  :subid("76_1272816831.40736") :method
 .annotate "line", 3
     new $P264, "ResizablePMCArray"
     push $P264, unicode:"\x{bb}"
@@ -3165,7 +3165,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<bs>"  :subid("77_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "metachar:sym<bs>"  :subid("77_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx269_tgt
     .local int rx269_pos
@@ -3230,7 +3230,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<bs>"  :subid("78_1272455245.85124") :method
+.sub "!PREFIX__metachar:sym<bs>"  :subid("78_1272816831.40736") :method
 .annotate "line", 3
     $P271 = self."!PREFIX__!subrule"("backslash", "\\")
     new $P272, "ResizablePMCArray"
@@ -3240,7 +3240,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<mod>"  :subid("79_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "metachar:sym<mod>"  :subid("79_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx275_tgt
     .local int rx275_pos
@@ -3298,7 +3298,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<mod>"  :subid("80_1272455245.85124") :method
+.sub "!PREFIX__metachar:sym<mod>"  :subid("80_1272816831.40736") :method
 .annotate "line", 3
     $P277 = self."!PREFIX__!subrule"("mod_internal", "")
     new $P278, "ResizablePMCArray"
@@ -3308,7 +3308,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<~>"  :subid("81_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "metachar:sym<~>"  :subid("81_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx281_tgt
     .local int rx281_pos
@@ -3407,7 +3407,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<~>"  :subid("82_1272455245.85124") :method
+.sub "!PREFIX__metachar:sym<~>"  :subid("82_1272816831.40736") :method
 .annotate "line", 3
     $P283 = self."!PREFIX__!subrule"("", "~")
     new $P284, "ResizablePMCArray"
@@ -3417,7 +3417,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<{*}>"  :subid("83_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "metachar:sym<{*}>"  :subid("83_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx288_tgt
     .local int rx288_pos
@@ -3584,7 +3584,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<{*}>"  :subid("84_1272455245.85124") :method
+.sub "!PREFIX__metachar:sym<{*}>"  :subid("84_1272816831.40736") :method
 .annotate "line", 3
     new $P290, "ResizablePMCArray"
     push $P290, "{*}"
@@ -3593,7 +3593,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<assert>"  :subid("85_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "metachar:sym<assert>"  :subid("85_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx305_tgt
     .local int rx305_pos
@@ -3678,7 +3678,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<assert>"  :subid("86_1272455245.85124") :method
+.sub "!PREFIX__metachar:sym<assert>"  :subid("86_1272816831.40736") :method
 .annotate "line", 3
     $P307 = self."!PREFIX__!subrule"("assertion", "<")
     new $P308, "ResizablePMCArray"
@@ -3688,7 +3688,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<var>"  :subid("87_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "metachar:sym<var>"  :subid("87_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx312_tgt
     .local int rx312_pos
@@ -3850,7 +3850,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<var>"  :subid("88_1272455245.85124") :method
+.sub "!PREFIX__metachar:sym<var>"  :subid("88_1272816831.40736") :method
 .annotate "line", 3
     new $P314, "ResizablePMCArray"
     push $P314, "$"
@@ -3860,7 +3860,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<PIR>"  :subid("89_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "metachar:sym<PIR>"  :subid("89_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx324_tgt
     .local int rx324_pos
@@ -3951,7 +3951,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<PIR>"  :subid("90_1272455245.85124") :method
+.sub "!PREFIX__metachar:sym<PIR>"  :subid("90_1272816831.40736") :method
 .annotate "line", 3
     new $P326, "ResizablePMCArray"
     push $P326, ":PIR{{"
@@ -3960,7 +3960,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash"  :subid("91_1272455245.85124") :method
+.sub "backslash"  :subid("91_1272816831.40736") :method
 .annotate "line", 120
     $P332 = self."!protoregex"("backslash")
     .return ($P332)
@@ -3968,7 +3968,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash"  :subid("92_1272455245.85124") :method
+.sub "!PREFIX__backslash"  :subid("92_1272816831.40736") :method
 .annotate "line", 120
     $P334 = self."!PREFIX__!protoregex"("backslash")
     .return ($P334)
@@ -3976,7 +3976,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<w>"  :subid("93_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "backslash:sym<w>"  :subid("93_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx336_tgt
     .local int rx336_pos
@@ -4048,7 +4048,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<w>"  :subid("94_1272455245.85124") :method
+.sub "!PREFIX__backslash:sym<w>"  :subid("94_1272816831.40736") :method
 .annotate "line", 3
     new $P338, "ResizablePMCArray"
     push $P338, "N"
@@ -4064,7 +4064,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<b>"  :subid("95_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "backslash:sym<b>"  :subid("95_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx342_tgt
     .local int rx342_pos
@@ -4136,7 +4136,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<b>"  :subid("96_1272455245.85124") :method
+.sub "!PREFIX__backslash:sym<b>"  :subid("96_1272816831.40736") :method
 .annotate "line", 3
     new $P344, "ResizablePMCArray"
     push $P344, "B"
@@ -4146,7 +4146,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<e>"  :subid("97_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "backslash:sym<e>"  :subid("97_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx348_tgt
     .local int rx348_pos
@@ -4218,7 +4218,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<e>"  :subid("98_1272455245.85124") :method
+.sub "!PREFIX__backslash:sym<e>"  :subid("98_1272816831.40736") :method
 .annotate "line", 3
     new $P350, "ResizablePMCArray"
     push $P350, "E"
@@ -4228,7 +4228,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<f>"  :subid("99_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "backslash:sym<f>"  :subid("99_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx354_tgt
     .local int rx354_pos
@@ -4300,7 +4300,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<f>"  :subid("100_1272455245.85124") :method
+.sub "!PREFIX__backslash:sym<f>"  :subid("100_1272816831.40736") :method
 .annotate "line", 3
     new $P356, "ResizablePMCArray"
     push $P356, "F"
@@ -4310,7 +4310,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<h>"  :subid("101_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "backslash:sym<h>"  :subid("101_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx360_tgt
     .local int rx360_pos
@@ -4382,7 +4382,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<h>"  :subid("102_1272455245.85124") :method
+.sub "!PREFIX__backslash:sym<h>"  :subid("102_1272816831.40736") :method
 .annotate "line", 3
     new $P362, "ResizablePMCArray"
     push $P362, "H"
@@ -4392,7 +4392,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<r>"  :subid("103_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "backslash:sym<r>"  :subid("103_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx366_tgt
     .local int rx366_pos
@@ -4464,7 +4464,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<r>"  :subid("104_1272455245.85124") :method
+.sub "!PREFIX__backslash:sym<r>"  :subid("104_1272816831.40736") :method
 .annotate "line", 3
     new $P368, "ResizablePMCArray"
     push $P368, "R"
@@ -4474,7 +4474,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<t>"  :subid("105_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "backslash:sym<t>"  :subid("105_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx372_tgt
     .local int rx372_pos
@@ -4546,7 +4546,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<t>"  :subid("106_1272455245.85124") :method
+.sub "!PREFIX__backslash:sym<t>"  :subid("106_1272816831.40736") :method
 .annotate "line", 3
     new $P374, "ResizablePMCArray"
     push $P374, "T"
@@ -4556,7 +4556,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<v>"  :subid("107_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "backslash:sym<v>"  :subid("107_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx378_tgt
     .local int rx378_pos
@@ -4628,7 +4628,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<v>"  :subid("108_1272455245.85124") :method
+.sub "!PREFIX__backslash:sym<v>"  :subid("108_1272816831.40736") :method
 .annotate "line", 3
     new $P380, "ResizablePMCArray"
     push $P380, "V"
@@ -4638,7 +4638,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<o>"  :subid("109_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "backslash:sym<o>"  :subid("109_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx384_tgt
     .local int rx384_pos
@@ -4744,7 +4744,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<o>"  :subid("110_1272455245.85124") :method
+.sub "!PREFIX__backslash:sym<o>"  :subid("110_1272816831.40736") :method
 .annotate "line", 3
     $P386 = self."!PREFIX__!subrule"("octints", "O[")
     $P387 = self."!PREFIX__!subrule"("octint", "O")
@@ -4760,7 +4760,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<x>"  :subid("111_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "backslash:sym<x>"  :subid("111_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx395_tgt
     .local int rx395_pos
@@ -4866,7 +4866,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<x>"  :subid("112_1272455245.85124") :method
+.sub "!PREFIX__backslash:sym<x>"  :subid("112_1272816831.40736") :method
 .annotate "line", 3
     $P397 = self."!PREFIX__!subrule"("hexints", "X[")
     $P398 = self."!PREFIX__!subrule"("hexint", "X")
@@ -4882,7 +4882,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<c>"  :subid("113_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "backslash:sym<c>"  :subid("113_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx406_tgt
     .local int rx406_pos
@@ -4961,7 +4961,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<c>"  :subid("114_1272455245.85124") :method
+.sub "!PREFIX__backslash:sym<c>"  :subid("114_1272816831.40736") :method
 .annotate "line", 3
     $P408 = self."!PREFIX__!subrule"("charspec", "C")
     $P409 = self."!PREFIX__!subrule"("charspec", "c")
@@ -4973,7 +4973,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<A>"  :subid("115_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "backslash:sym<A>"  :subid("115_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx414_tgt
     .local int rx414_pos
@@ -5036,7 +5036,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<A>"  :subid("116_1272455245.85124") :method
+.sub "!PREFIX__backslash:sym<A>"  :subid("116_1272816831.40736") :method
 .annotate "line", 3
     $P416 = self."!PREFIX__!subrule"("", "A")
     new $P417, "ResizablePMCArray"
@@ -5046,7 +5046,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<z>"  :subid("117_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "backslash:sym<z>"  :subid("117_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx420_tgt
     .local int rx420_pos
@@ -5109,7 +5109,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<z>"  :subid("118_1272455245.85124") :method
+.sub "!PREFIX__backslash:sym<z>"  :subid("118_1272816831.40736") :method
 .annotate "line", 3
     $P422 = self."!PREFIX__!subrule"("", "z")
     new $P423, "ResizablePMCArray"
@@ -5119,7 +5119,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<Z>"  :subid("119_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "backslash:sym<Z>"  :subid("119_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx426_tgt
     .local int rx426_pos
@@ -5182,7 +5182,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<Z>"  :subid("120_1272455245.85124") :method
+.sub "!PREFIX__backslash:sym<Z>"  :subid("120_1272816831.40736") :method
 .annotate "line", 3
     $P428 = self."!PREFIX__!subrule"("", "Z")
     new $P429, "ResizablePMCArray"
@@ -5192,7 +5192,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<Q>"  :subid("121_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "backslash:sym<Q>"  :subid("121_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx432_tgt
     .local int rx432_pos
@@ -5255,7 +5255,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<Q>"  :subid("122_1272455245.85124") :method
+.sub "!PREFIX__backslash:sym<Q>"  :subid("122_1272816831.40736") :method
 .annotate "line", 3
     $P434 = self."!PREFIX__!subrule"("", "Q")
     new $P435, "ResizablePMCArray"
@@ -5265,7 +5265,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<misc>"  :subid("123_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "backslash:sym<misc>"  :subid("123_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx438_tgt
     .local int rx438_pos
@@ -5322,7 +5322,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<misc>"  :subid("124_1272455245.85124") :method
+.sub "!PREFIX__backslash:sym<misc>"  :subid("124_1272816831.40736") :method
 .annotate "line", 3
     new $P440, "ResizablePMCArray"
     push $P440, ""
@@ -5331,7 +5331,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion"  :subid("125_1272455245.85124") :method
+.sub "assertion"  :subid("125_1272816831.40736") :method
 .annotate "line", 138
     $P443 = self."!protoregex"("assertion")
     .return ($P443)
@@ -5339,7 +5339,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion"  :subid("126_1272455245.85124") :method
+.sub "!PREFIX__assertion"  :subid("126_1272816831.40736") :method
 .annotate "line", 138
     $P445 = self."!PREFIX__!protoregex"("assertion")
     .return ($P445)
@@ -5347,9 +5347,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<?>"  :subid("127_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "assertion:sym<?>"  :subid("127_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P454 = "129_1272455245.85124" 
+    .const 'Sub' $P454 = "129_1272816831.40736" 
     capture_lex $P454
     .local string rx447_tgt
     .local int rx447_pos
@@ -5393,7 +5393,7 @@
     rx447_cur."!mark_push"(0, rx447_pos, $I10)
   # rx subrule "before" subtype=zerowidth negate=
     rx447_cur."!cursor_pos"(rx447_pos)
-    .const 'Sub' $P454 = "129_1272455245.85124" 
+    .const 'Sub' $P454 = "129_1272816831.40736" 
     capture_lex $P454
     $P10 = rx447_cur."before"($P454)
     unless $P10, rx447_fail
@@ -5426,7 +5426,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<?>"  :subid("128_1272455245.85124") :method
+.sub "!PREFIX__assertion:sym<?>"  :subid("128_1272816831.40736") :method
 .annotate "line", 3
     $P449 = self."!PREFIX__!subrule"("assertion", "?")
     new $P450, "ResizablePMCArray"
@@ -5437,7 +5437,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block453"  :anon :subid("129_1272455245.85124") :method :outer("127_1272455245.85124")
+.sub "_block453"  :anon :subid("129_1272816831.40736") :method :outer("127_1272816831.40736")
 .annotate "line", 140
     .local string rx455_tgt
     .local int rx455_pos
@@ -5493,9 +5493,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<!>"  :subid("130_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "assertion:sym<!>"  :subid("130_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P465 = "132_1272455245.85124" 
+    .const 'Sub' $P465 = "132_1272816831.40736" 
     capture_lex $P465
     .local string rx458_tgt
     .local int rx458_pos
@@ -5539,7 +5539,7 @@
     rx458_cur."!mark_push"(0, rx458_pos, $I10)
   # rx subrule "before" subtype=zerowidth negate=
     rx458_cur."!cursor_pos"(rx458_pos)
-    .const 'Sub' $P465 = "132_1272455245.85124" 
+    .const 'Sub' $P465 = "132_1272816831.40736" 
     capture_lex $P465
     $P10 = rx458_cur."before"($P465)
     unless $P10, rx458_fail
@@ -5572,7 +5572,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<!>"  :subid("131_1272455245.85124") :method
+.sub "!PREFIX__assertion:sym<!>"  :subid("131_1272816831.40736") :method
 .annotate "line", 3
     $P460 = self."!PREFIX__!subrule"("assertion", "!")
     new $P461, "ResizablePMCArray"
@@ -5583,7 +5583,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block464"  :anon :subid("132_1272455245.85124") :method :outer("130_1272455245.85124")
+.sub "_block464"  :anon :subid("132_1272816831.40736") :method :outer("130_1272816831.40736")
 .annotate "line", 141
     .local string rx466_tgt
     .local int rx466_pos
@@ -5639,7 +5639,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<method>"  :subid("133_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "assertion:sym<method>"  :subid("133_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx469_tgt
     .local int rx469_pos
@@ -5705,7 +5705,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<method>"  :subid("134_1272455245.85124") :method
+.sub "!PREFIX__assertion:sym<method>"  :subid("134_1272816831.40736") :method
 .annotate "line", 3
     $P471 = self."!PREFIX__!subrule"("assertion", ".")
     new $P472, "ResizablePMCArray"
@@ -5715,9 +5715,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<name>"  :subid("135_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "assertion:sym<name>"  :subid("135_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P483 = "137_1272455245.85124" 
+    .const 'Sub' $P483 = "137_1272816831.40736" 
     capture_lex $P483
     .local string rx475_tgt
     .local int rx475_pos
@@ -5727,7 +5727,7 @@
     .local pmc rx475_cur
     (rx475_cur, rx475_pos, rx475_tgt) = self."!cursor_start"()
     rx475_cur."!cursor_debug"("START ", "assertion:sym<name>")
-    rx475_cur."!cursor_caparray"("assertion", "nibbler", "arglist")
+    rx475_cur."!cursor_caparray"("nibbler", "arglist", "assertion")
     .lex unicode:"$\x{a2}", rx475_cur
     .local pmc match
     .lex "$/", match
@@ -5782,7 +5782,7 @@
 .annotate "line", 150
   # rx subrule "before" subtype=zerowidth negate=
     rx475_cur."!cursor_pos"(rx475_pos)
-    .const 'Sub' $P483 = "137_1272455245.85124" 
+    .const 'Sub' $P483 = "137_1272816831.40736" 
     capture_lex $P483
     $P10 = rx475_cur."before"($P483)
     unless $P10, rx475_fail
@@ -5889,7 +5889,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<name>"  :subid("136_1272455245.85124") :method
+.sub "!PREFIX__assertion:sym<name>"  :subid("136_1272816831.40736") :method
 .annotate "line", 3
     new $P477, "ResizablePMCArray"
     push $P477, ""
@@ -5898,7 +5898,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block482"  :anon :subid("137_1272455245.85124") :method :outer("135_1272455245.85124")
+.sub "_block482"  :anon :subid("137_1272816831.40736") :method :outer("135_1272816831.40736")
 .annotate "line", 150
     .local string rx484_tgt
     .local int rx484_pos
@@ -5954,9 +5954,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<[>"  :subid("138_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "assertion:sym<[>"  :subid("138_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P493 = "140_1272455245.85124" 
+    .const 'Sub' $P493 = "140_1272816831.40736" 
     capture_lex $P493
     .local string rx488_tgt
     .local int rx488_pos
@@ -5991,7 +5991,7 @@
 .annotate "line", 158
   # rx subrule "before" subtype=zerowidth negate=
     rx488_cur."!cursor_pos"(rx488_pos)
-    .const 'Sub' $P493 = "140_1272455245.85124" 
+    .const 'Sub' $P493 = "140_1272816831.40736" 
     capture_lex $P493
     $P10 = rx488_cur."before"($P493)
     unless $P10, rx488_fail
@@ -6029,7 +6029,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<[>"  :subid("139_1272455245.85124") :method
+.sub "!PREFIX__assertion:sym<[>"  :subid("139_1272816831.40736") :method
 .annotate "line", 3
     new $P490, "ResizablePMCArray"
     push $P490, ""
@@ -6038,7 +6038,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block492"  :anon :subid("140_1272455245.85124") :method :outer("138_1272455245.85124")
+.sub "_block492"  :anon :subid("140_1272816831.40736") :method :outer("138_1272816831.40736")
 .annotate "line", 158
     .local string rx494_tgt
     .local int rx494_pos
@@ -6118,9 +6118,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "cclass_elem"  :subid("141_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "cclass_elem"  :subid("141_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P511 = "143_1272455245.85124" 
+    .const 'Sub' $P511 = "143_1272816831.40736" 
     capture_lex $P511
     .local string rx500_tgt
     .local int rx500_pos
@@ -6223,7 +6223,7 @@
 .annotate "line", 164
   # rx subrule $P511 subtype=capture negate=
     rx500_cur."!cursor_pos"(rx500_pos)
-    .const 'Sub' $P511 = "143_1272455245.85124" 
+    .const 'Sub' $P511 = "143_1272816831.40736" 
     capture_lex $P511
     $P10 = rx500_cur.$P511()
     unless $P10, rx500_fail
@@ -6304,7 +6304,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__cclass_elem"  :subid("142_1272455245.85124") :method
+.sub "!PREFIX__cclass_elem"  :subid("142_1272816831.40736") :method
 .annotate "line", 3
     new $P502, "ResizablePMCArray"
     push $P502, ""
@@ -6315,13 +6315,13 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block510"  :anon :subid("143_1272455245.85124") :method :outer("141_1272455245.85124")
+.sub "_block510"  :anon :subid("143_1272816831.40736") :method :outer("141_1272816831.40736")
 .annotate "line", 164
-    .const 'Sub' $P526 = "146_1272455245.85124" 
+    .const 'Sub' $P526 = "146_1272816831.40736" 
     capture_lex $P526
-    .const 'Sub' $P521 = "145_1272455245.85124" 
+    .const 'Sub' $P521 = "145_1272816831.40736" 
     capture_lex $P521
-    .const 'Sub' $P517 = "144_1272455245.85124" 
+    .const 'Sub' $P517 = "144_1272816831.40736" 
     capture_lex $P517
     .local string rx512_tgt
     .local int rx512_pos
@@ -6392,7 +6392,7 @@
     add rx512_pos, 1
   # rx subrule $P517 subtype=capture negate=
     rx512_cur."!cursor_pos"(rx512_pos)
-    .const 'Sub' $P517 = "144_1272455245.85124" 
+    .const 'Sub' $P517 = "144_1272816831.40736" 
     capture_lex $P517
     $P10 = rx512_cur.$P517()
     unless $P10, rx512_fail
@@ -6403,7 +6403,7 @@
   alt515_1:
   # rx subrule $P521 subtype=capture negate=
     rx512_cur."!cursor_pos"(rx512_pos)
-    .const 'Sub' $P521 = "145_1272455245.85124" 
+    .const 'Sub' $P521 = "145_1272816831.40736" 
     capture_lex $P521
     $P10 = rx512_cur.$P521()
     unless $P10, rx512_fail
@@ -6432,7 +6432,7 @@
     add rx512_pos, rx512_off, $I11
   # rx subrule $P526 subtype=capture negate=
     rx512_cur."!cursor_pos"(rx512_pos)
-    .const 'Sub' $P526 = "146_1272455245.85124" 
+    .const 'Sub' $P526 = "146_1272816831.40736" 
     capture_lex $P526
     $P10 = rx512_cur.$P526()
     unless $P10, rx512_fail
@@ -6461,7 +6461,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block516"  :anon :subid("144_1272455245.85124") :method :outer("143_1272455245.85124")
+.sub "_block516"  :anon :subid("144_1272816831.40736") :method :outer("143_1272816831.40736")
 .annotate "line", 166
     .local string rx518_tgt
     .local int rx518_pos
@@ -6513,7 +6513,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block520"  :anon :subid("145_1272455245.85124") :method :outer("143_1272455245.85124")
+.sub "_block520"  :anon :subid("145_1272816831.40736") :method :outer("143_1272816831.40736")
 .annotate "line", 166
     .local string rx522_tgt
     .local int rx522_pos
@@ -6569,7 +6569,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block525"  :anon :subid("146_1272455245.85124") :method :outer("143_1272455245.85124")
+.sub "_block525"  :anon :subid("146_1272816831.40736") :method :outer("143_1272816831.40736")
 .annotate "line", 166
     .local string rx527_tgt
     .local int rx527_pos
@@ -6621,9 +6621,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_internal"  :subid("147_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "mod_internal"  :subid("147_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P543 = "149_1272455245.85124" 
+    .const 'Sub' $P543 = "149_1272816831.40736" 
     capture_lex $P543
     .local string rx535_tgt
     .local int rx535_pos
@@ -6673,7 +6673,7 @@
   rxquantr541_loop:
   # rx subrule $P543 subtype=capture negate=
     rx535_cur."!cursor_pos"(rx535_pos)
-    .const 'Sub' $P543 = "149_1272455245.85124" 
+    .const 'Sub' $P543 = "149_1272816831.40736" 
     capture_lex $P543
     $P10 = rx535_cur.$P543()
     unless $P10, rx535_fail
@@ -6775,7 +6775,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_internal"  :subid("148_1272455245.85124") :method
+.sub "!PREFIX__mod_internal"  :subid("148_1272816831.40736") :method
 .annotate "line", 3
     $P537 = self."!PREFIX__!subrule"("mod_ident", ":")
     new $P538, "ResizablePMCArray"
@@ -6786,7 +6786,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block542"  :anon :subid("149_1272455245.85124") :method :outer("147_1272455245.85124")
+.sub "_block542"  :anon :subid("149_1272816831.40736") :method :outer("147_1272816831.40736")
 .annotate "line", 176
     .local string rx544_tgt
     .local int rx544_pos
@@ -6854,7 +6854,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident"  :subid("150_1272455245.85124") :method
+.sub "mod_ident"  :subid("150_1272816831.40736") :method
 .annotate "line", 181
     $P552 = self."!protoregex"("mod_ident")
     .return ($P552)
@@ -6862,7 +6862,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident"  :subid("151_1272455245.85124") :method
+.sub "!PREFIX__mod_ident"  :subid("151_1272816831.40736") :method
 .annotate "line", 181
     $P554 = self."!PREFIX__!protoregex"("mod_ident")
     .return ($P554)
@@ -6870,7 +6870,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident:sym<ignorecase>"  :subid("152_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "mod_ident:sym<ignorecase>"  :subid("152_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx556_tgt
     .local int rx556_pos
@@ -6955,7 +6955,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident:sym<ignorecase>"  :subid("153_1272455245.85124") :method
+.sub "!PREFIX__mod_ident:sym<ignorecase>"  :subid("153_1272816831.40736") :method
 .annotate "line", 3
     new $P558, "ResizablePMCArray"
     push $P558, "i"
@@ -6964,7 +6964,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident:sym<ratchet>"  :subid("154_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "mod_ident:sym<ratchet>"  :subid("154_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx564_tgt
     .local int rx564_pos
@@ -7049,7 +7049,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident:sym<ratchet>"  :subid("155_1272455245.85124") :method
+.sub "!PREFIX__mod_ident:sym<ratchet>"  :subid("155_1272816831.40736") :method
 .annotate "line", 3
     new $P566, "ResizablePMCArray"
     push $P566, "r"
@@ -7058,7 +7058,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident:sym<sigspace>"  :subid("156_1272455245.85124") :method :outer("11_1272455245.85124")
+.sub "mod_ident:sym<sigspace>"  :subid("156_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
     .local string rx572_tgt
     .local int rx572_pos
@@ -7143,7 +7143,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident:sym<sigspace>"  :subid("157_1272455245.85124") :method
+.sub "!PREFIX__mod_ident:sym<sigspace>"  :subid("157_1272816831.40736") :method
 .annotate "line", 3
     new $P574, "ResizablePMCArray"
     push $P574, "s"
@@ -7153,7 +7153,7 @@
 ### .include 'gen/p6regex-actions.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1272455249.42318")
+.sub "_block11"  :anon :subid("10_1272816836.73052")
 .annotate "line", 0
     get_hll_global $P14, ["Regex";"P6Regex";"Actions"], "_block13" 
     capture_lex $P14
@@ -7167,9 +7167,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post90") :outer("10_1272455249.42318")
+.sub "" :load :init :subid("post90") :outer("10_1272816836.73052")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1272455249.42318" 
+    .const 'Sub' $P12 = "10_1272816836.73052" 
     .local pmc block
     set block, $P12
     $P1570 = get_root_global ["parrot"], "P6metaclass"
@@ -7178,117 +7178,117 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block13"  :subid("11_1272455249.42318") :outer("10_1272455249.42318")
+.sub "_block13"  :subid("11_1272816836.73052") :outer("10_1272816836.73052")
 .annotate "line", 4
-    .const 'Sub' $P1536 = "89_1272455249.42318" 
+    .const 'Sub' $P1536 = "89_1272816836.73052" 
     capture_lex $P1536
-    .const 'Sub' $P1467 = "85_1272455249.42318" 
+    .const 'Sub' $P1467 = "85_1272816836.73052" 
     capture_lex $P1467
-    .const 'Sub' $P1399 = "83_1272455249.42318" 
+    .const 'Sub' $P1399 = "83_1272816836.73052" 
     capture_lex $P1399
-    .const 'Sub' $P1326 = "80_1272455249.42318" 
+    .const 'Sub' $P1326 = "80_1272816836.73052" 
     capture_lex $P1326
-    .const 'Sub' $P1312 = "79_1272455249.42318" 
+    .const 'Sub' $P1312 = "79_1272816836.73052" 
     capture_lex $P1312
-    .const 'Sub' $P1288 = "78_1272455249.42318" 
+    .const 'Sub' $P1288 = "78_1272816836.73052" 
     capture_lex $P1288
-    .const 'Sub' $P1270 = "77_1272455249.42318" 
+    .const 'Sub' $P1270 = "77_1272816836.73052" 
     capture_lex $P1270
-    .const 'Sub' $P1256 = "76_1272455249.42318" 
+    .const 'Sub' $P1256 = "76_1272816836.73052" 
     capture_lex $P1256
-    .const 'Sub' $P1243 = "75_1272455249.42318" 
+    .const 'Sub' $P1243 = "75_1272816836.73052" 
     capture_lex $P1243
-    .const 'Sub' $P1212 = "74_1272455249.42318" 
+    .const 'Sub' $P1212 = "74_1272816836.73052" 
     capture_lex $P1212
-    .const 'Sub' $P1181 = "73_1272455249.42318" 
+    .const 'Sub' $P1181 = "73_1272816836.73052" 
     capture_lex $P1181
-    .const 'Sub' $P1165 = "72_1272455249.42318" 
+    .const 'Sub' $P1165 = "72_1272816836.73052" 
     capture_lex $P1165
-    .const 'Sub' $P1149 = "71_1272455249.42318" 
+    .const 'Sub' $P1149 = "71_1272816836.73052" 
     capture_lex $P1149
-    .const 'Sub' $P1133 = "70_1272455249.42318" 
+    .const 'Sub' $P1133 = "70_1272816836.73052" 
     capture_lex $P1133
-    .const 'Sub' $P1117 = "69_1272455249.42318" 
+    .const 'Sub' $P1117 = "69_1272816836.73052" 
     capture_lex $P1117
-    .const 'Sub' $P1101 = "68_1272455249.42318" 
+    .const 'Sub' $P1101 = "68_1272816836.73052" 
     capture_lex $P1101
-    .const 'Sub' $P1085 = "67_1272455249.42318" 
+    .const 'Sub' $P1085 = "67_1272816836.73052" 
     capture_lex $P1085
-    .const 'Sub' $P1069 = "66_1272455249.42318" 
+    .const 'Sub' $P1069 = "66_1272816836.73052" 
     capture_lex $P1069
-    .const 'Sub' $P1045 = "65_1272455249.42318" 
+    .const 'Sub' $P1045 = "65_1272816836.73052" 
     capture_lex $P1045
-    .const 'Sub' $P1030 = "64_1272455249.42318" 
+    .const 'Sub' $P1030 = "64_1272816836.73052" 
     capture_lex $P1030
-    .const 'Sub' $P974 = "63_1272455249.42318" 
+    .const 'Sub' $P974 = "63_1272816836.73052" 
     capture_lex $P974
-    .const 'Sub' $P953 = "62_1272455249.42318" 
+    .const 'Sub' $P953 = "62_1272816836.73052" 
     capture_lex $P953
-    .const 'Sub' $P931 = "61_1272455249.42318" 
+    .const 'Sub' $P931 = "61_1272816836.73052" 
     capture_lex $P931
-    .const 'Sub' $P921 = "60_1272455249.42318" 
+    .const 'Sub' $P921 = "60_1272816836.73052" 
     capture_lex $P921
-    .const 'Sub' $P911 = "59_1272455249.42318" 
+    .const 'Sub' $P911 = "59_1272816836.73052" 
     capture_lex $P911
-    .const 'Sub' $P901 = "58_1272455249.42318" 
+    .const 'Sub' $P901 = "58_1272816836.73052" 
     capture_lex $P901
-    .const 'Sub' $P889 = "57_1272455249.42318" 
+    .const 'Sub' $P889 = "57_1272816836.73052" 
     capture_lex $P889
-    .const 'Sub' $P877 = "56_1272455249.42318" 
+    .const 'Sub' $P877 = "56_1272816836.73052" 
     capture_lex $P877
-    .const 'Sub' $P865 = "55_1272455249.42318" 
+    .const 'Sub' $P865 = "55_1272816836.73052" 
     capture_lex $P865
-    .const 'Sub' $P853 = "54_1272455249.42318" 
+    .const 'Sub' $P853 = "54_1272816836.73052" 
     capture_lex $P853
-    .const 'Sub' $P841 = "53_1272455249.42318" 
+    .const 'Sub' $P841 = "53_1272816836.73052" 
     capture_lex $P841
-    .const 'Sub' $P829 = "52_1272455249.42318" 
+    .const 'Sub' $P829 = "52_1272816836.73052" 
     capture_lex $P829
-    .const 'Sub' $P817 = "51_1272455249.42318" 
+    .const 'Sub' $P817 = "51_1272816836.73052" 
     capture_lex $P817
-    .const 'Sub' $P805 = "50_1272455249.42318" 
+    .const 'Sub' $P805 = "50_1272816836.73052" 
     capture_lex $P805
-    .const 'Sub' $P782 = "49_1272455249.42318" 
+    .const 'Sub' $P782 = "49_1272816836.73052" 
     capture_lex $P782
-    .const 'Sub' $P759 = "48_1272455249.42318" 
+    .const 'Sub' $P759 = "48_1272816836.73052" 
     capture_lex $P759
-    .const 'Sub' $P741 = "47_1272455249.42318" 
+    .const 'Sub' $P741 = "47_1272816836.73052" 
     capture_lex $P741
-    .const 'Sub' $P731 = "46_1272455249.42318" 
+    .const 'Sub' $P731 = "46_1272816836.73052" 
     capture_lex $P731
-    .const 'Sub' $P713 = "45_1272455249.42318" 
+    .const 'Sub' $P713 = "45_1272816836.73052" 
     capture_lex $P713
-    .const 'Sub' $P666 = "44_1272455249.42318" 
+    .const 'Sub' $P666 = "44_1272816836.73052" 
     capture_lex $P666
-    .const 'Sub' $P649 = "43_1272455249.42318" 
+    .const 'Sub' $P649 = "43_1272816836.73052" 
     capture_lex $P649
-    .const 'Sub' $P634 = "42_1272455249.42318" 
+    .const 'Sub' $P634 = "42_1272816836.73052" 
     capture_lex $P634
-    .const 'Sub' $P619 = "41_1272455249.42318" 
+    .const 'Sub' $P619 = "41_1272816836.73052" 
     capture_lex $P619
-    .const 'Sub' $P593 = "40_1272455249.42318" 
+    .const 'Sub' $P593 = "40_1272816836.73052" 
     capture_lex $P593
-    .const 'Sub' $P543 = "38_1272455249.42318" 
+    .const 'Sub' $P543 = "38_1272816836.73052" 
     capture_lex $P543
-    .const 'Sub' $P475 = "36_1272455249.42318" 
+    .const 'Sub' $P475 = "36_1272816836.73052" 
     capture_lex $P475
-    .const 'Sub' $P420 = "33_1272455249.42318" 
+    .const 'Sub' $P420 = "33_1272816836.73052" 
     capture_lex $P420
-    .const 'Sub' $P405 = "32_1272455249.42318" 
+    .const 'Sub' $P405 = "32_1272816836.73052" 
     capture_lex $P405
-    .const 'Sub' $P379 = "30_1272455249.42318" 
+    .const 'Sub' $P379 = "30_1272816836.73052" 
     capture_lex $P379
-    .const 'Sub' $P362 = "29_1272455249.42318" 
+    .const 'Sub' $P362 = "29_1272816836.73052" 
     capture_lex $P362
-    .const 'Sub' $P340 = "28_1272455249.42318" 
+    .const 'Sub' $P340 = "28_1272816836.73052" 
     capture_lex $P340
-    .const 'Sub' $P308 = "27_1272455249.42318" 
+    .const 'Sub' $P308 = "27_1272816836.73052" 
     capture_lex $P308
-    .const 'Sub' $P54 = "14_1272455249.42318" 
+    .const 'Sub' $P54 = "14_1272816836.73052" 
     capture_lex $P54
-    .const 'Sub' $P21 = "13_1272455249.42318" 
+    .const 'Sub' $P21 = "13_1272816836.73052" 
     capture_lex $P21
-    .const 'Sub' $P16 = "12_1272455249.42318" 
+    .const 'Sub' $P16 = "12_1272816836.73052" 
     capture_lex $P16
     get_global $P15, "@MODIFIERS"
     unless_null $P15, vivify_91
@@ -7296,23 +7296,23 @@
     set_global "@MODIFIERS", $P15
   vivify_91:
 .annotate "line", 6
-    .const 'Sub' $P16 = "12_1272455249.42318" 
+    .const 'Sub' $P16 = "12_1272816836.73052" 
     capture_lex $P16
     .lex "INIT", $P16
 .annotate "line", 479
-    .const 'Sub' $P21 = "13_1272455249.42318" 
+    .const 'Sub' $P21 = "13_1272816836.73052" 
     capture_lex $P21
     .lex "buildsub", $P21
 .annotate "line", 496
-    .const 'Sub' $P54 = "14_1272455249.42318" 
+    .const 'Sub' $P54 = "14_1272816836.73052" 
     capture_lex $P54
     .lex "capnames", $P54
 .annotate "line", 562
-    .const 'Sub' $P308 = "27_1272455249.42318" 
+    .const 'Sub' $P308 = "27_1272816836.73052" 
     capture_lex $P308
     .lex "backmod", $P308
 .annotate "line", 569
-    .const 'Sub' $P340 = "28_1272455249.42318" 
+    .const 'Sub' $P340 = "28_1272816836.73052" 
     capture_lex $P340
     .lex "subrule_alias", $P340
 .annotate "line", 4
@@ -7329,7 +7329,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "INIT"  :subid("12_1272455249.42318") :outer("11_1272455249.42318")
+.sub "INIT"  :subid("12_1272816836.73052") :outer("11_1272816836.73052")
 .annotate "line", 6
     new $P18, 'ExceptionHandler'
     set_addr $P18, control_17
@@ -7353,7 +7353,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "buildsub"  :subid("13_1272455249.42318") :outer("11_1272455249.42318")
+.sub "buildsub"  :subid("13_1272816836.73052") :outer("11_1272816836.73052")
     .param pmc param_24
     .param pmc param_25 :optional
     .param int has_param_25 :opt_flag
@@ -7430,19 +7430,19 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "capnames"  :subid("14_1272455249.42318") :outer("11_1272455249.42318")
+.sub "capnames"  :subid("14_1272816836.73052") :outer("11_1272816836.73052")
     .param pmc param_57
     .param pmc param_58
 .annotate "line", 496
-    .const 'Sub' $P283 = "25_1272455249.42318" 
+    .const 'Sub' $P283 = "25_1272816836.73052" 
     capture_lex $P283
-    .const 'Sub' $P220 = "22_1272455249.42318" 
+    .const 'Sub' $P220 = "22_1272816836.73052" 
     capture_lex $P220
-    .const 'Sub' $P178 = "20_1272455249.42318" 
+    .const 'Sub' $P178 = "20_1272816836.73052" 
     capture_lex $P178
-    .const 'Sub' $P136 = "18_1272455249.42318" 
+    .const 'Sub' $P136 = "18_1272816836.73052" 
     capture_lex $P136
-    .const 'Sub' $P69 = "15_1272455249.42318" 
+    .const 'Sub' $P69 = "15_1272816836.73052" 
     capture_lex $P69
     new $P56, 'ExceptionHandler'
     set_addr $P56, control_55
@@ -7498,21 +7498,21 @@
     set $S280, $P279
     iseq $I281, $S280, "quant"
     unless $I281, if_278_end
-    .const 'Sub' $P283 = "25_1272455249.42318" 
+    .const 'Sub' $P283 = "25_1272816836.73052" 
     capture_lex $P283
     $P283()
   if_278_end:
     goto if_215_end
   if_215:
 .annotate "line", 534
-    .const 'Sub' $P220 = "22_1272455249.42318" 
+    .const 'Sub' $P220 = "22_1272816836.73052" 
     capture_lex $P220
     $P220()
   if_215_end:
     goto if_168_end
   if_168:
 .annotate "line", 521
-    .const 'Sub' $P178 = "20_1272455249.42318" 
+    .const 'Sub' $P178 = "20_1272816836.73052" 
     capture_lex $P178
     $P178()
   if_168_end:
@@ -7532,7 +7532,7 @@
     unless $P130, loop165_done
     shift $P134, $P130
   loop165_redo:
-    .const 'Sub' $P136 = "18_1272455249.42318" 
+    .const 'Sub' $P136 = "18_1272816836.73052" 
     capture_lex $P136
     $P136($P134)
   loop165_next:
@@ -7551,7 +7551,7 @@
     goto if_64_end
   if_64:
 .annotate "line", 499
-    .const 'Sub' $P69 = "15_1272455249.42318" 
+    .const 'Sub' $P69 = "15_1272816836.73052" 
     capture_lex $P69
     $P69()
   if_64_end:
@@ -7575,9 +7575,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block282"  :anon :subid("25_1272455249.42318") :outer("14_1272455249.42318")
+.sub "_block282"  :anon :subid("25_1272816836.73052") :outer("14_1272816836.73052")
 .annotate "line", 551
-    .const 'Sub' $P294 = "26_1272455249.42318" 
+    .const 'Sub' $P294 = "26_1272816836.73052" 
     capture_lex $P294
 .annotate "line", 552
     $P284 = root_new ['parrot';'Hash']
@@ -7606,7 +7606,7 @@
     unless $P289, loop299_done
     shift $P292, $P289
   loop299_redo:
-    .const 'Sub' $P294 = "26_1272455249.42318" 
+    .const 'Sub' $P294 = "26_1272816836.73052" 
     capture_lex $P294
     $P294($P292)
   loop299_next:
@@ -7636,7 +7636,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block293"  :anon :subid("26_1272455249.42318") :outer("25_1272455249.42318")
+.sub "_block293"  :anon :subid("26_1272816836.73052") :outer("25_1272816836.73052")
     .param pmc param_295
 .annotate "line", 553
     .lex "$_", param_295
@@ -7656,11 +7656,11 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block219"  :anon :subid("22_1272455249.42318") :outer("14_1272455249.42318")
+.sub "_block219"  :anon :subid("22_1272816836.73052") :outer("14_1272816836.73052")
 .annotate "line", 534
-    .const 'Sub' $P260 = "24_1272455249.42318" 
+    .const 'Sub' $P260 = "24_1272816836.73052" 
     capture_lex $P260
-    .const 'Sub' $P232 = "23_1272455249.42318" 
+    .const 'Sub' $P232 = "23_1272816836.73052" 
     capture_lex $P232
 .annotate "line", 535
     new $P221, "Undef"
@@ -7695,7 +7695,7 @@
     unless $P227, loop248_done
     shift $P230, $P227
   loop248_redo:
-    .const 'Sub' $P232 = "23_1272455249.42318" 
+    .const 'Sub' $P232 = "23_1272816836.73052" 
     capture_lex $P232
     $P232($P230)
   loop248_next:
@@ -7734,7 +7734,7 @@
     unless $P255, loop273_done
     shift $P258, $P255
   loop273_redo:
-    .const 'Sub' $P260 = "24_1272455249.42318" 
+    .const 'Sub' $P260 = "24_1272816836.73052" 
     capture_lex $P260
     $P260($P258)
   loop273_next:
@@ -7764,7 +7764,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block231"  :anon :subid("23_1272455249.42318") :outer("22_1272455249.42318")
+.sub "_block231"  :anon :subid("23_1272816836.73052") :outer("22_1272816836.73052")
     .param pmc param_233
 .annotate "line", 541
     .lex "$_", param_233
@@ -7804,7 +7804,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block259"  :anon :subid("24_1272455249.42318") :outer("22_1272455249.42318")
+.sub "_block259"  :anon :subid("24_1272816836.73052") :outer("22_1272816836.73052")
     .param pmc param_261
 .annotate "line", 546
     .lex "$_", param_261
@@ -7844,9 +7844,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block177"  :anon :subid("20_1272455249.42318") :outer("14_1272455249.42318")
+.sub "_block177"  :anon :subid("20_1272816836.73052") :outer("14_1272816836.73052")
 .annotate "line", 521
-    .const 'Sub' $P196 = "21_1272455249.42318" 
+    .const 'Sub' $P196 = "21_1272816836.73052" 
     capture_lex $P196
 .annotate "line", 522
     new $P179, "Undef"
@@ -7889,7 +7889,7 @@
     unless $P191, loop212_done
     shift $P194, $P191
   loop212_redo:
-    .const 'Sub' $P196 = "21_1272455249.42318" 
+    .const 'Sub' $P196 = "21_1272816836.73052" 
     capture_lex $P196
     $P196($P194)
   loop212_next:
@@ -7909,7 +7909,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block195"  :anon :subid("21_1272455249.42318") :outer("20_1272455249.42318")
+.sub "_block195"  :anon :subid("21_1272816836.73052") :outer("20_1272816836.73052")
     .param pmc param_197
 .annotate "line", 529
     .lex "$_", param_197
@@ -7949,10 +7949,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block135"  :anon :subid("18_1272455249.42318") :outer("14_1272455249.42318")
+.sub "_block135"  :anon :subid("18_1272816836.73052") :outer("14_1272816836.73052")
     .param pmc param_138
 .annotate "line", 513
-    .const 'Sub' $P147 = "19_1272455249.42318" 
+    .const 'Sub' $P147 = "19_1272816836.73052" 
     capture_lex $P147
 .annotate "line", 514
     $P137 = root_new ['parrot';'Hash']
@@ -7975,7 +7975,7 @@
     unless $P142, loop160_done
     shift $P145, $P142
   loop160_redo:
-    .const 'Sub' $P147 = "19_1272455249.42318" 
+    .const 'Sub' $P147 = "19_1272816836.73052" 
     capture_lex $P147
     $P147($P145)
   loop160_next:
@@ -8005,7 +8005,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block146"  :anon :subid("19_1272455249.42318") :outer("18_1272455249.42318")
+.sub "_block146"  :anon :subid("19_1272816836.73052") :outer("18_1272816836.73052")
     .param pmc param_148
 .annotate "line", 515
     .lex "$_", param_148
@@ -8045,9 +8045,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block68"  :anon :subid("15_1272455249.42318") :outer("14_1272455249.42318")
+.sub "_block68"  :anon :subid("15_1272816836.73052") :outer("14_1272816836.73052")
 .annotate "line", 499
-    .const 'Sub' $P78 = "16_1272455249.42318" 
+    .const 'Sub' $P78 = "16_1272816836.73052" 
     capture_lex $P78
 .annotate "line", 500
     new $P70, "Undef"
@@ -8068,7 +8068,7 @@
     unless $P72, loop122_done
     shift $P76, $P72
   loop122_redo:
-    .const 'Sub' $P78 = "16_1272455249.42318" 
+    .const 'Sub' $P78 = "16_1272816836.73052" 
     capture_lex $P78
     $P78($P76)
   loop122_next:
@@ -8091,10 +8091,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block77"  :anon :subid("16_1272455249.42318") :outer("15_1272455249.42318")
+.sub "_block77"  :anon :subid("16_1272816836.73052") :outer("15_1272816836.73052")
     .param pmc param_80
 .annotate "line", 501
-    .const 'Sub' $P89 = "17_1272455249.42318" 
+    .const 'Sub' $P89 = "17_1272816836.73052" 
     capture_lex $P89
 .annotate "line", 502
     $P79 = root_new ['parrot';'Hash']
@@ -8117,7 +8117,7 @@
     unless $P84, loop109_done
     shift $P87, $P84
   loop109_redo:
-    .const 'Sub' $P89 = "17_1272455249.42318" 
+    .const 'Sub' $P89 = "17_1272816836.73052" 
     capture_lex $P89
     $P89($P87)
   loop109_next:
@@ -8166,7 +8166,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block88"  :anon :subid("17_1272455249.42318") :outer("16_1272455249.42318")
+.sub "_block88"  :anon :subid("17_1272816836.73052") :outer("16_1272816836.73052")
     .param pmc param_90
 .annotate "line", 503
     .lex "$_", param_90
@@ -8225,7 +8225,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backmod"  :subid("27_1272455249.42318") :outer("11_1272455249.42318")
+.sub "backmod"  :subid("27_1272816836.73052") :outer("11_1272816836.73052")
     .param pmc param_311
     .param pmc param_312
 .annotate "line", 562
@@ -8299,7 +8299,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "subrule_alias"  :subid("28_1272455249.42318") :outer("11_1272455249.42318")
+.sub "subrule_alias"  :subid("28_1272816836.73052") :outer("11_1272816836.73052")
     .param pmc param_343
     .param pmc param_344
 .annotate "line", 569
@@ -8343,7 +8343,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "arg"  :subid("29_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "arg"  :subid("29_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_365
 .annotate "line", 14
     new $P364, 'ExceptionHandler'
@@ -8399,10 +8399,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "arglist"  :subid("30_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "arglist"  :subid("30_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_382
 .annotate "line", 18
-    .const 'Sub' $P392 = "31_1272455249.42318" 
+    .const 'Sub' $P392 = "31_1272816836.73052" 
     capture_lex $P392
     new $P381, 'ExceptionHandler'
     set_addr $P381, control_380
@@ -8436,7 +8436,7 @@
     unless $P386, loop398_done
     shift $P390, $P386
   loop398_redo:
-    .const 'Sub' $P392 = "31_1272455249.42318" 
+    .const 'Sub' $P392 = "31_1272816836.73052" 
     capture_lex $P392
     $P392($P390)
   loop398_next:
@@ -8465,7 +8465,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block391"  :anon :subid("31_1272455249.42318") :outer("30_1272455249.42318")
+.sub "_block391"  :anon :subid("31_1272816836.73052") :outer("30_1272816836.73052")
     .param pmc param_393
 .annotate "line", 20
     .lex "$_", param_393
@@ -8478,7 +8478,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "TOP"  :subid("32_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "TOP"  :subid("32_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_408
 .annotate "line", 24
     new $P407, 'ExceptionHandler'
@@ -8520,14 +8520,14 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "nibbler"  :subid("33_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "nibbler"  :subid("33_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_423
     .param pmc param_424 :optional
     .param int has_param_424 :opt_flag
 .annotate "line", 30
-    .const 'Sub' $P458 = "35_1272455249.42318" 
+    .const 'Sub' $P458 = "35_1272816836.73052" 
     capture_lex $P458
-    .const 'Sub' $P432 = "34_1272455249.42318" 
+    .const 'Sub' $P432 = "34_1272816836.73052" 
     capture_lex $P432
     new $P422, 'ExceptionHandler'
     set_addr $P422, control_421
@@ -8548,7 +8548,7 @@
     set $S429, $P428
     iseq $I430, $S429, "open"
     unless $I430, if_427_end
-    .const 'Sub' $P432 = "34_1272455249.42318" 
+    .const 'Sub' $P432 = "34_1272816836.73052" 
     capture_lex $P432
     $P432()
   if_427_end:
@@ -8611,7 +8611,7 @@
     unless $P452, loop464_done
     shift $P456, $P452
   loop464_redo:
-    .const 'Sub' $P458 = "35_1272455249.42318" 
+    .const 'Sub' $P458 = "35_1272816836.73052" 
     capture_lex $P458
     $P458($P456)
   loop464_next:
@@ -8641,7 +8641,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block431"  :anon :subid("34_1272455249.42318") :outer("33_1272455249.42318")
+.sub "_block431"  :anon :subid("34_1272816836.73052") :outer("33_1272816836.73052")
 .annotate "line", 32
     $P433 = root_new ['parrot';'Hash']
     .lex "%old", $P433
@@ -8681,7 +8681,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block457"  :anon :subid("35_1272455249.42318") :outer("33_1272455249.42318")
+.sub "_block457"  :anon :subid("35_1272816836.73052") :outer("33_1272816836.73052")
     .param pmc param_459
 .annotate "line", 45
     .lex "$_", param_459
@@ -8696,10 +8696,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "termish"  :subid("36_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "termish"  :subid("36_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_478
 .annotate "line", 55
-    .const 'Sub' $P491 = "37_1272455249.42318" 
+    .const 'Sub' $P491 = "37_1272816836.73052" 
     capture_lex $P491
     new $P477, 'ExceptionHandler'
     set_addr $P477, control_476
@@ -8742,7 +8742,7 @@
     unless $P485, loop536_done
     shift $P489, $P485
   loop536_redo:
-    .const 'Sub' $P491 = "37_1272455249.42318" 
+    .const 'Sub' $P491 = "37_1272816836.73052" 
     capture_lex $P491
     $P491($P489)
   loop536_next:
@@ -8771,7 +8771,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block490"  :anon :subid("37_1272455249.42318") :outer("36_1272455249.42318")
+.sub "_block490"  :anon :subid("37_1272816836.73052") :outer("36_1272816836.73052")
     .param pmc param_493
 .annotate "line", 59
     new $P492, "Undef"
@@ -8898,10 +8898,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantified_atom"  :subid("38_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "quantified_atom"  :subid("38_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_546
 .annotate "line", 76
-    .const 'Sub' $P555 = "39_1272455249.42318" 
+    .const 'Sub' $P555 = "39_1272816836.73052" 
     capture_lex $P555
     new $P545, 'ExceptionHandler'
     set_addr $P545, control_544
@@ -8964,7 +8964,7 @@
     goto if_551_end
   if_551:
 .annotate "line", 78
-    .const 'Sub' $P555 = "39_1272455249.42318" 
+    .const 'Sub' $P555 = "39_1272816836.73052" 
     capture_lex $P555
     $P555()
   if_551_end:
@@ -9018,7 +9018,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block554"  :anon :subid("39_1272455249.42318") :outer("38_1272455249.42318")
+.sub "_block554"  :anon :subid("39_1272816836.73052") :outer("38_1272816836.73052")
 .annotate "line", 80
     new $P556, "Undef"
     .lex "$qast", $P556
@@ -9057,7 +9057,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "atom"  :subid("40_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "atom"  :subid("40_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_596
 .annotate "line", 91
     new $P595, 'ExceptionHandler'
@@ -9135,7 +9135,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<*>"  :subid("41_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "quantifier:sym<*>"  :subid("41_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_622
 .annotate "line", 101
     new $P621, 'ExceptionHandler'
@@ -9175,7 +9175,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<+>"  :subid("42_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "quantifier:sym<+>"  :subid("42_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_637
 .annotate "line", 106
     new $P636, 'ExceptionHandler'
@@ -9215,7 +9215,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<?>"  :subid("43_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "quantifier:sym<?>"  :subid("43_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_652
 .annotate "line", 111
     new $P651, 'ExceptionHandler'
@@ -9259,7 +9259,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<**>"  :subid("44_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "quantifier:sym<**>"  :subid("44_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_669
 .annotate "line", 117
     new $P668, 'ExceptionHandler'
@@ -9399,7 +9399,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<ws>"  :subid("45_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "metachar:sym<ws>"  :subid("45_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_716
 .annotate "line", 131
     new $P715, 'ExceptionHandler'
@@ -9451,7 +9451,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<[ ]>"  :subid("46_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "metachar:sym<[ ]>"  :subid("46_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_734
 .annotate "line", 140
     new $P733, 'ExceptionHandler'
@@ -9483,7 +9483,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<( )>"  :subid("47_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "metachar:sym<( )>"  :subid("47_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_744
 .annotate "line", 144
     new $P743, 'ExceptionHandler'
@@ -9531,7 +9531,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<'>"  :subid("48_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "metachar:sym<'>"  :subid("48_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_762
 .annotate "line", 151
     new $P761, 'ExceptionHandler'
@@ -9587,7 +9587,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<\">"  :subid("49_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "metachar:sym<\">"  :subid("49_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_785
 .annotate "line", 158
     new $P784, 'ExceptionHandler'
@@ -9643,7 +9643,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<.>"  :subid("50_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "metachar:sym<.>"  :subid("50_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_808
 .annotate "line", 165
     new $P807, 'ExceptionHandler'
@@ -9674,7 +9674,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<^>"  :subid("51_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "metachar:sym<^>"  :subid("51_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_820
 .annotate "line", 170
     new $P819, 'ExceptionHandler'
@@ -9705,7 +9705,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<^^>"  :subid("52_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "metachar:sym<^^>"  :subid("52_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_832
 .annotate "line", 175
     new $P831, 'ExceptionHandler'
@@ -9736,7 +9736,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<$>"  :subid("53_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "metachar:sym<$>"  :subid("53_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_844
 .annotate "line", 180
     new $P843, 'ExceptionHandler'
@@ -9767,7 +9767,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<$$>"  :subid("54_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "metachar:sym<$$>"  :subid("54_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_856
 .annotate "line", 185
     new $P855, 'ExceptionHandler'
@@ -9798,7 +9798,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<:::>"  :subid("55_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "metachar:sym<:::>"  :subid("55_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_868
 .annotate "line", 190
     new $P867, 'ExceptionHandler'
@@ -9829,7 +9829,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<lwb>"  :subid("56_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "metachar:sym<lwb>"  :subid("56_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_880
 .annotate "line", 195
     new $P879, 'ExceptionHandler'
@@ -9860,7 +9860,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<rwb>"  :subid("57_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "metachar:sym<rwb>"  :subid("57_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_892
 .annotate "line", 200
     new $P891, 'ExceptionHandler'
@@ -9891,7 +9891,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<bs>"  :subid("58_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "metachar:sym<bs>"  :subid("58_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_904
 .annotate "line", 205
     new $P903, 'ExceptionHandler'
@@ -9923,7 +9923,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<mod>"  :subid("59_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "metachar:sym<mod>"  :subid("59_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_914
 .annotate "line", 209
     new $P913, 'ExceptionHandler'
@@ -9955,7 +9955,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<assert>"  :subid("60_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "metachar:sym<assert>"  :subid("60_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_924
 .annotate "line", 213
     new $P923, 'ExceptionHandler'
@@ -9987,7 +9987,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<~>"  :subid("61_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "metachar:sym<~>"  :subid("61_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_934
 .annotate "line", 217
     new $P933, 'ExceptionHandler'
@@ -10049,7 +10049,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<{*}>"  :subid("62_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "metachar:sym<{*}>"  :subid("62_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_956
 .annotate "line", 230
     new $P955, 'ExceptionHandler'
@@ -10110,7 +10110,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<var>"  :subid("63_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "metachar:sym<var>"  :subid("63_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_977
 .annotate "line", 237
     new $P976, 'ExceptionHandler'
@@ -10270,7 +10270,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<PIR>"  :subid("64_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "metachar:sym<PIR>"  :subid("64_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1033
 .annotate "line", 257
     new $P1032, 'ExceptionHandler'
@@ -10309,7 +10309,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<w>"  :subid("65_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "backslash:sym<w>"  :subid("65_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1048
 .annotate "line", 265
     new $P1047, 'ExceptionHandler'
@@ -10375,7 +10375,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<b>"  :subid("66_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "backslash:sym<b>"  :subid("66_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1072
 .annotate "line", 271
     new $P1071, 'ExceptionHandler'
@@ -10418,7 +10418,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<e>"  :subid("67_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "backslash:sym<e>"  :subid("67_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1088
 .annotate "line", 277
     new $P1087, 'ExceptionHandler'
@@ -10461,7 +10461,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<f>"  :subid("68_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "backslash:sym<f>"  :subid("68_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1104
 .annotate "line", 283
     new $P1103, 'ExceptionHandler'
@@ -10504,7 +10504,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<h>"  :subid("69_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "backslash:sym<h>"  :subid("69_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1120
 .annotate "line", 289
     new $P1119, 'ExceptionHandler'
@@ -10547,7 +10547,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<r>"  :subid("70_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "backslash:sym<r>"  :subid("70_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1136
 .annotate "line", 295
     new $P1135, 'ExceptionHandler'
@@ -10590,7 +10590,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<t>"  :subid("71_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "backslash:sym<t>"  :subid("71_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1152
 .annotate "line", 301
     new $P1151, 'ExceptionHandler'
@@ -10633,7 +10633,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<v>"  :subid("72_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "backslash:sym<v>"  :subid("72_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1168
 .annotate "line", 307
     new $P1167, 'ExceptionHandler'
@@ -10676,7 +10676,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<o>"  :subid("73_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "backslash:sym<o>"  :subid("73_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1184
 .annotate "line", 314
     new $P1183, 'ExceptionHandler'
@@ -10759,7 +10759,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<x>"  :subid("74_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "backslash:sym<x>"  :subid("74_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1215
 .annotate "line", 323
     new $P1214, 'ExceptionHandler'
@@ -10842,7 +10842,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<c>"  :subid("75_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "backslash:sym<c>"  :subid("75_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1246
 .annotate "line", 332
     new $P1245, 'ExceptionHandler'
@@ -10877,7 +10877,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<misc>"  :subid("76_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "backslash:sym<misc>"  :subid("76_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1259
 .annotate "line", 336
     new $P1258, 'ExceptionHandler'
@@ -10910,7 +10910,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<?>"  :subid("77_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "assertion:sym<?>"  :subid("77_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1273
 .annotate "line", 342
     new $P1272, 'ExceptionHandler'
@@ -10970,7 +10970,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<!>"  :subid("78_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "assertion:sym<!>"  :subid("78_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1291
 .annotate "line", 352
     new $P1290, 'ExceptionHandler'
@@ -11038,7 +11038,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<method>"  :subid("79_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "assertion:sym<method>"  :subid("79_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1315
 .annotate "line", 365
     new $P1314, 'ExceptionHandler'
@@ -11081,12 +11081,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<name>"  :subid("80_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "assertion:sym<name>"  :subid("80_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1329
 .annotate "line", 372
-    .const 'Sub' $P1387 = "82_1272455249.42318" 
+    .const 'Sub' $P1387 = "82_1272816836.73052" 
     capture_lex $P1387
-    .const 'Sub' $P1351 = "81_1272455249.42318" 
+    .const 'Sub' $P1351 = "81_1272816836.73052" 
     capture_lex $P1351
     new $P1328, 'ExceptionHandler'
     set_addr $P1328, control_1327
@@ -11182,7 +11182,7 @@
     unless $P1378, loop1392_done
     shift $P1385, $P1378
   loop1392_redo:
-    .const 'Sub' $P1387 = "82_1272455249.42318" 
+    .const 'Sub' $P1387 = "82_1272816836.73052" 
     capture_lex $P1387
     $P1387($P1385)
   loop1392_next:
@@ -11222,7 +11222,7 @@
     goto if_1346_end
   if_1346:
 .annotate "line", 379
-    .const 'Sub' $P1351 = "81_1272455249.42318" 
+    .const 'Sub' $P1351 = "81_1272816836.73052" 
     capture_lex $P1351
     $P1351()
   if_1346_end:
@@ -11263,7 +11263,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1386"  :anon :subid("82_1272455249.42318") :outer("80_1272455249.42318")
+.sub "_block1386"  :anon :subid("82_1272816836.73052") :outer("80_1272816836.73052")
     .param pmc param_1388
 .annotate "line", 401
     .lex "$_", param_1388
@@ -11275,7 +11275,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1350"  :anon :subid("81_1272455249.42318") :outer("80_1272455249.42318")
+.sub "_block1350"  :anon :subid("81_1272816836.73052") :outer("80_1272816836.73052")
 .annotate "line", 380
     new $P1352, "Undef"
     .lex "$regexsym", $P1352
@@ -11306,10 +11306,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<[>"  :subid("83_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "assertion:sym<[>"  :subid("83_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1402
 .annotate "line", 407
-    .const 'Sub' $P1437 = "84_1272455249.42318" 
+    .const 'Sub' $P1437 = "84_1272816836.73052" 
     capture_lex $P1437
     new $P1401, 'ExceptionHandler'
     set_addr $P1401, control_1400
@@ -11401,7 +11401,7 @@
     islt $I1435, $N1432, $N1434
     unless $I1435, loop1460_done
   loop1460_redo:
-    .const 'Sub' $P1437 = "84_1272455249.42318" 
+    .const 'Sub' $P1437 = "84_1272816836.73052" 
     capture_lex $P1437
     $P1437()
   loop1460_next:
@@ -11429,7 +11429,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1436"  :anon :subid("84_1272455249.42318") :outer("83_1272455249.42318")
+.sub "_block1436"  :anon :subid("84_1272816836.73052") :outer("83_1272816836.73052")
 .annotate "line", 421
     new $P1438, "Undef"
     .lex "$ast", $P1438
@@ -11480,12 +11480,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "cclass_elem"  :subid("85_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "cclass_elem"  :subid("85_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1470
 .annotate "line", 434
-    .const 'Sub' $P1495 = "87_1272455249.42318" 
+    .const 'Sub' $P1495 = "87_1272816836.73052" 
     capture_lex $P1495
-    .const 'Sub' $P1479 = "86_1272455249.42318" 
+    .const 'Sub' $P1479 = "86_1272816836.73052" 
     capture_lex $P1479
     new $P1469, 'ExceptionHandler'
     set_addr $P1469, control_1468
@@ -11534,7 +11534,7 @@
     unless $P1489, loop1520_done
     shift $P1493, $P1489
   loop1520_redo:
-    .const 'Sub' $P1495 = "87_1272455249.42318" 
+    .const 'Sub' $P1495 = "87_1272816836.73052" 
     capture_lex $P1495
     $P1495($P1493)
   loop1520_next:
@@ -11558,7 +11558,7 @@
     goto if_1475_end
   if_1475:
 .annotate "line", 437
-    .const 'Sub' $P1479 = "86_1272455249.42318" 
+    .const 'Sub' $P1479 = "86_1272816836.73052" 
     capture_lex $P1479
     $P1479()
   if_1475_end:
@@ -11590,10 +11590,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1494"  :anon :subid("87_1272455249.42318") :outer("85_1272455249.42318")
+.sub "_block1494"  :anon :subid("87_1272816836.73052") :outer("85_1272816836.73052")
     .param pmc param_1496
 .annotate "line", 441
-    .const 'Sub' $P1502 = "88_1272455249.42318" 
+    .const 'Sub' $P1502 = "88_1272816836.73052" 
     capture_lex $P1502
     .lex "$_", param_1496
 .annotate "line", 442
@@ -11622,7 +11622,7 @@
 .annotate "line", 442
     goto if_1498_end
   if_1498:
-    .const 'Sub' $P1502 = "88_1272455249.42318" 
+    .const 'Sub' $P1502 = "88_1272816836.73052" 
     capture_lex $P1502
     $P1515 = $P1502()
     set $P1497, $P1515
@@ -11633,7 +11633,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1501"  :anon :subid("88_1272455249.42318") :outer("87_1272455249.42318")
+.sub "_block1501"  :anon :subid("88_1272816836.73052") :outer("87_1272816836.73052")
 .annotate "line", 443
     new $P1503, "Undef"
     .lex "$a", $P1503
@@ -11697,7 +11697,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1478"  :anon :subid("86_1272455249.42318") :outer("85_1272455249.42318")
+.sub "_block1478"  :anon :subid("86_1272816836.73052") :outer("85_1272816836.73052")
 .annotate "line", 438
     new $P1480, "Undef"
     .lex "$name", $P1480
@@ -11725,7 +11725,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "mod_internal"  :subid("89_1272455249.42318") :method :outer("11_1272455249.42318")
+.sub "mod_internal"  :subid("89_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1539
 .annotate "line", 472
     new $P1538, 'ExceptionHandler'

Modified: branches/codestring/ext/nqp-rx/src/stage0/Regex-s0.pir
==============================================================================
--- branches/codestring/ext/nqp-rx/src/stage0/Regex-s0.pir	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/ext/nqp-rx/src/stage0/Regex-s0.pir	Mon May  3 14:39:34 2010	(r46235)
@@ -58,6 +58,34 @@
 
 =over 4
 
+=item new_match()
+
+A method that creates an empty Match object, by default of type
+C<Regex::Match>. This method can be overridden for generating HLL-specific
+Match objects.
+
+=cut
+
+.sub 'new_match' :method
+    .local pmc match
+    match = new ['Regex';'Match']
+    .return (match)
+.end
+
+=item new_array()
+
+A method that creates an empty array object, by default of type
+C<ResizablePMCArray>. This method can be overridden for generating HLL-specific
+arrays for usage within Match objects.
+
+=cut
+
+.sub 'new_array' :method
+    .local pmc arr
+    arr = new ['ResizablePMCArray']
+    .return (arr)
+.end
+
 =item MATCH()
 
 Return this cursor's current Match object, generating a new one
@@ -75,7 +103,7 @@
 
     # First, create a Match object and bind it
   match_make:
-    match = new ['Regex';'Match']
+    match = self.'new_match'()
     setattribute self, '$!match', match
     setattribute match, '$!cursor', self
     .local pmc target, from, to
@@ -98,7 +126,7 @@
     .local pmc arr
     .local int keyint
     subname = shift caparray_it
-    arr = new ['ResizablePMCArray']
+    arr = self.'new_array'()
     caphash[subname] = arr
     keyint = is_cclass .CCLASS_NUMERIC, subname, 0
     if keyint goto caparray_int
@@ -1893,7 +1921,7 @@
 # vim: expandtab shiftwidth=4 ft=pir:
 
 ### .include 'src/PAST/Regex.pir'
-# $Id: Regex.pir 41578 2009-09-30 14:45:23Z pmichaud $
+# $Id$
 
 =head1 NAME
 

Modified: branches/codestring/include/parrot/interpreter.h
==============================================================================
--- branches/codestring/include/parrot/interpreter.h	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/include/parrot/interpreter.h	Mon May  3 14:39:34 2010	(r46235)
@@ -26,11 +26,6 @@
     PARROT_THR_COPY_INTERP  = 0x2000, /* thread start copies interp state */
     PARROT_THR_THREAD_POOL  = 0x4000, /* type3 threads */
 
-    PARROT_THR_TYPE_1       = PARROT_IS_THREAD,
-    PARROT_THR_TYPE_2       = PARROT_IS_THREAD | PARROT_THR_COPY_INTERP,
-    PARROT_THR_TYPE_3       = PARROT_IS_THREAD | PARROT_THR_COPY_INTERP |
-                              PARROT_THR_THREAD_POOL
-
 } Parrot_Interp_flag;
 /* &end_gen */
 
@@ -470,7 +465,7 @@
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
 PMC* interpinfo_p(PARROT_INTERP, INTVAL what)
         __attribute__nonnull__(1);
 

Modified: branches/codestring/include/parrot/packfile.h
==============================================================================
--- branches/codestring/include/parrot/packfile.h	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/include/parrot/packfile.h	Mon May  3 14:39:34 2010	(r46235)
@@ -501,9 +501,11 @@
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
 size_t PackFile_Constant_pack_size(PARROT_INTERP,
-    ARGIN(const PackFile_Constant *self))
+    ARGIN(const PackFile_Constant *self),
+    ARGIN(const PackFile_ConstTable *ct))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
@@ -856,7 +858,8 @@
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_PackFile_Constant_pack_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(self))
+    , PARROT_ASSERT_ARG(self) \
+    , PARROT_ASSERT_ARG(ct))
 #define ASSERT_ARGS_PackFile_Constant_unpack __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(constt) \

Modified: branches/codestring/include/parrot/pmc_freeze.h
==============================================================================
--- branches/codestring/include/parrot/pmc_freeze.h	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/include/parrot/pmc_freeze.h	Mon May  3 14:39:34 2010	(r46235)
@@ -13,6 +13,8 @@
 #ifndef PARROT_PMC_FREEZE_H_GUARD
 #define PARROT_PMC_FREEZE_H_GUARD
 
+#include "parrot/packfile.h"
+
 typedef enum {
     VISIT_HOW_PMC_TO_VISITOR     = 0x00, /* push to visitor */
     VISIT_HOW_VISITOR_TO_PMC     = 0x01, /* shift from visitor */
@@ -120,6 +122,24 @@
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
+STRING * Parrot_freeze_pbc(PARROT_INTERP,
+    ARGIN(PMC *pmc),
+    ARGIN(const PackFile_ConstTable *pf))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+UINTVAL Parrot_freeze_pbc_size(PARROT_INTERP,
+    ARGIN(PMC *pmc),
+    ARGIN(const PackFile_ConstTable *pf))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
 UINTVAL Parrot_freeze_size(PARROT_INTERP, ARGIN(PMC *pmc))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
@@ -127,6 +147,12 @@
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
+PMC * Parrot_freeze_strings(PARROT_INTERP, PMC *pmc)
+        __attribute__nonnull__(1);
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
 PMC* Parrot_thaw(PARROT_INTERP, ARGIN(STRING *image))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
@@ -138,6 +164,16 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC* Parrot_thaw_pbc(PARROT_INTERP,
+    ARGIN(STRING *image),
+    ARGIN(PackFile_ConstTable *pf))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
 void Parrot_visit_loop_thawfinish(PARROT_INTERP, ARGIN(PMC *info))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
@@ -152,15 +188,29 @@
 #define ASSERT_ARGS_Parrot_freeze __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(pmc))
+#define ASSERT_ARGS_Parrot_freeze_pbc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(pmc) \
+    , PARROT_ASSERT_ARG(pf))
+#define ASSERT_ARGS_Parrot_freeze_pbc_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(pmc) \
+    , PARROT_ASSERT_ARG(pf))
 #define ASSERT_ARGS_Parrot_freeze_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(pmc))
+#define ASSERT_ARGS_Parrot_freeze_strings __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_thaw __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(image))
 #define ASSERT_ARGS_Parrot_thaw_constants __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(image))
+#define ASSERT_ARGS_Parrot_thaw_pbc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(image) \
+    , PARROT_ASSERT_ARG(pf))
 #define ASSERT_ARGS_Parrot_visit_loop_thawfinish __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(info))

Modified: branches/codestring/include/parrot/thr_windows.h
==============================================================================
--- branches/codestring/include/parrot/thr_windows.h	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/include/parrot/thr_windows.h	Mon May  3 14:39:34 2010	(r46235)
@@ -119,13 +119,13 @@
 
 typedef void (*Cleanup_Handler)(void *);
 
-#ifndef HAVE_STRUCT_TIMESPEC
-#  define HAVE_STRUCT_TIMESPEC
+#ifndef _TIMESPEC_DEFINED
+#  define _TIMESPEC_DEFINED
 struct timespec {
     time_t tv_sec;
     long tv_nsec;
 };
-#endif /* HAVE_STRUCT_TIMESPEC */
+#endif /* _TIMESPEC_DEFINED */
 
 #endif /* PARROT_THR_WINDOWS_H_GUARD */
 

Modified: branches/codestring/include/parrot/thread.h
==============================================================================
--- branches/codestring/include/parrot/thread.h	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/include/parrot/thread.h	Mon May  3 14:39:34 2010	(r46235)
@@ -194,6 +194,17 @@
 void pt_suspend_self_for_gc(PARROT_INTERP)
         __attribute__nonnull__(1);
 
+PMC * pt_thread_create(PARROT_INTERP, INTVAL type, INTVAL clone_flags)
+        __attribute__nonnull__(1);
+
+int pt_thread_create_run(PARROT_INTERP,
+    INTVAL type,
+    INTVAL clone_flags,
+    ARGIN(PMC *sub),
+    ARGIN_NULLOK(PMC *arg))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(4);
+
 void pt_thread_detach(UINTVAL tid);
 PARROT_CAN_RETURN_NULL
 PMC* pt_thread_join(ARGIN(Parrot_Interp parent), UINTVAL tid)
@@ -202,43 +213,11 @@
 void pt_thread_kill(UINTVAL tid);
 void pt_thread_prepare_for_run(Parrot_Interp d, NULLOK(Parrot_Interp s));
 int pt_thread_run(PARROT_INTERP,
-    ARGOUT(PMC *dest_interp),
+    PMC *thread_interp_pmc,
     ARGIN(PMC *sub),
     ARGIN_NULLOK(PMC *arg))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        FUNC_MODIFIES(*dest_interp);
-
-int pt_thread_run_1(PARROT_INTERP,
-    ARGOUT(PMC* dest_interp),
-    ARGIN(PMC* sub),
-    ARGIN(PMC *arg))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        __attribute__nonnull__(4)
-        FUNC_MODIFIES(* dest_interp);
-
-int pt_thread_run_2(PARROT_INTERP,
-    ARGOUT(PMC* dest_interp),
-    ARGIN(PMC* sub),
-    ARGIN(PMC *arg))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        __attribute__nonnull__(4)
-        FUNC_MODIFIES(* dest_interp);
-
-int pt_thread_run_3(PARROT_INTERP,
-    ARGOUT(PMC* dest_interp),
-    ARGIN(PMC* sub),
-    ARGIN(PMC *arg))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        __attribute__nonnull__(4)
-        FUNC_MODIFIES(* dest_interp);
+        __attribute__nonnull__(3);
 
 void pt_thread_wait_with(PARROT_INTERP, ARGMOD(Parrot_mutex *mutex))
         __attribute__nonnull__(1)
@@ -279,6 +258,11 @@
     , PARROT_ASSERT_ARG(pmc))
 #define ASSERT_ARGS_pt_suspend_self_for_gc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_pt_thread_create __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_pt_thread_create_run __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(sub))
 #define ASSERT_ARGS_pt_thread_detach __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_pt_thread_join __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(parent))
@@ -286,23 +270,7 @@
 #define ASSERT_ARGS_pt_thread_prepare_for_run __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_pt_thread_run __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(dest_interp) \
     , PARROT_ASSERT_ARG(sub))
-#define ASSERT_ARGS_pt_thread_run_1 __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(dest_interp) \
-    , PARROT_ASSERT_ARG(sub) \
-    , PARROT_ASSERT_ARG(arg))
-#define ASSERT_ARGS_pt_thread_run_2 __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(dest_interp) \
-    , PARROT_ASSERT_ARG(sub) \
-    , PARROT_ASSERT_ARG(arg))
-#define ASSERT_ARGS_pt_thread_run_3 __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(dest_interp) \
-    , PARROT_ASSERT_ARG(sub) \
-    , PARROT_ASSERT_ARG(arg))
 #define ASSERT_ARGS_pt_thread_wait_with __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(mutex))

Modified: branches/codestring/lib/Parrot/Pmc2c/Attribute.pm
==============================================================================
--- branches/codestring/lib/Parrot/Pmc2c/Attribute.pm	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/lib/Parrot/Pmc2c/Attribute.pm	Mon May  3 14:39:34 2010	(r46235)
@@ -208,8 +208,7 @@
     }
     elsif ($attrtype eq "INTVAL") {
         $decl .= <<"EOA";
-            PMC * const attr_value = Parrot_pmc_new(interp, enum_class_Integer); \\
-            VTABLE_set_integer_native(interp, attr_value, value); \\
+            PMC * const attr_value = Parrot_pmc_new_init_int(interp, enum_class_Integer, value); \\
             VTABLE_set_attr_str(interp, pmc, \\
                               Parrot_str_new_constant(interp, "$attrname"), attr_value); \\
 EOA

Deleted: branches/codestring/runtime/parrot/library/Archive/TAR.pir
==============================================================================
--- branches/codestring/runtime/parrot/library/Archive/TAR.pir	Mon May  3 14:39:34 2010	(r46234)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,427 +0,0 @@
-# Copyright (C) 2010, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-Archive/TAR
-
-=head2 DESCRIPTION
-
-Partial port of Archive::TAR (version 1.60)
-
-See L<http://search.cpan.org/~bingos/Archive-Tar/>
-
-=cut
-
-.include 'stat.pasm'
-
-=head3 Class Archive;TAR;File
-
-=over 4
-
-=cut
-
-.namespace ['Archive';'TAR';'File']
-
-.sub '' :init :load :anon
-    load_bytecode 'osutils.pbc' # basename, dirname
-    $P0 = newclass ['Archive';'TAR';'File']
-    $P0.'add_attribute'('name')
-    $P0.'add_attribute'('mode')
-    $P0.'add_attribute'('uid')
-    $P0.'add_attribute'('gid')
-    $P0.'add_attribute'('size')
-    $P0.'add_attribute'('mtime')
-    $P0.'add_attribute'('type')
-    $P0.'add_attribute'('linkname')
-    $P0.'add_attribute'('magic')
-    $P0.'add_attribute'('version')
-    $P0.'add_attribute'('uname')
-    $P0.'add_attribute'('gname')
-    $P0.'add_attribute'('devmajor')
-    $P0.'add_attribute'('devminor')
-    $P0.'add_attribute'('prefix')
-    $P0.'add_attribute'('data')
-    .globalconst int MODE = 0o666
-    .globalconst string FILE = '0'
-    .globalconst string MAGIC = 'ustar'
-    .globalconst string TAR_VERSION = '00'
-    .globalconst int BLOCK = 512
-.end
-
-=item data
-
-=cut
-
-.sub 'data' :method
-    $P0 = getattribute self, 'data'
-    .return ($P0)
-.end
-
-=item new_from_file
-
-=cut
-
-.sub 'new_from_file'
-    .param string path
-    .local string data
-    $P0 = new 'FileHandle'
-    push_eh _handler
-    .local string data
-    data = $P0.'readall'(path)
-    pop_eh
-    .local int uid, gid, mtime
-    uid = stat path, .STAT_UID
-    gid = stat path, .STAT_GID
-    mtime = stat path, .STAT_MODIFYTIME
-    .tailcall new_from_data(path, data, uid :named('uid'), gid :named('gid'), mtime :named('mtime'))
-  _handler:
-    null $P0
-    .return ($P0)
-.end
-
-=item new_from_data
-
-=cut
-
-.sub 'new_from_data'
-    .param string path
-    .param string data
-    .param int mode             :named('mode') :optional
-    .param int has_mode         :opt_flag
-    .param int uid              :named('uid') :optional
-    .param int has_uid          :opt_flag
-    .param int gid              :named('gid') :optional
-    .param int has_gid          :opt_flag
-    .param int mtime            :named('mtime') :optional
-    .param int has_mtime        :opt_flag
-    .param string type          :named('type') :optional
-    .param int has_type         :opt_flag
-    .param string linkname      :named('linkname') :optional
-    .param int has_linkname     :opt_flag
-    .param string uname         :named('uname') :optional
-    .param int has_uname        :opt_flag
-    .param string gname         :named('gname') :optional
-    .param int has_gname        :opt_flag
-    .param int devmajor         :named('devmajor') :optional
-    .param int has_devmajor     :opt_flag
-    .param int devminor         :named('devminor') :optional
-    .param int has_devminor     :opt_flag
-    $P0 = new ['Archive';'TAR';'File']
-    .local string prefix, name
-    (prefix, name) = _prefix_and_file(path)
-    if has_mode goto L1
-    mode = MODE
-  L1:
-    if has_uid goto L2
-    uid = 0
-  L2:
-    if has_gid goto L3
-    gid = 0
-  L3:
-    if has_mtime goto L4
-    mtime = time
-  L4:
-    if has_type goto L5
-    type = FILE
-  L5:
-    if has_linkname goto L6
-    linkname = ''
-  L6:
-    if has_uname goto L7
-    uname = 'unknown'
-  L7:
-    if has_gname goto L8
-    gname = 'unknown'
-  L8:
-    if has_devmajor goto L9
-    devmajor = 0
-  L9:
-    if has_devminor goto L10
-    devminor = 0
-  L10:
-    $P1 = box data
-    setattribute $P0, 'data', $P1
-    $P1 = box name
-    setattribute $P0, 'name', $P1
-    $P1 = box mode
-    setattribute $P0, 'mode', $P1
-    $P1 = box uid
-    setattribute $P0, 'uid', $P1
-    $P1 = box gid
-    setattribute $P0, 'gid', $P1
-    $I0 = length data
-    $P1 = box $I0
-    setattribute $P0, 'size', $P1
-    $I0 = mtime
-    $P1 = box $I0
-    setattribute $P0, 'mtime', $P1
-    $P1 = box type
-    setattribute $P0, 'type', $P1
-    $P1 = box linkname
-    setattribute $P0, 'linkname', $P1
-    $P1 = box MAGIC
-    setattribute $P0, 'magic', $P1
-    $P1 = box TAR_VERSION
-    setattribute $P0, 'version', $P1
-    $P1 = box uname
-    setattribute $P0, 'uname', $P1
-    $P1 = box gname
-    setattribute $P0, 'gname', $P1
-    $P1 = box devminor
-    setattribute $P0, 'devminor', $P1
-    $P1 = box devmajor
-    setattribute $P0, 'devmajor', $P1
-    $P1 = box prefix
-    setattribute $P0, 'prefix', $P1
-    .return ($P0)
-.end
-
-.sub '_prefix_and_file' :anon
-    .param string path
-    $S0 = dirname(path)
-    unless $S0 == '.' goto L1
-    $S0 = ''
-  L1:
-    $S1 = basename(path)
-    .return ($S0, $S1)
-.end
-
-=item _format_tar_entry
-
-=cut
-
-.sub '_format_tar_entry' :method
-    $P0 = new 'ResizableStringArray'
-    $P1 = new 'FixedPMCArray'
-    set $P1, 1
-    .const string f1 = '%06o'
-    .const string f2 = '%11o'
-    $P2 = getattribute self, 'name'
-    $S0 = pad_string_with_null($P2, 100)
-    push $P0, $S0
-    $P2 = getattribute self, 'mode'
-    $P1[0] = $P2
-    $S0 = sprintf f1, $P1
-    $S0 = pad_string_with_null($S0, 8)
-    push $P0, $S0
-    $P2 = getattribute self, 'uid'
-    $P1[0] = $P2
-    $S0 = sprintf f1, $P1
-    $S0 = pad_string_with_null($S0, 8)
-    push $P0, $S0
-    $P2 = getattribute self, 'gid'
-    $P1[0] = $P2
-    $S0 = sprintf f1, $P1
-    $S0 = pad_string_with_null($S0, 8)
-    push $P0, $S0
-    $P2 = getattribute self, 'size'
-    $P1[0] = $P2
-    $S0 = sprintf f2, $P1
-    $S0 = pad_string_with_null($S0, 12)
-    push $P0, $S0
-    $P2 = getattribute self, 'mtime'
-    $P1[0] = $P2
-    $S0 = sprintf f2, $P1
-    $S0 = pad_string_with_null($S0, 12)
-    push $P0, $S0
-    push $P0, "        " # checksum
-    $P2 = getattribute self, 'type'
-    $S0 = pad_string_with_null($P2, 1)
-    push $P0, $S0
-    $P2 = getattribute self, 'linkname'
-    $S0 = pad_string_with_null($P2, 100)
-    push $P0, $S0
-    $P2 = getattribute self, 'magic'
-    $S0 = pad_string_with_null($P2, 6)
-    push $P0, $S0
-    $P2 = getattribute self, 'version'
-    $S0 = pad_string_with_null($P2, 2)
-    push $P0, $S0
-    $P2 = getattribute self, 'uname'
-    $S0 = pad_string_with_null($P2, 32)
-    push $P0, $S0
-    $P2 = getattribute self, 'gname'
-    $S0 = pad_string_with_null($P2, 32)
-    push $P0, $S0
-    $P2 = getattribute self, 'devmajor'
-    $P1[0] = $P2
-    $S0 = sprintf f1, $P1
-    $S0 = pad_string_with_null($S0, 8)
-    push $P0, $S0
-    $P2 = getattribute self, 'devminor'
-    $P1[0] = $P2
-    $S0 = sprintf f1, $P1
-    $S0 = pad_string_with_null($S0, 8)
-    push $P0, $S0
-    $P2 = getattribute self, 'prefix'
-    $S0 = pad_string_with_null($P2, 155)
-    push $P0, $S0
-    $S0 = join '', $P0
-    $I0 = compute_checksum($S0)
-    $P1[0] = $I0
-    $S1 = sprintf "%6o\0\0", $P1
-    $S0 = replace $S0, 148, 8, $S1
-    $S0 = pad_string_with_null($S0, BLOCK)
-    .return ($S0)
-.end
-
-.sub 'pad_string_with_null' :anon
-    .param string str
-    .param int size
-    $S0 = substr str, 0, size
-    $I0 = length str
-    $I0 = size - $I0
-    unless $I0 > 0 goto L1
-    $S1 = repeat "\0", $I0
-    $S0 .= $S1
-  L1:
-    .return ($S0)
-.end
-
-.sub 'compute_checksum' :anon
-    .param string str
-    .local int chk
-    chk = 0
-    $P0 = split '', str
-  L1:
-    unless $P0 goto L2
-    $S0 = shift $P0
-    $I0 = ord $S0
-    chk += $I0
-    goto L1
-  L2:
-    .return (chk)
-.end
-
-=back
-
-=head3 Class Archive;TAR
-
-=over 4
-
-=cut
-
-.namespace ['Archive';'TAR']
-
-.sub '' :init :load :anon
-    $P0 = newclass ['Archive';'TAR']
-    $P0.'add_attribute'('data')
-.end
-
-.sub 'init' :vtable :method
-    $P0 = new 'ResizablePMCArray'
-    setattribute self, 'data', $P0
-.end
-
-=item add_files
-
-=cut
-
-.sub 'add_files' :method
-    .param pmc filenames :slurpy
-    .local pmc rv
-    rv = new 'ResizablePMCArray'
-    $P0 = iter filenames
-  L1:
-    unless $P0 goto L2
-    .local string filename
-    filename = shift $P0
-    $I0 = stat filename, .STAT_EXISTS
-    if $I0 goto L3
-    self.'_error'("No such file: '", filename, "'")
-    goto L1
-  L3:
-    .local pmc obj
-    $P1 = get_hll_global ['Archive';'TAR';'File'], 'new_from_file'
-    obj = $P1(filename)
-    unless null obj goto L4
-    self.'_error'("Unable to add file: '", filename, "'")
-    goto L1
-  L4:
-    push rv, obj
-    goto L1
-  L2:
-    $P0 = getattribute self, 'data'
-    $P1 = iter rv
-  L5:
-    unless $P1 goto L6
-    $P2 = shift $P1
-    push $P0, $P2
-    goto L5
-  L6:
-    .return (rv)
-.end
-
-=item add_data
-
-=cut
-
-.sub 'add_data' :method
-    .param string filename
-    .param string data
-    .param pmc opt :slurpy :named
-    .local pmc obj
-    $P0 = get_hll_global ['Archive';'TAR';'File'], 'new_from_data'
-    obj = $P0(filename, data, opt :flat :named)
-    $P0 = getattribute self, 'data'
-    push $P0, obj
-    .return (obj)
-.end
-
-=item write
-
-=cut
-
-.sub 'write' :method
-    .param pmc fh
-    $P0 = getattribute self, 'data'
-    $P1 = iter $P0
-  L1:
-    unless $P1 goto L2
-    .local pmc entry
-    entry = shift $P1
-    .local string header
-    header = entry.'_format_tar_entry'()
-    fh.'puts'(header)
-    $S0 = entry.'data'()
-    fh.'puts'($S0)
-    $I0 = length $S0
-    $I0 %= BLOCK
-    unless $I0 goto L1
-    .local string TAR_PAD
-    $I0 = BLOCK - $I0
-    TAR_PAD = repeat "\0", $I0
-    fh.'puts'(TAR_PAD)
-    goto L1
-  L2:
-    .local string TAR_END
-    TAR_END = repeat "\0", BLOCK
-    $S0 = repeat TAR_END, 2
-    fh.'puts'($S0)
-.end
-
-=item _error
-
-=cut
-
-.sub '_error' :method
-    .param pmc args :slurpy
-    $S0 = join '', args
-    printerr $S0
-    printerr "\n"
-.end
-
-=back
-
-=head1 AUTHOR
-
-Francois Perrad
-
-=cut
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:

Copied: branches/codestring/runtime/parrot/library/Archive/Tar.pir (from r46234, trunk/runtime/parrot/library/Archive/Tar.pir)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/codestring/runtime/parrot/library/Archive/Tar.pir	Mon May  3 14:39:34 2010	(r46235, copy of r46234, trunk/runtime/parrot/library/Archive/Tar.pir)
@@ -0,0 +1,455 @@
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+Archive/Tar
+
+=head2 DESCRIPTION
+
+Partial port of Archive::Tar (version 1.60)
+
+See L<http://search.cpan.org/~bingos/Archive-Tar/>
+
+=cut
+
+.include 'stat.pasm'
+
+=head3 Class Archive;Tar;File
+
+=over 4
+
+=cut
+
+.namespace ['Archive';'Tar';'File']
+
+.sub '' :init :load :anon
+    load_bytecode 'osutils.pbc' # splitpath
+    $P0 = newclass ['Archive';'Tar';'File']
+    $P0.'add_attribute'('name')
+    $P0.'add_attribute'('mode')
+    $P0.'add_attribute'('uid')
+    $P0.'add_attribute'('gid')
+    $P0.'add_attribute'('size')
+    $P0.'add_attribute'('mtime')
+    $P0.'add_attribute'('type')
+    $P0.'add_attribute'('linkname')
+    $P0.'add_attribute'('magic')
+    $P0.'add_attribute'('version')
+    $P0.'add_attribute'('uname')
+    $P0.'add_attribute'('gname')
+    $P0.'add_attribute'('devmajor')
+    $P0.'add_attribute'('devminor')
+    $P0.'add_attribute'('prefix')
+    $P0.'add_attribute'('data')
+    .globalconst int MODE = 0o666
+    .globalconst string FILE = '0'
+    .globalconst string MAGIC = 'ustar'
+    .globalconst string TAR_VERSION = '00'
+    .globalconst int BLOCK = 512
+.end
+
+=item data
+
+=cut
+
+.sub 'data' :method
+    $P0 = getattribute self, 'data'
+    .return ($P0)
+.end
+
+=item new_from_file
+
+=cut
+
+.sub 'new_from_file'
+    .param string path
+    .local string data
+    $P0 = new 'FileHandle'
+    push_eh _handler
+    .local string data
+    data = $P0.'readall'(path)
+    pop_eh
+    .local int uid, gid, mtime
+    uid = stat path, .STAT_UID
+    gid = stat path, .STAT_GID
+    mtime = stat path, .STAT_MODIFYTIME
+    .tailcall new_from_data(path, data, uid :named('uid'), gid :named('gid'), mtime :named('mtime'))
+  _handler:
+    null $P0
+    .return ($P0)
+.end
+
+=item new_from_data
+
+=cut
+
+.sub 'new_from_data'
+    .param string path
+    .param string data
+    .param int mode             :named('mode') :optional
+    .param int has_mode         :opt_flag
+    .param int uid              :named('uid') :optional
+    .param int has_uid          :opt_flag
+    .param int gid              :named('gid') :optional
+    .param int has_gid          :opt_flag
+    .param int mtime            :named('mtime') :optional
+    .param int has_mtime        :opt_flag
+    .param string type          :named('type') :optional
+    .param int has_type         :opt_flag
+    .param string linkname      :named('linkname') :optional
+    .param int has_linkname     :opt_flag
+    .param string uname         :named('uname') :optional
+    .param int has_uname        :opt_flag
+    .param string gname         :named('gname') :optional
+    .param int has_gname        :opt_flag
+    .param int devmajor         :named('devmajor') :optional
+    .param int has_devmajor     :opt_flag
+    .param int devminor         :named('devminor') :optional
+    .param int has_devminor     :opt_flag
+    $P0 = new ['Archive';'Tar';'File']
+    .local string prefix, name
+    (prefix, name) = _prefix_and_file(path)
+    if has_mode goto L1
+    mode = MODE
+  L1:
+    if has_uid goto L2
+    uid = 0
+  L2:
+    if has_gid goto L3
+    gid = 0
+  L3:
+    if has_mtime goto L4
+    mtime = time
+  L4:
+    if has_type goto L5
+    type = FILE
+  L5:
+    if has_linkname goto L6
+    linkname = ''
+  L6:
+    if has_uname goto L7
+    uname = 'unknown'
+  L7:
+    if has_gname goto L8
+    gname = 'unknown'
+  L8:
+    if has_devmajor goto L9
+    devmajor = 0
+  L9:
+    if has_devminor goto L10
+    devminor = 0
+  L10:
+    $P1 = box data
+    setattribute $P0, 'data', $P1
+    $P1 = box name
+    setattribute $P0, 'name', $P1
+    $P1 = box mode
+    setattribute $P0, 'mode', $P1
+    $P1 = box uid
+    setattribute $P0, 'uid', $P1
+    $P1 = box gid
+    setattribute $P0, 'gid', $P1
+    $I0 = length data
+    $P1 = box $I0
+    setattribute $P0, 'size', $P1
+    $I0 = mtime
+    $P1 = box $I0
+    setattribute $P0, 'mtime', $P1
+    $P1 = box type
+    setattribute $P0, 'type', $P1
+    $P1 = box linkname
+    setattribute $P0, 'linkname', $P1
+    $P1 = box MAGIC
+    setattribute $P0, 'magic', $P1
+    $P1 = box TAR_VERSION
+    setattribute $P0, 'version', $P1
+    $P1 = box uname
+    setattribute $P0, 'uname', $P1
+    $P1 = box gname
+    setattribute $P0, 'gname', $P1
+    $P1 = box devminor
+    setattribute $P0, 'devminor', $P1
+    $P1 = box devmajor
+    setattribute $P0, 'devmajor', $P1
+    $P1 = box prefix
+    setattribute $P0, 'prefix', $P1
+    .return ($P0)
+.end
+
+.sub '_prefix_and_file' :anon
+    .param string path
+    .local string volume, directories, file
+    (volume, directories, file) = splitpath(path)
+    .return (directories, file)
+.end
+
+=item full_path
+
+=cut
+
+.sub 'full_path' :method
+    .local string prefix, name
+    $P0 = getattribute self, 'name'
+    name = $P0
+    $P0 = getattribute self, 'prefix'
+    prefix = $P0
+    unless prefix == '' goto L1
+    .return (name)
+  L1:
+    $S0 = catfile(prefix, name)
+    .return ($S0)
+.end
+
+=item rename
+
+=cut
+
+.sub 'rename' :method
+    .param string path
+    .local string prefix, name
+    (prefix, name) = _prefix_and_file(path)
+    $P0 = box name
+    setattribute self, 'name', $P0
+    $P0 = box prefix
+    setattribute self, 'prefix', $P0
+.end
+
+=item _format_tar_entry
+
+=cut
+
+.sub '_format_tar_entry' :method
+    $P0 = new 'ResizableStringArray'
+    $P1 = new 'FixedPMCArray'
+    set $P1, 1
+    .const string f1 = '%06o'
+    .const string f2 = '%11o'
+    $P2 = getattribute self, 'name'
+    $S0 = pad_string_with_null($P2, 100)
+    push $P0, $S0
+    $P2 = getattribute self, 'mode'
+    $P1[0] = $P2
+    $S0 = sprintf f1, $P1
+    $S0 = pad_string_with_null($S0, 8)
+    push $P0, $S0
+    $P2 = getattribute self, 'uid'
+    $P1[0] = $P2
+    $S0 = sprintf f1, $P1
+    $S0 = pad_string_with_null($S0, 8)
+    push $P0, $S0
+    $P2 = getattribute self, 'gid'
+    $P1[0] = $P2
+    $S0 = sprintf f1, $P1
+    $S0 = pad_string_with_null($S0, 8)
+    push $P0, $S0
+    $P2 = getattribute self, 'size'
+    $P1[0] = $P2
+    $S0 = sprintf f2, $P1
+    $S0 = pad_string_with_null($S0, 12)
+    push $P0, $S0
+    $P2 = getattribute self, 'mtime'
+    $P1[0] = $P2
+    $S0 = sprintf f2, $P1
+    $S0 = pad_string_with_null($S0, 12)
+    push $P0, $S0
+    push $P0, "        " # checksum
+    $P2 = getattribute self, 'type'
+    $S0 = pad_string_with_null($P2, 1)
+    push $P0, $S0
+    $P2 = getattribute self, 'linkname'
+    $S0 = pad_string_with_null($P2, 100)
+    push $P0, $S0
+    $P2 = getattribute self, 'magic'
+    $S0 = pad_string_with_null($P2, 6)
+    push $P0, $S0
+    $P2 = getattribute self, 'version'
+    $S0 = pad_string_with_null($P2, 2)
+    push $P0, $S0
+    $P2 = getattribute self, 'uname'
+    $S0 = pad_string_with_null($P2, 32)
+    push $P0, $S0
+    $P2 = getattribute self, 'gname'
+    $S0 = pad_string_with_null($P2, 32)
+    push $P0, $S0
+    $P2 = getattribute self, 'devmajor'
+    $P1[0] = $P2
+    $S0 = sprintf f1, $P1
+    $S0 = pad_string_with_null($S0, 8)
+    push $P0, $S0
+    $P2 = getattribute self, 'devminor'
+    $P1[0] = $P2
+    $S0 = sprintf f1, $P1
+    $S0 = pad_string_with_null($S0, 8)
+    push $P0, $S0
+    $P2 = getattribute self, 'prefix'
+    $S0 = pad_string_with_null($P2, 155)
+    push $P0, $S0
+    $S0 = join '', $P0
+    $I0 = compute_checksum($S0)
+    $P1[0] = $I0
+    $S1 = sprintf "%6o\0\0", $P1
+    $S0 = replace $S0, 148, 8, $S1
+    $S0 = pad_string_with_null($S0, BLOCK)
+    .return ($S0)
+.end
+
+.sub 'pad_string_with_null' :anon
+    .param string str
+    .param int size
+    $S0 = substr str, 0, size
+    $I0 = length str
+    $I0 = size - $I0
+    unless $I0 > 0 goto L1
+    $S1 = repeat "\0", $I0
+    $S0 .= $S1
+  L1:
+    .return ($S0)
+.end
+
+.sub 'compute_checksum' :anon
+    .param string str
+    .local int chk
+    chk = 0
+    $P0 = split '', str
+  L1:
+    unless $P0 goto L2
+    $S0 = shift $P0
+    $I0 = ord $S0
+    chk += $I0
+    goto L1
+  L2:
+    .return (chk)
+.end
+
+=back
+
+=head3 Class Archive;Tar
+
+=over 4
+
+=cut
+
+.namespace ['Archive';'Tar']
+
+.sub '' :init :load :anon
+    $P0 = newclass ['Archive';'Tar']
+    $P0.'add_attribute'('data')
+.end
+
+.sub 'init' :vtable :method
+    $P0 = new 'ResizablePMCArray'
+    setattribute self, 'data', $P0
+.end
+
+=item add_files
+
+=cut
+
+.sub 'add_files' :method
+    .param pmc filenames :slurpy
+    .local pmc rv
+    rv = new 'ResizablePMCArray'
+    $P0 = iter filenames
+  L1:
+    unless $P0 goto L2
+    .local string filename
+    filename = shift $P0
+    $I0 = stat filename, .STAT_EXISTS
+    if $I0 goto L3
+    self.'_error'("No such file: '", filename, "'")
+    goto L1
+  L3:
+    .local pmc obj
+    $P1 = get_hll_global ['Archive';'Tar';'File'], 'new_from_file'
+    obj = $P1(filename)
+    unless null obj goto L4
+    self.'_error'("Unable to add file: '", filename, "'")
+    goto L1
+  L4:
+    push rv, obj
+    goto L1
+  L2:
+    $P0 = getattribute self, 'data'
+    $P1 = iter rv
+  L5:
+    unless $P1 goto L6
+    $P2 = shift $P1
+    push $P0, $P2
+    goto L5
+  L6:
+    .return (rv)
+.end
+
+=item add_data
+
+=cut
+
+.sub 'add_data' :method
+    .param string filename
+    .param string data
+    .param pmc opt :slurpy :named
+    .local pmc obj
+    $P0 = get_hll_global ['Archive';'Tar';'File'], 'new_from_data'
+    obj = $P0(filename, data, opt :flat :named)
+    $P0 = getattribute self, 'data'
+    push $P0, obj
+    .return (obj)
+.end
+
+=item write
+
+=cut
+
+.sub 'write' :method
+    .param pmc fh
+    $P0 = getattribute self, 'data'
+    $P1 = iter $P0
+  L1:
+    unless $P1 goto L2
+    .local pmc entry
+    entry = shift $P1
+    .local string header
+    header = entry.'_format_tar_entry'()
+    fh.'puts'(header)
+    $S0 = entry.'data'()
+    fh.'puts'($S0)
+    $I0 = length $S0
+    $I0 %= BLOCK
+    unless $I0 goto L1
+    .local string TAR_PAD
+    $I0 = BLOCK - $I0
+    TAR_PAD = repeat "\0", $I0
+    fh.'puts'(TAR_PAD)
+    goto L1
+  L2:
+    .local string TAR_END
+    TAR_END = repeat "\0", BLOCK
+    $S0 = repeat TAR_END, 2
+    fh.'puts'($S0)
+.end
+
+=item _error
+
+=cut
+
+.sub '_error' :method
+    .param pmc args :slurpy
+    $S0 = join '', args
+    printerr $S0
+    printerr "\n"
+.end
+
+=back
+
+=head1 AUTHOR
+
+Francois Perrad
+
+=cut
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/codestring/runtime/parrot/library/TAP/Harness.pir
==============================================================================
--- branches/codestring/runtime/parrot/library/TAP/Harness.pir	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/runtime/parrot/library/TAP/Harness.pir	Mon May  3 14:39:34 2010	(r46235)
@@ -212,9 +212,8 @@
     $I0 = exists $P0['PARROT_TEST_HARNESS_DUMP_TAP']
     unless $I0 goto L1
     .local string spool
-    spool = $P0['PARROT_TEST_HARNESS_DUMP_TAP']
-    spool .= '/'
-    spool .= test
+    $S0 = $P0['PARROT_TEST_HARNESS_DUMP_TAP']
+    spool = catfile($S0, test)
     $S0 = dirname(spool)
     mkpath($S0)
     $P0 = new 'FileHandle'
@@ -295,7 +294,7 @@
 
 .sub 'runtests' :method
     .param pmc files
-    load_bytecode 'Archive/TAR.pbc'
+    load_bytecode 'Archive/Tar.pbc'
     $P0 = getattribute self, 'archive_file'
     unless null $P0 goto L1
     die "You must provide the name of the archive to create!"
@@ -313,7 +312,7 @@
     current_dir = cwd()
     chdir(dir)
     .local pmc archive
-    archive = new ['Archive';'TAR']
+    archive = new ['Archive';'Tar']
     archive.'add_files'(files :flat)
     chdir(current_dir)
     rmtree(dir)

Modified: branches/codestring/runtime/parrot/library/distutils.pir
==============================================================================
--- branches/codestring/runtime/parrot/library/distutils.pir	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/runtime/parrot/library/distutils.pir	Mon May  3 14:39:34 2010	(r46235)
@@ -3022,7 +3022,7 @@
     .param pmc kv :slurpy :named
     run_step('manifest', kv :flat :named)
 
-    load_bytecode 'Archive/TAR.pbc'
+    load_bytecode 'Archive/Tar.pbc'
     $S0 = slurp('MANIFEST')
     $P0 = split "\n", $S0
     $S0 = pop $P0
@@ -3030,18 +3030,18 @@
     archive_file = get_tarname('.tar.gz', kv :flat :named)
     $I0 = newer(archive_file, $P0)
     if $I0 goto L1
-    .local string prefix
-    prefix = get_tarname('', kv :flat :named)
-    copy_sdist(prefix, $P0)
     .local pmc archive
-    archive = new ['Archive';'TAR']
-    $P1 = iter $P0
+    archive = new ['Archive';'Tar']
+    $P1 = archive.'add_files'($P0 :flat)
+    .local string dir
+    dir = get_tarname('', kv :flat :named)
   L2:
     unless $P1 goto L3
-    $S1 = shift $P1
-    $S0 = prefix . '/'
-    $S0 .= $S1
-    archive.'add_files'($S0)
+    $P2 = shift $P1
+    $S0 = $P2.'full_path'()
+    $S0 = '/' . $S0
+    $S0 = dir . $S0
+    $P2.'rename'($S0)
     goto L2
   L3:
     $P0 = loadlib 'gziphandle'
@@ -3049,7 +3049,6 @@
     $P0.'open'(archive_file, 'wb')
     archive.'write'($P0)
     $P0.'close'()
-    rmtree(prefix)
   L1:
 .end
 
@@ -3061,21 +3060,6 @@
     unlink('MANIFEST', 1 :named('verbose'))
 .end
 
-.sub 'copy_sdist' :anon
-    .param string dirname
-    .param pmc files
-    mkdir(dirname)
-    $S1 = dirname . "/"
-    $P0 = iter files
-  L1:
-    unless $P0 goto L2
-    $S0 = shift $P0
-    $S2 = $S1 . $S0
-    install($S0, $S2)
-    goto L1
-  L2:
-.end
-
 .sub 'get_tarname' :anon
     .param string ext
     .param pmc kv :slurpy :named
@@ -3126,6 +3110,21 @@
     unlink('MANIFEST', 1 :named('verbose'))
 .end
 
+.sub 'copy_sdist' :anon
+    .param string dirname
+    .param pmc files
+    mkdir(dirname)
+    $S1 = dirname . "/"
+    $P0 = iter files
+  L1:
+    unless $P0 goto L2
+    $S0 = shift $P0
+    $S2 = $S1 . $S0
+    install($S0, $S2)
+    goto L1
+  L2:
+.end
+
 =head3 Step sdist_rpm
 
 =cut

Modified: branches/codestring/runtime/parrot/library/osutils.pir
==============================================================================
--- branches/codestring/runtime/parrot/library/osutils.pir	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/runtime/parrot/library/osutils.pir	Mon May  3 14:39:34 2010	(r46235)
@@ -795,6 +795,55 @@
     rethrow e
 .end
 
+=item catfile
+
+=cut
+
+.sub 'catfile'
+    .param pmc args             :slurpy
+    .param int native           :named('native') :optional
+    .param int has_native       :opt_flag
+    .local string slash
+    slash = '/'
+    unless has_native goto L1
+    unless native goto L1
+    $P0 = getinterp
+    $P0 = $P0[.IGLOBALS_CONFIG_HASH]
+    slash = $P0['slash']
+  L1:
+    $S0 = join slash, args
+    .return ($S0)
+.end
+
+=item splitpath
+
+=cut
+
+.sub 'splitpath'
+    .param string path
+    .local string volume, directories, file
+    volume = ''
+    $I0 = index path, ':'
+    unless $I0 == 1 goto L1
+    volume = substr path, 0, 2
+    path = substr path, 2
+  L1:
+    $I0 = 0
+  L2:
+    $I1 = index path, '/', $I0
+    if $I1 < 0 goto L3
+    $I0 = $I1 + 1
+    goto L2
+  L3:
+    file = substr path, $I0
+    directories = ''
+    dec $I0
+    unless $I0 > 0 goto L4
+    directories = substr path, 0, $I0
+  L4:
+    .return (volume, directories, file)
+.end
+
 =back
 
 =head1 AUTHOR

Modified: branches/codestring/src/call/args.c
==============================================================================
--- branches/codestring/src/call/args.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/call/args.c	Mon May  3 14:39:34 2010	(r46235)
@@ -337,7 +337,7 @@
     GETATTR_FixedIntegerArray_size(interp, raw_sig, arg_count);
     GETATTR_FixedIntegerArray_int_array(interp, raw_sig, int_array);
 
-    for (; arg_index < arg_count; arg_index++) {
+    for (; arg_index < arg_count; ++arg_index) {
         const INTVAL arg_flags = int_array[arg_index];
         const INTVAL constant  = PARROT_ARG_CONSTANT_ISSET(arg_flags);
         const INTVAL raw_index = raw_args[arg_index + 2];
@@ -369,7 +369,7 @@
                     string_value = CTX_REG_STR(ctx, raw_index);
 
                 if (arg_flags & PARROT_ARG_NAME) {
-                    arg_index++;
+                    ++arg_index;
                     if (!PMC_IS_NULL(call_object)
                          && VTABLE_exists_keyed_str(interp, call_object, string_value)) {
                         Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
@@ -494,7 +494,7 @@
     if (VTABLE_does(interp, aggregate, CONST_STRING(interp, "array"))) {
         const INTVAL elements = VTABLE_elements(interp, aggregate);
         INTVAL index;
-        for (index = 0; index < elements; index++) {
+        for (index = 0; index < elements; ++index) {
             VTABLE_push_pmc(interp, call_object,
                     VTABLE_get_pmc_keyed_int(interp, aggregate, index));
         }
@@ -507,7 +507,7 @@
         SETATTR_Key_next_key(interp, key, (PMC *)INITBucketIndex);
 
         /* Low-level hash iteration. */
-        for (index = 0; index < elements; index++) {
+        for (index = 0; index < elements; ++index) {
             if (!PMC_IS_NULL(key)) {
                 STRING * const name = (STRING *)parrot_hash_get_idx(interp,
                                 (Hash *)VTABLE_get_pointer(interp, aggregate), key);
@@ -610,7 +610,7 @@
                 PMC * const pmc_arg = va_arg(*args, PMC *);
                 if (type_lookahead == 'f') {
                     dissect_aggregate_arg(interp, call_object, pmc_arg);
-                    i++; /* skip 'f' */
+                    ++i; /* skip 'f' */
                 }
                 else if (type_lookahead == 'i') {
                     if (i)
@@ -619,7 +619,7 @@
                             "Dispatch: only the first argument can be an invocant");
                     else {
                         VTABLE_push_pmc(interp, call_object, pmc_arg);
-                        i++; /* skip 'i' */
+                        ++i; /* skip 'i' */
                         Parrot_pcc_set_object(interp, call_object, pmc_arg);
                     }
                 }
@@ -701,7 +701,7 @@
                 PMC * const pmc_arg = va_arg(args, PMC *);
                 if (type_lookahead == 'f') {
                      dissect_aggregate_arg(interp, call_object, pmc_arg);
-                    i++; /* skip 'f' */
+                     ++i; /* skip 'f' */
                 }
                 else {
                     VTABLE_push_pmc(interp, call_object, PMC_IS_NULL(pmc_arg)
@@ -713,7 +713,7 @@
                                 EXCEPTION_INVALID_OPERATION,
                                 "Dispatch: only the first argument "
                                 "can be an invocant");
-                        i++;           /* skip 'i' */
+                        ++i;           /* skip 'i' */
                         append_pi = 0; /* Don't prepend Pi to signature */
                     }
                 }
@@ -848,13 +848,13 @@
             collect_positional = Parrot_pmc_new(interp,
                 Parrot_get_ctx_HLL_type(interp, enum_class_ResizablePMCArray));
 
-            for (; arg_index < positional_args; arg_index++) {
+            for (; arg_index < positional_args; ++arg_index) {
                 VTABLE_push_pmc(interp, collect_positional,
                     VTABLE_get_pmc_keyed_int(interp, call_object, arg_index));
             }
 
             *accessor->pmc(interp, arg_info, param_index) = collect_positional;
-            param_index++;
+            ++param_index;
             break; /* Terminate the positional arg loop. */
         }
 
@@ -872,8 +872,8 @@
                    ?  accessor->string_constant(interp, arg_info, param_index)
                    : *accessor->string(interp, arg_info, param_index);
 
-                named_count++;
-                param_index++;
+                ++named_count;
+                ++param_index;
                 if (param_index >= param_count)
                     continue;
 
@@ -922,7 +922,7 @@
                     const int next_param_flags = raw_params[param_index + 1];
 
                     if (next_param_flags & PARROT_ARG_OPT_FLAG) {
-                        param_index++;
+                        ++param_index;
                         *accessor->intval(interp, arg_info, param_index) = 1;
                     }
                 }
@@ -945,7 +945,7 @@
                 const INTVAL next_param_flags = raw_params[param_index + 1];
 
                 if (next_param_flags & PARROT_ARG_OPT_FLAG) {
-                    param_index++;
+                    ++param_index;
                     *accessor->intval(interp, arg_info, param_index) = 0;
                 }
             }
@@ -966,8 +966,8 @@
         }
 
         /* Go on to next argument and parameter. */
-        arg_index++;
-        param_index++;
+        ++arg_index;
+        ++param_index;
     }
 
     /* Now iterate over the named arguments and parameters. */
@@ -1017,7 +1017,7 @@
                 INTVAL named_arg_index;
 
                 /* Named argument iteration. */
-                for (named_arg_index = 0; named_arg_index < named_arg_count; named_arg_index++) {
+                for (named_arg_index = 0; named_arg_index < named_arg_count; ++named_arg_index) {
                     STRING * const name = VTABLE_get_string_keyed_int(interp,
                             named_arg_list, named_arg_index);
 
@@ -1030,7 +1030,7 @@
                         if (PMC_IS_NULL(named_used_list))
                             named_used_list = Parrot_pmc_new(interp, enum_class_Hash);
                         VTABLE_set_integer_keyed_str(interp, named_used_list, name, 1);
-                        named_count++;
+                        ++named_count;
                     }
                 }
             }
@@ -1051,8 +1051,7 @@
 
         if (!STRING_IS_NULL(param_name)) {
             /* The next parameter is the actual value. */
-            param_index++;
-            if (param_index >= param_count)
+            if (++param_index >= param_count)
                 continue;
 
             param_flags = raw_params[param_index];
@@ -1064,7 +1063,7 @@
                 if (PMC_IS_NULL(named_used_list))
                     named_used_list = Parrot_pmc_new(interp, enum_class_Hash);
                 VTABLE_set_integer_keyed_str(interp, named_used_list, param_name, 1);
-                named_count++;
+                ++named_count;
 
                 /* Fill the named parameter. */
                 switch (PARROT_ARG_TYPE_MASK_MASK(param_flags)) {
@@ -1096,7 +1095,7 @@
                         const INTVAL next_param_flags = raw_params[param_index + 1];
 
                         if (next_param_flags & PARROT_ARG_OPT_FLAG) {
-                            param_index++;
+                            ++param_index;
                             *accessor->intval(interp, arg_info, param_index) = 1;
                         }
                     }
@@ -1112,7 +1111,7 @@
                     const INTVAL next_param_flags = raw_params[param_index + 1];
 
                     if (next_param_flags & PARROT_ARG_OPT_FLAG) {
-                        param_index++;
+                        ++param_index;
                         *accessor->intval(interp, arg_info, param_index) = 0;
                     }
                 }
@@ -1129,7 +1128,7 @@
             }
         }
 
-        param_index++;
+        ++param_index;
     }
 
     /* Double check that all named arguments were assigned to parameters. */
@@ -1166,8 +1165,8 @@
                 INTVAL named_arg_index;
 
                 /* Named argument iteration. */
-                for (named_arg_index = 0; named_arg_index < named_arg_count; named_arg_index++) {
-                    STRING *name = VTABLE_get_string_keyed_int(interp,
+                for (named_arg_index = 0; named_arg_index < named_arg_count; ++named_arg_index) {
+                    STRING * const name = VTABLE_get_string_keyed_int(interp,
                             named_arg_list, named_arg_index);
 
                     if (!VTABLE_exists_keyed_str(interp, named_used_list, name)) {
@@ -1360,7 +1359,7 @@
     const char *cur;
     *arg_sig = signature;
 
-    for (cur = signature; *cur != '\0'; cur++) {
+    for (cur = signature; *cur != '\0'; ++cur) {
         if (*cur == '-') {
             *return_sig = cur + 2;
             return;
@@ -1397,7 +1396,7 @@
         *arg_flags = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
     current_array = *arg_flags;
 
-    for (x = signature; *x != '\0'; x++) {
+    for (x = signature; *x != '\0'; ++x) {
 
         /* detect -> separator */
         if (*x == '-')
@@ -1413,10 +1412,10 @@
             }
 
             switch (*x) {
-                case 'I': flags = PARROT_ARG_INTVAL;   set++; break;
-                case 'N': flags = PARROT_ARG_FLOATVAL; set++; break;
-                case 'S': flags = PARROT_ARG_STRING;   set++; break;
-                case 'P': flags = PARROT_ARG_PMC;      set++; break;
+                case 'I': flags = PARROT_ARG_INTVAL;   ++set; break;
+                case 'N': flags = PARROT_ARG_FLOATVAL; ++set; break;
+                case 'S': flags = PARROT_ARG_STRING;   ++set; break;
+                case 'P': flags = PARROT_ARG_PMC;      ++set; break;
                 default:
                     Parrot_ex_throw_from_c_args(interp, NULL,
                         EXCEPTION_INVALID_OPERATION,

Modified: branches/codestring/src/call/context.c
==============================================================================
--- branches/codestring/src/call/context.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/call/context.c	Mon May  3 14:39:34 2010	(r46235)
@@ -263,21 +263,21 @@
      * if the architecture has 0x := NULL and 0.0 we could memset too
      */
 
-    for (i = 0; i < ctx->n_regs_used[REGNO_PMC]; i++) {
+    for (i = 0; i < ctx->n_regs_used[REGNO_PMC]; ++i) {
         ctx->bp_ps.regs_p[-1L - i] = PMCNULL;
     }
 
-    for (i = 0; i < ctx->n_regs_used[REGNO_STR]; i++) {
+    for (i = 0; i < ctx->n_regs_used[REGNO_STR]; ++i) {
         ctx->bp_ps.regs_s[i] = STRINGNULL;
     }
 
     if (Interp_debug_TEST(interp, PARROT_REG_DEBUG_FLAG)) {
         /* depending on -D40, set int and num to identifiable garbage values */
-        for (i = 0; i < ctx->n_regs_used[REGNO_INT]; i++) {
+        for (i = 0; i < ctx->n_regs_used[REGNO_INT]; ++i) {
             ctx->bp.regs_i[i] = -999;
         }
 
-        for (i = 0; i < ctx->n_regs_used[REGNO_NUM]; i++) {
+        for (i = 0; i < ctx->n_regs_used[REGNO_NUM]; ++i) {
             ctx->bp.regs_n[-1L - i] = -99.9;
         }
     }

Modified: branches/codestring/src/datatypes.c
==============================================================================
--- branches/codestring/src/datatypes.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/datatypes.c	Mon May  3 14:39:34 2010	(r46235)
@@ -44,7 +44,7 @@
     char * const type = Parrot_str_to_cstring(interp, type_name);
     int i;
 
-    for (i = enum_first_type; i < enum_last_type; i++) {
+    for (i = enum_first_type; i < enum_last_type; ++i) {
         if (STREQ(data_types[i - enum_first_type].name, type)) {
             Parrot_str_free_cstring(type);
             return i;

Modified: branches/codestring/src/debug.c
==============================================================================
--- branches/codestring/src/debug.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/debug.c	Mon May  3 14:39:34 2010	(r46235)
@@ -1161,7 +1161,7 @@
     #if 0
 
     /* Execute */
-    for (; n && pdb->cur_opcode; n--)
+    for (; n && pdb->cur_opcode; --n)
         DO_OP(pdb->cur_opcode, pdb->debugee);
 
     /* Set the stopped flag */
@@ -1366,7 +1366,7 @@
     if (*(command + 1) == '=')
         command += 2;
     else
-        command++;
+        ++command;
 
     command = skip_whitespace(command);
 
@@ -1425,7 +1425,7 @@
             condition->type               |= PDB_cond_const;
         }
         else if (condition->type & PDB_cond_str) {
-            for (i = 1; ((command[i] != '"') && (i < DEBUG_CMD_BUFFER_LENGTH)); i++)
+            for (i = 1; ((command[i] != '"') && (i < DEBUG_CMD_BUFFER_LENGTH)); ++i)
                 str[i - 1] = command[i];
             str[i - 1] = '\0';
 #if TRACE_DEBUGGER
@@ -1513,7 +1513,7 @@
             /* Move to the line where we will set the break point */
             line = pdb->file->line;
 
-            for (i = 1; ((i < ln) && (line->next)); i++)
+            for (i = 1; ((i < ln) && (line->next)); ++i)
                 line = line->next;
 
             /* Abort if the line number provided doesn't exist */
@@ -2115,7 +2115,7 @@
         /* If we have to skip breakpoints, do so. */
         if (pdb->breakpoint_skip) {
             TRACEDEB_MSG("PDB_break skipping");
-            pdb->breakpoint_skip--;
+            --pdb->breakpoint_skip;
             return 0;
         }
 
@@ -2168,7 +2168,7 @@
 
     fill = _new = mem_gc_allocate_n_typed(interp, length * 2 + 1, char);
 
-    for (; string < end; string++) {
+    for (; string < end; ++string) {
         switch (*string) {
           case '\0':
             *(fill++) = '\\';
@@ -2232,8 +2232,8 @@
     ASSERT_ARGS(PDB_unescape)
     int l = 0;
 
-    for (; *string; string++) {
-        l++;
+    for (; *string; ++string) {
+        ++l;
 
         if (*string == '\\') {
             char *fill;
@@ -2261,7 +2261,7 @@
 
             fill = string;
 
-            for (i = 1; fill[i + 1]; i++)
+            for (i = 1; fill[i + 1]; ++i)
                 fill[i] = fill[i + 1];
 
             fill[i] = '\0';
@@ -2307,7 +2307,7 @@
     dest[size++] = ' ';
 
     /* Concat the arguments */
-    for (j = 1; j < info->op_count; j++) {
+    for (j = 1; j < info->op_count; ++j) {
         char      buf[256];
         INTVAL    i = 0;
 
@@ -2526,7 +2526,7 @@
         /* Register decoding.  It would be good to abstract this, too. */
         PARROT_OBSERVER static const char regs[] = "ISPN";
 
-        for (j = 0; j < n_values; j++) {
+        for (j = 0; j < n_values; ++j) {
             size_t idx = 0;
             const int sig_value = VTABLE_get_integer_keyed_int(interp, sig, j);
 
@@ -2812,7 +2812,7 @@
     /* Get the name of the file */
     for (j = 0; command[j] == ' '; ++j)
         continue;
-    for (i = 0; command[j]; i++, j++)
+    for (i = 0; command[j]; ++i, ++j)
         f[i] = command[j];
 
     f[i] = '\0';
@@ -2845,7 +2845,7 @@
         }
         pfile->source[pfile->size] = (char)c;
 
-        pfile->size++;
+        ++pfile->size;
 
         if (c == '\n') {
             /* If the line has an opcode move to the next one,
@@ -2910,7 +2910,7 @@
             h = 0;
         }
 
-        c++;
+        ++c;
     }
 
     return h;
@@ -2963,7 +2963,7 @@
         return;
     }
     reg_type_id = (unsigned char) toupper((unsigned char) command[0]);
-    command++;
+    ++command;
     register_num = get_ulong(&command, 0);
 
     switch (reg_type_id) {
@@ -3046,7 +3046,7 @@
 
     line = pdb->file->line;
 
-    for (i = 0; i < pdb->file->list_line && line->next; i++)
+    for (i = 0; i < pdb->file->list_line && line->next; ++i)
         line = line->next;
 
     i = 1;
@@ -3417,7 +3417,7 @@
     TRACEDEB_MSG("GDB_P");
     /* Skip leading whitespace. */
     while (isspace((unsigned char)*s))
-        s++;
+        ++s;
 
     reg_type = (unsigned char) toupper((unsigned char)*s);
 
@@ -3433,7 +3433,7 @@
         const int max_reg = Parrot_pcc_get_regs_used(interp, CURRENT_CONTEXT(interp), t);
         int n;
 
-        for (n = 0; n < max_reg; n++) {
+        for (n = 0; n < max_reg; ++n) {
             /* this must be done in two chunks because PMC's print directly. */
             Parrot_io_eprintf(interp, "\n  %c%d = ", reg_type, n);
             Parrot_io_eprintf(interp, "%Ss", GDB_print_reg(interp, t, n));

Modified: branches/codestring/src/dynpmc/Rules.in
==============================================================================
--- branches/codestring/src/dynpmc/Rules.in	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/dynpmc/Rules.in	Mon May  3 14:39:34 2010	(r46235)
@@ -24,6 +24,7 @@
 src/dynpmc/foo_group.c: $(DYNPMC_FOO_OBJS)
 	$(PMC2C) --library foo_group --c $(DYNPMC_FOO)
 	$(MV) foo_group.c src/dynpmc/foo_group.c
+	$(MV) foo_group.h src/dynpmc/foo_group.h
 
 src/dynpmc/foo$(O): src/dynpmc/foo.c $(DYNPMC_H_FILES)
 

Modified: branches/codestring/src/dynpmc/gziphandle.pmc
==============================================================================
--- branches/codestring/src/dynpmc/gziphandle.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/dynpmc/gziphandle.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -76,20 +76,23 @@
 */
     METHOD open(STRING *filename, STRING *mode :optional,
                                INTVAL has_mode :opt_flag) {
+        char *path  = Parrot_str_to_cstring(INTERP, filename);
         gzFile file;
-        char *path;
-        char *mod = (char *)"rb";
-        path = Parrot_str_to_cstring(INTERP, filename);
-        if (has_mode)
-            mod = Parrot_str_to_cstring(INTERP, mode);
-        file = gzopen(path, mod);
-        Parrot_str_free_cstring(path);
-        if (has_mode)
+
+        if (has_mode) {
+            char *mod = Parrot_str_to_cstring(INTERP, mode);
+            file      = gzopen(path, mod);
             Parrot_str_free_cstring(mod);
-        if (NULL == file) {
+        }
+        else
+            file = gzopen(path, "rb");
+
+        Parrot_str_free_cstring(path);
+
+        if (!file)
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
                 "gzopen fails");
-        }
+
         SET_ATTR_file(INTERP, SELF, file);
         RETURN(PMC SELF);
     }
@@ -246,20 +249,24 @@
         STRING *dst = NULL;
         UINTVAL srcLen, bufSize, dstLen;
         char *src = Parrot_str_to_cstring(INTERP, str);
-        if (NULL == src) {
+
+        if (!src)
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
                 "failed to allocate");
-        }
-        srcLen = Parrot_str_byte_length(INTERP, str);
+
+        srcLen  = Parrot_str_byte_length(INTERP, str);
         bufSize = 12 + srcLen + srcLen / 1000;
-        buf = mem_allocate_n_zeroed_typed(bufSize, char);
-        if (NULL == buf) {
+        buf     = mem_allocate_n_zeroed_typed(bufSize, char);
+
+        if (!buf) {
             Parrot_str_free_cstring(src);
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
                 "failed to allocate");
         }
+
         rc = compress((Bytef *)buf, &dstLen, (const Bytef *)src, srcLen);
         Parrot_str_free_cstring(src);
+
         switch (rc) {
           case Z_OK:
             dst = Parrot_str_new(INTERP, buf, dstLen);
@@ -277,7 +284,12 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
                 "output buffer error");
             break;
+
+          default:
+            /* these are the only three documented return values */
+            break;
         }
+
         RETURN(STRING *dst);
     }
 

Modified: branches/codestring/src/embed.c
==============================================================================
--- branches/codestring/src/embed.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/embed.c	Mon May  3 14:39:34 2010	(r46235)
@@ -122,9 +122,6 @@
 Flag                    Effect
 C<PARROT_BOUNDS_FLAG>   enable bounds checking
 C<PARROT_PROFILE_FLAG>  enable profiling,
-C<PARROT_THR_TYPE_1>    disable variable sharing and thread communication
-C<PARROT_THR_TYPE_2>    disable variable sharing but enable thread communication
-C<PARROT_THR_TYPE_3>    enable variable sharing.
 
 =cut
 
@@ -635,7 +632,7 @@
     VTABLE_set_pmc_keyed_int(interp, interp->iglobals,
             (INTVAL)IGLOBALS_ARGV_LIST, userargv);
 
-    for (i = 0; i < argc; i++) {
+    for (i = 0; i < argc; ++i) {
         /* Run through argv, adding everything to @ARGS. */
         STRING * const arg =
             string_make(interp, argv[i], strlen(argv[i]), "unicode",
@@ -706,7 +703,7 @@
      * entry point with the address at our resume_offset.
      */
 
-    for (i = 0; i < ft->fixup_count; i++) {
+    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;
@@ -1000,7 +997,7 @@
                     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);
-                curr_mapping++;
+                ++curr_mapping;
             }
         }
 
@@ -1025,7 +1022,7 @@
 
         Parrot_io_fprintf(interp, output, "\n");
         line = line->next;
-        op_code_seq_num++;
+        ++op_code_seq_num;
     }
     if (outfile != NULL)
         Parrot_io_close(interp, output);

Modified: branches/codestring/src/exceptions.c
==============================================================================
--- branches/codestring/src/exceptions.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/exceptions.c	Mon May  3 14:39:34 2010	(r46235)
@@ -589,7 +589,7 @@
             "Backtrace - Obtained %d stack frames (max trace depth is %d).\n",
             size, BACKTRACE_DEPTH);
 #  ifndef BACKTRACE_VERBOSE
-    for (i = 0; i < size; i++) {
+    for (i = 0; i < size; ++i) {
         Dl_info   frameInfo;
         const int found  = dladdr(array[i], &frameInfo);
 
@@ -608,7 +608,7 @@
     { /* Scope for strings */
         char ** strings = backtrace_symbols(array, size);
         if (strings) {
-            for (i = 0; i < size; i++)
+            for (i = 0; i < size; ++i)
                 fprintf(stderr, "%s\n", strings[i]);
             /* backtrace_symbols gets memory using malloc */
             free(strings);

Modified: branches/codestring/src/frame_builder.c
==============================================================================
--- branches/codestring/src/frame_builder.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/frame_builder.c	Mon May  3 14:39:34 2010	(r46235)
@@ -259,7 +259,7 @@
     while (*sig) {
         switch (*sig) {
           case 't':
-            (*strings)++;
+            ++(*strings);
             stack_size +=4;
             break;
           case 'd':
@@ -269,7 +269,7 @@
             stack_size +=4;
             break;
         }
-        sig++;
+        ++sig;
     }
     return stack_size;
 
@@ -408,7 +408,7 @@
           case 'J':   /* interpreter */
             emitm_movl_m_r(interp, pc, emit_EAX, emit_EBP, 0, 1, 8);
             emitm_movl_r_m(interp, pc, emit_EAX, emit_EBP, 0, 1, args_offset);
-            arg_count--;
+            --arg_count;
             break;
           case 'p':   /* push pmc->data */
             /* FIXME (TT #1325) emitm_call_cfunc(pc, get_nci_p); */
@@ -461,8 +461,8 @@
             return NULL;
         }
         args_offset +=4;
-        arg_count++;
-        sig++;
+        ++arg_count;
+        ++sig;
     }
 
     /* prepare to call VTABLE_get_pointer, set up args */
@@ -608,7 +608,7 @@
 
     /* free temporary strings */
     strings_offset = st_offset + ST_SIZE_OF;
-    for (i=0; i<string_buffer_count; i++) {
+    for (i=0; i<string_buffer_count; ++i) {
         emitm_movl_m_r(interp, pc, emit_EAX, emit_EBP, 0, 1, strings_offset);
         emitm_movl_r_m(interp, pc, emit_EAX, emit_EBP, 0, 1, temp_calls_offset + 0);
         emitm_call_cfunc(pc, Parrot_str_free_cstring);

Modified: branches/codestring/src/gc/alloc_resources.c
==============================================================================
--- branches/codestring/src/gc/alloc_resources.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/gc/alloc_resources.c	Mon May  3 14:39:34 2010	(r46235)
@@ -347,7 +347,7 @@
              */
             alloc_new_block(mem_pools, size, pool, "compact failed");
 
-            mem_pools->mem_allocs_since_last_collect++;
+            ++mem_pools->mem_allocs_since_last_collect;
 
             if (pool->top_block->free < size) {
                 fprintf(stderr, "out of mem\n");
@@ -459,7 +459,7 @@
     /* We're collecting */
     mem_pools->mem_allocs_since_last_collect    = 0;
     mem_pools->header_allocs_since_last_collect = 0;
-    mem_pools->gc_collect_runs++;
+    ++mem_pools->gc_collect_runs;
 
     /* Snag a block big enough for everything */
     total_size = pad_pool_size(pool);
@@ -920,7 +920,7 @@
     check_fixed_size_obj_pool(mem_pools->string_header_pool);
     check_fixed_size_obj_pool(mem_pools->constant_string_header_pool);
 
-    for (i = 0; i < mem_pools->num_sized; i++) {
+    for (i = 0; i < mem_pools->num_sized; ++i) {
         const Fixed_Size_Pool * const pool = mem_pools->sized_header_pools[i];
         if (pool != NULL && pool != mem_pools->string_header_pool)
             check_fixed_size_obj_pool(pool);
@@ -1128,16 +1128,16 @@
     header_pools_iterate_callback(interp, mem_pools, POOL_PMC | POOL_CONST, NULL,
             sweep_cb_pmc);
 
-    for (pass = start; pass <= 2; pass++) {
+    /* for (pass = start; pass <= 2; ++pass) { */ /* XXX it's unsed loop */
         header_pools_iterate_callback(interp, mem_pools, POOL_BUFFER | POOL_CONST,
-                (void *)pass, sweep_cb_buf);
-    }
+                (void *)start, sweep_cb_buf);
+    /* } */
 
     mem_internal_free(mem_pools->sized_header_pools);
 
     if (mem_pools->attrib_pools) {
         unsigned int i;
-        for (i = 0; i < mem_pools->num_attribs; i++) {
+        for (i = 0; i < mem_pools->num_attribs; ++i) {
             PMC_Attribute_Pool  *pool  = mem_pools->attrib_pools[i];
             PMC_Attribute_Arena *arena;
 
@@ -1431,7 +1431,7 @@
         PMC   *p = (PMC *)((char*)cur_arena->start_objects);
         size_t i;
 
-        for (i = 0; i < cur_arena->used; i++) {
+        for (i = 0; i < cur_arena->used; ++i) {
             if (!PObj_on_free_list_TEST(p) && PObj_is_PMC_TEST(p)) {
                 if (PObj_is_PMC_shared_TEST(p))
                     PMC_sync(p)->owner = dest_interp;

Modified: branches/codestring/src/gc/gc_ms.c
==============================================================================
--- branches/codestring/src/gc/gc_ms.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/gc/gc_ms.c	Mon May  3 14:39:34 2010	(r46235)
@@ -557,7 +557,7 @@
     pt_gc_stop_mark(interp);
 
     /* Note it */
-    mem_pools->gc_mark_runs++;
+    ++mem_pools->gc_mark_runs;
     --mem_pools->gc_mark_block_level;
     mem_pools->header_allocs_since_last_collect = 0;
 
@@ -689,7 +689,7 @@
 
     PObj_flags_SETTO((PObj *)pmc, PObj_on_free_list_FLAG);
     pool->add_free_object(interp, interp->mem_pools, pool, (PObj *)pmc);
-    pool->num_free_objects++;
+    ++pool->num_free_objects;
 }
 
 /*
@@ -735,7 +735,7 @@
         Fixed_Size_Pool * const pool = interp->mem_pools->string_header_pool;
         PObj_flags_SETTO((PObj *)s, PObj_on_free_list_FLAG);
         pool->add_free_object(interp, interp->mem_pools, pool, s);
-        pool->num_free_objects++;
+        ++pool->num_free_objects;
     }
 }
 
@@ -853,7 +853,7 @@
     pool->free_list = item->next;
 #endif
 
-    pool->num_free_objects--;
+    --pool->num_free_objects;
     return (void *)item;
 }
 
@@ -882,7 +882,7 @@
     pool->newlast   = (PMC_Attribute_Free_List *)((char *)next + item_space);
 #else
     pool->free_list = next;
-    for (i = 0; i < num_items; i++) {
+    for (i = 0; i < num_items; ++i) {
         list        = next;
         list->next  = (PMC_Attribute_Free_List *)((char *)list + item_size);
         next        = list->next;
@@ -1049,7 +1049,7 @@
     item->next      = pool->free_list;
     pool->free_list = item;
 
-    pool->num_free_objects++;
+    ++pool->num_free_objects;
 }
 
 /*
@@ -1595,7 +1595,7 @@
         Fixed_Size_Arena * const arena = pool->last_Arena;
         ptr           = (PObj *)pool->newfree;
         pool->newfree = (void *)((char *)pool->newfree + pool->object_size);
-        arena->used++;
+        ++arena->used;
 
         if (pool->newfree >= pool->newlast)
             pool->newfree = NULL;
@@ -1711,7 +1711,7 @@
 gc_ms_block_GC_mark(PARROT_INTERP)
 {
     ASSERT_ARGS(gc_ms_block_GC_mark)
-    interp->mem_pools->gc_mark_block_level++;
+    ++interp->mem_pools->gc_mark_block_level;
     Parrot_shared_gc_block(interp);
 }
 
@@ -1720,7 +1720,7 @@
 {
     ASSERT_ARGS(gc_ms_unblock_GC_mark)
     if (interp->mem_pools->gc_mark_block_level) {
-        interp->mem_pools->gc_mark_block_level--;
+        --interp->mem_pools->gc_mark_block_level;
         Parrot_shared_gc_unblock(interp);
     }
 }
@@ -1729,7 +1729,7 @@
 gc_ms_block_GC_sweep(PARROT_INTERP)
 {
     ASSERT_ARGS(gc_ms_block_GC_sweep)
-    interp->mem_pools->gc_sweep_block_level++;
+    ++interp->mem_pools->gc_sweep_block_level;
 }
 
 static void
@@ -1737,7 +1737,7 @@
 {
     ASSERT_ARGS(gc_ms_unblock_GC_sweep)
     if (interp->mem_pools->gc_sweep_block_level)
-        interp->mem_pools->gc_sweep_block_level--;
+        --interp->mem_pools->gc_sweep_block_level;
 }
 
 static unsigned int
@@ -1818,7 +1818,7 @@
 {
     ASSERT_ARGS(gc_ms_active_sized_buffers)
     int j, ret = 0;
-    for (j = 0; j < (INTVAL)mem_pools->num_sized; j++) {
+    for (j = 0; j < (INTVAL)mem_pools->num_sized; ++j) {
         Fixed_Size_Pool * const header_pool =
             mem_pools->sized_header_pools[j];
         if (header_pool)
@@ -1843,7 +1843,7 @@
 {
     ASSERT_ARGS(gc_ms_total_sized_buffers)
     int j, ret = 0;
-    for (j = 0; j < (INTVAL)mem_pools->num_sized; j++) {
+    for (j = 0; j < (INTVAL)mem_pools->num_sized; ++j) {
         Fixed_Size_Pool * const header_pool =
             mem_pools->sized_header_pools[j];
         if (header_pool)

Modified: branches/codestring/src/gc/malloc.c
==============================================================================
--- branches/codestring/src/gc/malloc.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/gc/malloc.c	Mon May  3 14:39:34 2010	(r46235)
@@ -1768,7 +1768,7 @@
     case 4:           *mzp++ = 0;                                             \
     case 3:           *mzp++ = 0;                                             \
     case 2:           *mzp++ = 0;                                             \
-    case 1:           *mzp++ = 0; if (mcn <= 0) break; mcn--; }                \
+    case 1:           *mzp++ = 0; if (mcn <= 0) break; --mcn; }                \
   }                                                                           \
 } while (0)
 
@@ -1787,7 +1787,7 @@
     case 4:           *mcdst++ = *mcsrc++;                                    \
     case 3:           *mcdst++ = *mcsrc++;                                    \
     case 2:           *mcdst++ = *mcsrc++;                                    \
-    case 1:           *mcdst++ = *mcsrc++; if (mcn <= 0) break; mcn--; }       \
+    case 1:           *mcdst++ = *mcsrc++; if (mcn <= 0) break; --mcn; }       \
   }                                                                           \
 } while (0)
 
@@ -3857,7 +3857,7 @@
 #if HAVE_MMAP
             int ret;
             INTERNAL_SIZE_T offset = p->prev_size;
-            av->n_mmaps--;
+            --av->n_mmaps;
             av->mmapped_mem -= (size + offset);
             ret = munmap((char*)p - offset, size + offset);
             /* munmap returns non-zero on failure */
@@ -4913,7 +4913,7 @@
           }
           / / save ptrs so they can be freed during cleanup
           our_os_pools[next_os_pool] = ptr;
-          next_os_pool++;
+          ++next_os_pool;
           ptr = (void *) ((((CHUNK_SIZE_T) ptr) + RM_PAGE_MASK) & ~RM_PAGE_MASK);
           sbrk_top = (char *) ptr + size;
           return ptr;

Modified: branches/codestring/src/gc/malloc_trace.c
==============================================================================
--- branches/codestring/src/gc/malloc_trace.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/gc/malloc_trace.c	Mon May  3 14:39:34 2010	(r46235)
@@ -76,9 +76,9 @@
     if (fd2>=0 && (count = read(fd2, cmdline, 127)) > 0) {
         close(fd2);
         cmdline[count] = 0;
-        for (s=cmdline; *s++;); s--;
+        for (s=cmdline; ++*s;); --s;
         while (--s>cmdline && *s!='/');
-        if (*s == '/') s++;
+        if (*s == '/') ++s;
         sprintf(name, LOG_NAME ".%.12s.%d", s, pid);
     }
         else {
@@ -116,7 +116,7 @@
     buffer[buffer_i].size = t.tv_sec;
     buffer[buffer_i].ptr = (void *)t.tv_usec;
     buffer[buffer_i].ptr2 = NULL;
-    buffer_i++;
+    ++buffer_i;
     if (fd < 0) open_log_file();
     if (getpid() != pid) { /* Oops, must have forked... */
         if (fd >= 0) close(fd);
@@ -176,7 +176,7 @@
         buffer[buffer_i].size = t.tv_sec;
         buffer[buffer_i].ptr = (void *)t.tv_usec;
         buffer[buffer_i].ptr2 = NULL;
-        buffer_i++;
+        ++buffer_i;
     }
     buffer[buffer_i].code = code;
     buffer[buffer_i].size = size;

Modified: branches/codestring/src/gc/mark_sweep.c
==============================================================================
--- branches/codestring/src/gc/mark_sweep.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/gc/mark_sweep.c	Mon May  3 14:39:34 2010	(r46235)
@@ -268,12 +268,12 @@
         b = (PObj *)cur_arena->start_objects;
 
         /* loop only while there are objects in the arena */
-        for (i = objects_end; i; i--) {
+        for (i = objects_end; i; --i) {
 
             /* if it's on free list, do nothing */
 
             if (PObj_live_TEST(b)) {
-                total_used++;
+                ++total_used;
                 PObj_live_CLEAR(b);
                 PObj_get_FLAGS(b) &= ~PObj_custom_GC_FLAG;
             }
@@ -414,7 +414,7 @@
         Buffer *b = (Buffer *)arena->start_objects;
         UINTVAL i;
 
-        for (i = 0; i < arena->used; i++) {
+        for (i = 0; i < arena->used; ++i) {
             PObj_live_CLEAR(b);
             b = (Buffer *)((char *)b + object_size);
         }
@@ -456,7 +456,7 @@
 #else
     /* Move all the new objects into the free list */
     arena->used          = num_objects;
-    for (i = 0; i < num_objects; i++) {
+    for (i = 0; i < num_objects; ++i) {
         pool->add_free_object(interp, pool, object);
         object = (void *)((char *)object + pool->object_size);
     }

Modified: branches/codestring/src/gc/system.c
==============================================================================
--- branches/codestring/src/gc/system.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/gc/system.c	Mon May  3 14:39:34 2010	(r46235)
@@ -277,7 +277,7 @@
     size_t         max        = 0;
     UINTVAL        i;
 
-    for (i = 0; i < mem_pools->num_sized; i++) {
+    for (i = 0; i < mem_pools->num_sized; ++i) {
         if (mem_pools->sized_header_pools[i]) {
             if (mem_pools->sized_header_pools[i]->end_arena_memory > max)
                 max = mem_pools->sized_header_pools[i]->end_arena_memory;
@@ -311,7 +311,7 @@
     size_t         min        = (size_t) -1;
     UINTVAL        i;
 
-    for (i = 0; i < mem_pools->num_sized; i++) {
+    for (i = 0; i < mem_pools->num_sized; ++i) {
         const Fixed_Size_Pool * const pool = mem_pools->sized_header_pools[i];
         if (pool && pool->start_arena_memory) {
             if (pool->start_arena_memory < min)
@@ -387,7 +387,7 @@
     /* Shifting a value by its size (in bits) or larger is undefined behaviour.
        So need an explicit check to return 0 if there is no prefix, rather than
        attempting to rely on (say) 0xFFFFFFFF << 32 being 0.  */
-    for (i = 0; i < bound; i++) {
+    for (i = 0; i < bound; ++i) {
         if (val1 == val2)
             return ~(size_t)0 << i;
 
@@ -494,7 +494,7 @@
     ASSERT_ARGS(is_buffer_ptr)
     UINTVAL        i;
 
-    for (i = 0; i < mem_pools->num_sized; i++) {
+    for (i = 0; i < mem_pools->num_sized; ++i) {
         if (mem_pools->sized_header_pools[i]
             &&  contained_in_pool(mem_pools->sized_header_pools[i], ptr))
             return 1;

Modified: branches/codestring/src/hash.c
==============================================================================
--- branches/codestring/src/hash.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/hash.c	Mon May  3 14:39:34 2010	(r46235)
@@ -645,7 +645,7 @@
     ASSERT_ARGS(hash_freeze)
     size_t           i;
 
-    for (i = 0; i < hash->entries; i++) {
+    for (i = 0; i < hash->entries; ++i) {
         HashBucket * const b = hash->bs+i;
 
         switch (hash->key_type) {
@@ -1063,7 +1063,7 @@
     ASSERT_ARGS(parrot_chash_destroy)
     UINTVAL i;
 
-    for (i = 0; i <= hash->mask; i++) {
+    for (i = 0; i <= hash->mask; ++i) {
         HashBucket *bucket = hash->bi[i];
         while (bucket) {
             mem_gc_free(interp, bucket->key);
@@ -1098,7 +1098,7 @@
     ASSERT_ARGS(parrot_chash_destroy_values)
     UINTVAL i;
 
-    for (i = 0; i <= hash->mask; i++) {
+    for (i = 0; i <= hash->mask; ++i) {
         HashBucket *bucket = hash->bi[i];
         while (bucket) {
             mem_gc_free(interp, bucket->key);
@@ -1226,7 +1226,7 @@
         const UINTVAL  entries = hash->entries;
         UINTVAL        i;
 
-        for (i = 0; i < entries; i++) {
+        for (i = 0; i < entries; ++i) {
             HashBucket * const bucket = hash->bs + i;
 
             /* the hash->compare cost is too high for this fast path */
@@ -1353,7 +1353,7 @@
             bucket = hash->free_list;
         }
 
-        hash->entries++;
+        ++hash->entries;
         hash->free_list                = bucket->next;
         bucket->key                    = key;
         bucket->value                  = value;
@@ -1392,7 +1392,7 @@
             else
                 hash->bi[hashval] = bucket->next;
 
-            hash->entries--;
+            --hash->entries;
             bucket->next    = hash->free_list;
             bucket->key     = NULL;
             hash->free_list = bucket;
@@ -1423,7 +1423,7 @@
     UINTVAL entries = hash->entries;
     UINTVAL i;
 
-    for (i = 0; i < entries; i++) {
+    for (i = 0; i < entries; ++i) {
         void         *valtmp;
         HashBucket   *b   = hash->bs+i;
         void * const  key = b->key;

Modified: branches/codestring/src/hll.c
==============================================================================
--- branches/codestring/src/hll.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/hll.c	Mon May  3 14:39:34 2010	(r46235)
@@ -97,8 +97,7 @@
     else
         VTABLE_push_pmc(interp, hll_info, entry);
 
-    entry_id = Parrot_pmc_new_constant(interp, enum_class_Integer);
-    VTABLE_set_integer_native(interp, entry_id, id);
+    entry_id = Parrot_pmc_new_constant_init_int(interp, enum_class_Integer, id);
     VTABLE_set_pmc_keyed_int(interp, entry, e_HLL_id, entry_id);
 
     return entry;

Modified: branches/codestring/src/interp/inter_create.c
==============================================================================
--- branches/codestring/src/interp/inter_create.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/interp/inter_create.c	Mon May  3 14:39:34 2010	(r46235)
@@ -373,6 +373,15 @@
      */
     Parrot_gc_completely_unblock(interp);
 
+    /* Set non buffered mode in standard out and err handles, flushing
+     * the buffers and avoiding pending output gets confused or lost in
+     * case of errors during destruction.
+     */
+    Parrot_io_setbuf(interp,
+            Parrot_io_stdhandle(interp, PIO_STDOUT_FILENO, NULL), PIOCTL_NONBUF);
+    Parrot_io_setbuf(interp,
+            Parrot_io_stdhandle(interp, PIO_STDERR_FILENO, NULL), PIOCTL_NONBUF);
+
     if (Interp_trace_TEST(interp, ~0)) {
         Parrot_io_eprintf(interp, "FileHandle objects (like stdout and stderr)"
             "are about to be closed, so clearing trace flags.\n");

Modified: branches/codestring/src/interp/inter_misc.c
==============================================================================
--- branches/codestring/src/interp/inter_misc.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/interp/inter_misc.c	Mon May  3 14:39:34 2010	(r46235)
@@ -111,10 +111,9 @@
 {
     ASSERT_ARGS(Parrot_mark_method_writes)
     STRING *const str_name = Parrot_str_new_constant(interp, name);
-    PMC    *const pmc_true = Parrot_pmc_new(interp, enum_class_Integer);
+    PMC    *const pmc_true = Parrot_pmc_new_init_int(interp, enum_class_Integer, 1);
     PMC    *const method   = VTABLE_get_pmc_keyed_str(
         interp, interp->vtables[type]->_namespace, str_name);
-    VTABLE_set_integer_native(interp, pmc_true, 1);
     VTABLE_setprop(interp, method, CONST_STRING(interp, "write"), pmc_true);
 }
 
@@ -266,27 +265,33 @@
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
 PMC*
 interpinfo_p(PARROT_INTERP, INTVAL what)
 {
     ASSERT_ARGS(interpinfo_p)
+
+    PMC *result;
     switch (what) {
       case CURRENT_SUB:
-        return Parrot_pcc_get_sub(interp, CURRENT_CONTEXT(interp));
+        result = Parrot_pcc_get_sub(interp, CURRENT_CONTEXT(interp));
+        break;
       case CURRENT_CONT:
-        {
-            PMC * const cont = Parrot_pcc_get_continuation(interp, CURRENT_CONTEXT(interp));
-            return cont;
-        }
+        result = Parrot_pcc_get_continuation(interp, CURRENT_CONTEXT(interp));
+        break;
       case CURRENT_OBJECT:
-        return Parrot_pcc_get_object(interp, CURRENT_CONTEXT(interp));
+        result = Parrot_pcc_get_object(interp, CURRENT_CONTEXT(interp));
+        break;
       case CURRENT_LEXPAD:
-        return Parrot_pcc_get_lex_pad(interp, CURRENT_CONTEXT(interp));
+        result = Parrot_pcc_get_lex_pad(interp, CURRENT_CONTEXT(interp));
+        break;
       default:        /* or a warning only? */
         Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
                 "illegal argument in interpinfo");
     }
+
+    /* Don't send NULL values to P registers */
+    return result ? result : PMCNULL;
 }
 
 /*
@@ -336,10 +341,10 @@
                 while (pos              >  0
                 &&     fullname_c[pos] != '/'
                 &&     fullname_c[pos] != '\\')
-                    pos--;
+                    --pos;
 
                 if (pos > 0)
-                    pos++;
+                    ++pos;
 
                 basename = Parrot_str_new(interp, fullname_c + pos, 0);
                 Parrot_str_free_cstring(fullname_c);

Modified: branches/codestring/src/io/buffer.c
==============================================================================
--- branches/codestring/src/io/buffer.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/io/buffer.c	Mon May  3 14:39:34 2010	(r46235)
@@ -481,7 +481,7 @@
     buf_start = buffer_next;
 
     for (l = 0; buffer_next < buffer_end;) {
-        l++;
+        ++l;
         if (io_is_end_of_line((char *)buffer_next)) {
             Parrot_io_set_buffer_next(interp, filehandle, ++buffer_next);
             break;

Modified: branches/codestring/src/io/core.c
==============================================================================
--- branches/codestring/src/io/core.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/io/core.c	Mon May  3 14:39:34 2010	(r46235)
@@ -124,7 +124,7 @@
     /* this was i < PIO_NR_OPEN, but only standard handles 0..2 need
      * to be kept alive AFAIK -leo
      */
-    for (i = 0; i < 3; i++) {
+    for (i = 0; i < 3; ++i) {
         Parrot_gc_mark_PMC_alive(interp, table[i]);
     }
 }

Modified: branches/codestring/src/io/socket_unix.c
==============================================================================
--- branches/codestring/src/io/socket_unix.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/io/socket_unix.c	Mon May  3 14:39:34 2010	(r46235)
@@ -395,7 +395,7 @@
 This is not equivalent to any specific POSIX or BSD socket call, but
 it is a useful, common primitive.
 
-Not at all usefule --leo.
+Not at all useful --leo.
 
 Also, a buffering layer above this may choose to reimplement by checking
 the read buffer.

Modified: branches/codestring/src/io/socket_win32.c
==============================================================================
--- branches/codestring/src/io/socket_win32.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/io/socket_win32.c	Mon May  3 14:39:34 2010	(r46235)
@@ -77,9 +77,10 @@
 Parrot_io_socket_win32(PARROT_INTERP, ARGIN(PMC * s), int fam, int type, int proto)
 {
     ASSERT_ARGS(Parrot_io_socket_win32)
-    int       i    = 1;
+
     const int sock = socket(fam, type, proto);
     if (sock >= 0) {
+        int       i    = 1;
         setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char*)&i, sizeof (i));
         Parrot_io_set_os_handle(interp, s, sock);
         SOCKADDR_REMOTE(s)->sin_family = fam;
@@ -102,7 +103,7 @@
 Parrot_io_connect_win32(PARROT_INTERP, ARGMOD(PMC *socket), ARGIN(PMC *r))
 {
     ASSERT_ARGS(Parrot_io_connect_win32)
-    Parrot_Socket_attributes * io = PARROT_SOCKET(socket);
+    const Parrot_Socket_attributes * const io = PARROT_SOCKET(socket);
 
     if (!r)
         return -1;
@@ -141,7 +142,7 @@
 Parrot_io_bind_win32(PARROT_INTERP, ARGMOD(PMC *socket), ARGMOD(PMC *sockaddr))
 {
     ASSERT_ARGS(Parrot_io_bind_win32)
-    Parrot_Socket_attributes * io = PARROT_SOCKET(socket);
+    const Parrot_Socket_attributes * const io = PARROT_SOCKET(socket);
     struct sockaddr_in * saddr;
 
     if (!sockaddr)
@@ -174,7 +175,7 @@
 Parrot_io_listen_win32(SHIM_INTERP, ARGMOD(PMC *socket), INTVAL sec)
 {
     ASSERT_ARGS(Parrot_io_listen_win32)
-    Parrot_Socket_attributes * io = PARROT_SOCKET(socket);
+    const Parrot_Socket_attributes * const io = PARROT_SOCKET(socket);
     if ((listen((int)io->os_handle, sec)) == -1) {
         return -1;
     }
@@ -197,7 +198,7 @@
 Parrot_io_accept_win32(PARROT_INTERP, ARGMOD(PMC *socket))
 {
     ASSERT_ARGS(Parrot_io_accept_win32)
-    Parrot_Socket_attributes * io = PARROT_SOCKET(socket);
+    const Parrot_Socket_attributes * const io = PARROT_SOCKET(socket);
     PMC * newio   = Parrot_io_new_socket_pmc(interp,
             PIO_F_SOCKET | PIO_F_READ|PIO_F_WRITE);
     Parrot_Socklen_t    addrlen = sizeof (struct sockaddr_in);
@@ -240,7 +241,7 @@
 {
     ASSERT_ARGS(Parrot_io_send_win32)
     int error, bytes, byteswrote;
-    Parrot_Socket_attributes * io = PARROT_SOCKET(socket);
+    const Parrot_Socket_attributes * const io = PARROT_SOCKET(socket);
 
     bytes = s->bufused;
     byteswrote = 0;
@@ -295,7 +296,7 @@
     int error;
     unsigned int bytesread = 0;
     char buf[2048];
-    Parrot_Socket_attributes * io = PARROT_SOCKET(socket);
+    const Parrot_Socket_attributes * const io = PARROT_SOCKET(socket);
 
 AGAIN:
     if ((error = recv((int)io->os_handle, buf, 2048, 0)) >= 0) {
@@ -342,7 +343,7 @@
 This is not equivalent to any specific POSIX or BSD socket call, but
 it is a useful, common primitive.
 
-Not at all usefule --leo.
+Not at all useful --leo.
 
 Also, a buffering layer above this may choose to reimplement by checking
 the read buffer.
@@ -359,7 +360,7 @@
     int n;
     fd_set r, w, e;
     struct timeval t;
-    Parrot_Socket_attributes * io = PARROT_SOCKET(socket);
+    const Parrot_Socket_attributes * const io = PARROT_SOCKET(socket);
 
     t.tv_sec = sec;
     t.tv_usec = usec;

Modified: branches/codestring/src/io/utf8.c
==============================================================================
--- branches/codestring/src/io/utf8.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/io/utf8.c	Mon May  3 14:39:34 2010	(r46235)
@@ -73,7 +73,7 @@
                     goto ok;
 
                 /* need len - 1 more chars */
-                len2--;
+                --len2;
                 s2 = Parrot_str_new_init(interp, NULL, len2, Parrot_utf8_encoding_ptr,
                                          Parrot_unicode_charset_ptr, 0);
                 s2->bufused  = len2;

Modified: branches/codestring/src/library.c
==============================================================================
--- branches/codestring/src/library.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/library.c	Mon May  3 14:39:34 2010	(r46235)
@@ -420,8 +420,8 @@
     STRING * const nul = string_chr(interp, '\0');
 
     path = Parrot_str_concat(interp, path, nul);
-    path->bufused--;
-    path->strlen--;
+    --path->bufused;
+    --path->strlen;
 
 #ifdef WIN32
     cnv_to_win32_filesep(path);

Modified: branches/codestring/src/longopt.c
==============================================================================
--- branches/codestring/src/longopt.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/longopt.c	Mon May  3 14:39:34 2010	(r46235)
@@ -145,13 +145,13 @@
     const struct longopt_opt_decl* dptr;
 
     while (argv[dex][optlen] != '\0' && argv[dex][optlen] != '=') {
-        optlen++;
+        ++optlen;
     }
 
-    for (dptr = options; dptr->opt_id; dptr++) {
+    for (dptr = options; dptr->opt_id; ++dptr) {
         int sptr;
         /* For each listed long option... */
-        for (sptr = 0; dptr->opt_long[sptr]; sptr++) {
+        for (sptr = 0; dptr->opt_long[sptr]; ++sptr) {
             if (strncmp(dptr->opt_long[sptr], argv[dex], optlen) == 0
              && dptr->opt_long[sptr][optlen] == '\0') {
                 /* Found it */
@@ -246,7 +246,7 @@
         info_buf->_shortopt_pos = &argv[dex][1];
     pos = info_buf->_shortopt_pos;
 
-    for (dptr = options; dptr->opt_id; dptr++) {
+    for (dptr = options; dptr->opt_id; ++dptr) {
         if (dptr->opt_short == *pos) {
             /* Found it */
             info_buf->opt_id = dptr->opt_id;

Modified: branches/codestring/src/main.c
==============================================================================
--- branches/codestring/src/main.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/main.c	Mon May  3 14:39:34 2010	(r46235)
@@ -206,7 +206,7 @@
 is_all_hex_digits(ARGIN(const char *s))
 {
     ASSERT_ARGS(is_all_hex_digits)
-    for (; *s; s++)
+    for (; *s; ++s)
         if (!isxdigit(*s))
             return 0;
     return 1;
@@ -402,7 +402,7 @@
         else if (!strncmp(arg, "--hash-seed", 11)) {
 
             if ((arg = strrchr(arg, '=')))
-                arg++;
+                ++arg;
             else
                 arg = argv[++pos];
 

Modified: branches/codestring/src/misc.c
==============================================================================
--- branches/codestring/src/misc.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/misc.c	Mon May  3 14:39:34 2010	(r46235)
@@ -117,7 +117,7 @@
     size_t  str_len;
     if (len == 0)
         return;
-    len--;
+    --len;
     if (len) {
         const STRING * const ret = Parrot_vsprintf_c(interp, pat, args);
         /* string_transcode(interp, ret, NULL, NULL, &ret); */

Modified: branches/codestring/src/multidispatch.c
==============================================================================
--- branches/codestring/src/multidispatch.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/multidispatch.c	Mon May  3 14:39:34 2010	(r46235)
@@ -396,7 +396,7 @@
             enum_class_FixedIntegerArray, param_count);
     INTVAL i;
 
-    for (i = 0; i < param_count; i++) {
+    for (i = 0; i < param_count; ++i) {
         STRING *type_name = VTABLE_get_string_keyed_int(interp, type_list, i);
         INTVAL  type;
 
@@ -646,7 +646,7 @@
             if (type_sig == enum_class_Integer) { dist++; continue; }
             if (type_sig == enum_type_PMC ||
                 (type_sig >= enum_class_default && type_sig < enum_class_core_max)) {
-                dist++;
+                ++dist;
                 type_call = enum_class_Integer;
             }
             break;
@@ -654,7 +654,7 @@
             if (type_sig == enum_class_Float)   { dist++; continue; }
             if (type_sig == enum_type_PMC ||
                 (type_sig >= enum_class_default && type_sig < enum_class_core_max)) {
-                dist++;
+                ++dist;
                 type_call = enum_class_Float;
             }
             break;
@@ -662,7 +662,7 @@
             if (type_sig == enum_class_String)  { dist++; continue; }
             if (type_sig == enum_type_PMC ||
                 (type_sig >= enum_class_default && type_sig < enum_class_core_max)) {
-                dist++;
+                ++dist;
                 type_call = enum_class_String;
             }
             break;
@@ -675,7 +675,7 @@
          * which matches any PMC
          */
         if (type_call <= 0 && type_sig == enum_type_PMC) {
-            dist++;
+            ++dist;
             continue;
         }
 
@@ -1122,7 +1122,7 @@
     STRING *key;
     INTVAL  i;
 
-    for (i = 0; i < num_values; i++) {
+    for (i = 0; i < num_values; ++i) {
         const INTVAL id = VTABLE_type(interp, VTABLE_get_pmc_keyed_int(interp, values, i));
         if (id == 0) {
             mem_gc_free(interp, type_ids);
@@ -1223,7 +1223,7 @@
     STRING *key;
     INTVAL  i;
 
-    for (i = 0; i < num_types; i++) {
+    for (i = 0; i < num_types; ++i) {
         const INTVAL id = VTABLE_get_integer_keyed_int(interp, types, i);
 
         if (id == 0) {

Modified: branches/codestring/src/nci_test.c
==============================================================================
--- branches/codestring/src/nci_test.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/nci_test.c	Mon May  3 14:39:34 2010	(r46235)
@@ -892,10 +892,10 @@
 nci_cb_D4(cb_D4_func times_ten, void* user_data)
 {
     int cnt;
-    for (cnt = 0; cnt < 9; cnt++)
+    for (cnt = 0; cnt < 9; ++cnt)
     {
         (times_ten)(user_data, &int_cb_D4);
-        int_cb_D4++;
+        ++int_cb_D4;
     }
 
     return;

Modified: branches/codestring/src/oo.c
==============================================================================
--- branches/codestring/src/oo.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/oo.c	Mon May  3 14:39:34 2010	(r46235)
@@ -267,7 +267,7 @@
     cloned_guts->attrib_store = NULL; /* XXX Do we need to set ->attrib_store twice? */
     cloned_guts->attrib_store = VTABLE_clone(interp, obj->attrib_store);
     num_attrs                 = VTABLE_elements(interp, cloned_guts->attrib_store);
-    for (i = 0; i < num_attrs; i++) {
+    for (i = 0; i < num_attrs; ++i) {
         PMC * const to_clone = VTABLE_get_pmc_keyed_int(interp, cloned_guts->attrib_store, i);
         if (!PMC_IS_NULL(to_clone)) {
             VTABLE_set_pmc_keyed_int(interp, cloned_guts->attrib_store, i,
@@ -280,7 +280,7 @@
     if (CLASS_has_alien_parents_TEST(obj->_class)) {
         int j;
         /* Locate any PMC parents. */
-        for (j = 0; j < num_classes; j++) {
+        for (j = 0; j < num_classes; ++j) {
             PMC * const cur_class = VTABLE_get_pmc_keyed_int(interp, _class->all_parents, j);
             if (cur_class->vtable->base_type == enum_class_PMCProxy) {
                 /* Clone this PMC too. */
@@ -339,9 +339,7 @@
 
         /* Create proxy if not found */
         if (PMC_IS_NULL(proxy)) {
-            PMC * const type_num = Parrot_pmc_new(interp, enum_class_Integer);
-            VTABLE_set_integer_native(interp, type_num, type);
-            proxy = Parrot_pmc_new_init(interp, enum_class_PMCProxy, type_num);
+            proxy = Parrot_pmc_new_init_int(interp, enum_class_PMCProxy, type);
             Parrot_pcc_invoke_method_from_c_args(interp, pmc_ns, CONST_STRING(interp, "set_class"), "P->", proxy);
         }
         return proxy;
@@ -472,7 +470,7 @@
         const INTVAL num_classes = VTABLE_elements(interp, _class->all_parents);
         INTVAL       i;
 
-        for (i = 0; i < num_classes; i++) {
+        for (i = 0; i < num_classes; ++i) {
             /* Get the class. */
             PMC * const cur_class =
                 VTABLE_get_pmc_keyed_int(interp, _class->all_parents, i);
@@ -650,11 +648,10 @@
     }
     {
         if (!typeid_exists) {
-            PMC * const classname_hash = interp->class_hash;
-            PMC * const item           = Parrot_pmc_new(interp, enum_class_Integer);
             /* set entry in name->type hash */
-            VTABLE_set_integer_native(interp, item, type);
-
+            PMC * const classname_hash = interp->class_hash;
+            PMC * const item           = Parrot_pmc_new_init_int(interp,
+                    enum_class_Integer, type);
             VTABLE_set_pmc_keyed(interp, classname_hash, name, item);
         }
     }
@@ -688,7 +685,7 @@
     if (!mc)
         return;
 
-    for (type = 0; type < mc->mc_size; type++) {
+    for (type = 0; type < mc->mc_size; ++type) {
         if (!mc->idx[type])
             continue;
 
@@ -741,7 +738,7 @@
     Caches * const mc = interp->caches;
 
     /* mc->idx[type][bits] = e; */
-    for (i = 0; i < mc->mc_size; i++) {
+    for (i = 0; i < mc->mc_size; ++i) {
         if (mc->idx[i])
             invalidate_type_caches(interp, i);
     }
@@ -1045,13 +1042,12 @@
     STRING * const class_str = CONST_STRING(interp, "class");
 
     for (i = 0; i < n; ++i) {
-        PMC *ns, *class_obj, *_class, *method_hash;
-        PMC *method = PMCNULL;
-
-        _class = VTABLE_get_pmc_keyed_int(interp, mro, i);
-        ns     = VTABLE_get_namespace(interp, _class);
+        PMC * const _class    = VTABLE_get_pmc_keyed_int(interp, mro, i);
+        PMC * const ns        = VTABLE_get_namespace(interp, _class);
+        PMC * const class_obj = VTABLE_inspect_str(interp, ns, class_str);
+        PMC           *method = PMCNULL;
+        PMC * method_hash;
 
-        class_obj = VTABLE_inspect_str(interp, ns, class_str);
         if (PMC_IS_NULL(class_obj))
             method_hash = VTABLE_inspect_str(interp, ns, methods_str);
         else
@@ -1098,7 +1094,7 @@
 
     /* Try and find something appropriate to add to the MRO - basically, the
      * first list head that is not in the tail of all the other lists. */
-    for (i = 0; i < list_count; i++) {
+    for (i = 0; i < list_count; ++i) {
         PMC * const cand_list = VTABLE_get_pmc_keyed_int(interp, merge_list, i);
 
         PMC *cand_class;
@@ -1109,9 +1105,9 @@
             continue;
 
         cand_class = VTABLE_get_pmc_keyed_int(interp, cand_list, 0);
-        cand_count++;
+        ++cand_count;
 
-        for (j = 0; j < list_count; j++) {
+        for (j = 0; j < list_count; ++j) {
             /* Skip the current list. */
             if (j != i) {
                 /* Is it in the tail? If so, reject. */
@@ -1121,7 +1117,7 @@
                 const int check_length = VTABLE_elements(interp, check_list);
                 int k;
 
-                for (k = 1; k < check_length; k++) {
+                for (k = 1; k < check_length; ++k) {
                     if (VTABLE_get_pmc_keyed_int(interp, check_list, k) ==
                         cand_class) {
                         reject = 1;
@@ -1148,13 +1144,13 @@
             "Could not build C3 linearization: ambiguous hierarchy");
 
     /* Otherwise, remove what was accepted from the merge lists. */
-    for (i = 0; i < list_count; i++) {
+    for (i = 0; i < list_count; ++i) {
 
         PMC * const list           = VTABLE_get_pmc_keyed_int(interp, merge_list, i);
         const INTVAL sublist_count = VTABLE_elements(interp, list);
         INTVAL j;
 
-        for (j = 0; j < sublist_count; j++) {
+        for (j = 0; j < sublist_count; ++j) {
             if (VTABLE_get_pmc_keyed_int(interp, list, j) == accepted) {
                 VTABLE_delete_keyed_int(interp, list, j);
                 break;
@@ -1218,7 +1214,7 @@
     /* Otherwise, need to do merge. For that, need linearizations of all of
      * our parents added to the merge list. */
     merge_list = PMCNULL;
-    for (i = 0; i < parent_count; i++) {
+    for (i = 0; i < parent_count; ++i) {
         PMC * const lin = Parrot_ComputeMRO_C3(interp,
             VTABLE_get_pmc_keyed_int(interp, immediate_parents, i));
 
@@ -1286,7 +1282,7 @@
     /* Check we have not already composed the role; if so, just ignore it. */
     INTVAL roles_count = VTABLE_elements(interp, roles_list);
 
-    for (i = 0; i < roles_count; i++)
+    for (i = 0; i < roles_count; ++i)
         if (VTABLE_get_pmc_keyed_int(interp, roles_list, i) == role)
             return;
 
@@ -1314,7 +1310,7 @@
         if (got_exclude) {
             const int exclude_count = VTABLE_elements(interp, exclude);
 
-            for (i = 0; i < exclude_count; i++) {
+            for (i = 0; i < exclude_count; ++i) {
                 const STRING * const check =
                     VTABLE_get_string_keyed_int(interp, exclude, i);
 
@@ -1410,7 +1406,7 @@
                 /* Class already has a multi-sub; need to merge our methods into it. */
                 const INTVAL num_subs = VTABLE_elements(interp, cur_method);
                 INTVAL j;
-                for (j = 0; j < num_subs; j++)
+                for (j = 0; j < num_subs; ++j)
                     VTABLE_push_pmc(interp, cur_entry, VTABLE_get_pmc_keyed_int(interp,
                             cur_method, j));
             }
@@ -1430,7 +1426,7 @@
 
     /* Add this role to the roles list. */
     VTABLE_push_pmc(interp, roles_list, role);
-    roles_count++;
+    ++roles_count;
 
     /* As a result of composing this role, we will also now do the roles
      * that it did itself. Note that we already have the correct methods
@@ -1439,13 +1435,13 @@
     Parrot_pcc_invoke_method_from_c_args(interp, role, CONST_STRING(interp, "roles"), "->P", &roles_of_role);
     roles_of_role_count = VTABLE_elements(interp, roles_of_role);
 
-    for (i = 0; i < roles_of_role_count; i++) {
+    for (i = 0; i < roles_of_role_count; ++i) {
         /* Only add if we don't already have it in the list. */
         PMC * const cur_role = VTABLE_get_pmc_keyed_int(interp,
                                     roles_of_role, i);
         INTVAL j;
 
-        for (j = 0; j < roles_count; j++) {
+        for (j = 0; j < roles_count; ++j) {
             if (VTABLE_get_pmc_keyed_int(interp, roles_list, j) == cur_role) {
                 /* We ain't be havin' it. */
                 VTABLE_push_pmc(interp, roles_list, cur_role);

Modified: branches/codestring/src/packdump.c
==============================================================================
--- branches/codestring/src/packdump.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/packdump.c	Mon May  3 14:39:34 2010	(r46235)
@@ -67,7 +67,7 @@
     ASSERT_ARGS(PackFile_ConstTable_dump)
     opcode_t i;
 
-    for (i = 0; i < self->const_count; i++) {
+    for (i = 0; i < self->const_count; ++i) {
         Parrot_io_printf(interp, "    # %ld:\n", (long)i);
         PackFile_Constant_dump(interp, self, self->constants[i]);
     }
@@ -144,9 +144,9 @@
             if (printed_flag_p)
                 Parrot_io_printf(interp, ",");
             Parrot_io_printf(interp, "%s", flag_bit_names[idx]);
-            printed_flag_p++;
+            ++printed_flag_p;
         }
-        idx++;
+        ++idx;
         flags >>= 1;
     }
     Parrot_io_printf(interp, ")\n");
@@ -181,7 +181,7 @@
         break;
 
       case PFC_KEY:
-        for (i = 0, key = self->u.key; key; i++) {
+        for (i = 0, key = self->u.key; key; ++i) {
             GETATTR_Key_next_key(interp, key, key);
         }
         /* number of key components */
@@ -376,7 +376,7 @@
     ASSERT_ARGS(PackFile_Fixup_dump)
     opcode_t i;
 
-    for (i = 0; i < ft->fixup_count; i++) {
+    for (i = 0; i < ft->fixup_count; ++i) {
         Parrot_io_printf(interp, "\t#%d\n", (int) i);
         switch (ft->fixups[i].type) {
           case enum_fixup_label:

Modified: branches/codestring/src/packfile.c
==============================================================================
--- branches/codestring/src/packfile.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/packfile.c	Mon May  3 14:39:34 2010	(r46235)
@@ -818,7 +818,7 @@
     PackFile_Constant ** const constants = find_constants(interp, ct);
     opcode_t i;
 
-    for (i = 0; i < ct->const_count; i++) {
+    for (i = 0; i < ct->const_count; ++i) {
         PMC    * pmc;
         STRING * string;
         switch (constants[i]->type) {
@@ -929,7 +929,7 @@
 
     TRACE_PRINTF(("PackFile: do_sub_pragmas (action=%d)\n", action));
 
-    for (i = 0; i < ft->fixup_count; i++) {
+    for (i = 0; i < ft->fixup_count; ++i) {
         switch (ft->fixups[i].type) {
             case enum_fixup_sub:
             {
@@ -1176,7 +1176,7 @@
     ASSERT_ARGS(PackFile_map_segments)
     size_t i;
 
-    for (i = 0; i < dir->num_segments; i++) {
+    for (i = 0; i < dir->num_segments; ++i) {
         const INTVAL ret = callback(interp, dir->segments[i], user_data);
         if (ret)
             return ret;
@@ -1207,7 +1207,7 @@
     dir->segments = mem_gc_realloc_n_typed_zeroed(interp, dir->segments,
             dir->num_segments + 1, dir->num_segments, PackFile_Segment *);
     dir->segments[dir->num_segments] = seg;
-    dir->num_segments++;
+    ++dir->num_segments;
     seg->dir = dir;
 
     return;
@@ -1238,7 +1238,7 @@
     if (dir) {
         size_t i;
 
-        for (i = 0; i < dir->num_segments; i++) {
+        for (i = 0; i < dir->num_segments; ++i) {
             PackFile_Segment *seg = dir->segments[i];
 
             if (seg) {
@@ -1282,7 +1282,7 @@
     ASSERT_ARGS(PackFile_remove_segment_by_name)
     size_t i;
 
-    for (i = 0; i < dir->num_segments; i++) {
+    for (i = 0; i < dir->num_segments; ++i) {
         PackFile_Segment * const seg = dir->segments[i];
         if (Parrot_str_equal(interp, seg->name, name)) {
             dir->num_segments--;
@@ -1537,7 +1537,7 @@
         int i;
         TRACE_PRINTF(("default_unpack: pre-fetch %d ops into data\n",
                       self->size));
-        for (i = 0; i < (int)self->size; i++) {
+        for (i = 0; i < (int)self->size; ++i) {
             self->data[i] = PF_fetch_opcode(self->pf, &cursor);
             TRACE_PRINTF(("default_unpack: transformed op[#%d]/%d %u\n",
                           i, self->size, self->data[i]));
@@ -1592,7 +1592,7 @@
         Parrot_io_printf(interp, "\n %04x:  ", (int) i);
 
     for (; i < (self->data ? self->size :
-            self->file_offset + self->op_count); i++) {
+            self->file_offset + self->op_count); ++i) {
 
         if (i % 8 == 0)
             Parrot_io_printf(interp, "\n %04x:  ", (int) i);
@@ -2027,7 +2027,7 @@
 
     Parrot_io_printf(interp, "\n\t# %d segments\n", dir->num_segments);
 
-    for (i = 0; i < dir->num_segments; i++) {
+    for (i = 0; i < dir->num_segments; ++i) {
         const PackFile_Segment * const seg = dir->segments[i];
 
         Parrot_io_printf(interp,
@@ -2042,7 +2042,7 @@
 
     Parrot_io_printf(interp, "]\n");
 
-    for (i = 0; i < dir->num_segments; i++)
+    for (i = 0; i < dir->num_segments; ++i)
         PackFile_Segment_dump(interp, dir->segments[i]);
 }
 
@@ -2076,7 +2076,7 @@
     dir->segments = mem_gc_allocate_n_zeroed_typed(interp,
             dir->num_segments, PackFile_Segment *);
 
-    for (i = 0; i < dir->num_segments; i++) {
+    for (i = 0; i < dir->num_segments; ++i) {
         PackFile_Segment *seg;
         char             *buf;
         STRING           *name;
@@ -2155,7 +2155,7 @@
                       offs, pf->src, cursor));
 
     /* and now unpack contents of dir */
-    for (i = 0; cursor && i < dir->num_segments; i++) {
+    for (i = 0; cursor && i < dir->num_segments; ++i) {
         const opcode_t * const csave = cursor;
 
         /* check len again */
@@ -2223,7 +2223,7 @@
     PackFile_Directory * const dir = (PackFile_Directory *)self;
     size_t i;
 
-    for (i = 0; i < dir->num_segments; i++) {
+    for (i = 0; i < dir->num_segments; ++i) {
         PackFile_Segment *segment = dir->segments[i];
         /* Prevent repeated destruction */
         dir->segments[i] = NULL;
@@ -2260,7 +2260,7 @@
     if (seg->type != PF_BYTEC_SEG) {
         size_t i;
 
-        for (i = 1; i < num_segs; i++) {
+        for (i = 1; i < num_segs; ++i) {
             PackFile_Segment * const s2 = dir->segments[i];
             if (s2->type == PF_BYTEC_SEG) {
                 dir->segments[0] = s2;
@@ -2275,7 +2275,7 @@
     if (seg->type != PF_FIXUP_SEG) {
         size_t i;
 
-        for (i = 2; i < num_segs; i++) {
+        for (i = 2; i < num_segs; ++i) {
             PackFile_Segment * const s2 = dir->segments[i];
             if (s2->type == PF_FIXUP_SEG) {
                 dir->segments[1] = s2;
@@ -2295,7 +2295,7 @@
     if (seg->type != PF_CONST_SEG) {
         size_t i;
 
-        for (i = 3; i < num_segs; i++) {
+        for (i = 3; i < num_segs; ++i) {
             PackFile_Segment * const s2 = dir->segments[i];
             if (s2->type == PF_CONST_SEG) {
                 dir->segments[2] = s2;
@@ -2334,7 +2334,7 @@
     /* number of segments + default, we need it for the offsets */
     size = 1 + default_packed_size(self);
 
-    for (i = 0; i < dir->num_segments; i++) {
+    for (i = 0; i < dir->num_segments; ++i) {
         char *name = Parrot_str_to_cstring(interp, dir->segments[i]->name);
         /* type, offset, size */
         size += 3;
@@ -2346,7 +2346,7 @@
     if (align && size % align)
         size += (align - size % align);
 
-    for (i = 0; i < dir->num_segments; i++) {
+    for (i = 0; i < dir->num_segments; ++i) {
         size_t seg_size;
 
         dir->segments[i]->file_offset = size + self->file_offset;
@@ -2413,9 +2413,8 @@
       cursor += align - (cursor - self->pf->src) % align;*/
 
     /* now pack all segments into new format */
-    for (i = 0; i < dir->num_segments; i++) {
+    for (i = 0; i < dir->num_segments; ++i) {
         PackFile_Segment * const seg = dir->segments[i];
-
         cursor = PackFile_Segment_pack(interp, seg, cursor);
     }
 
@@ -2718,7 +2717,7 @@
     *cursor++ = n;
 
     /* Now store each mapping. */
-    for (i = 0; i < n; i++) {
+    for (i = 0; i < n; ++i) {
         /* Bytecode offset and filename. */
         *cursor++ = debug->mappings[i].offset;
         *cursor++ = debug->mappings[i].filename;
@@ -2764,7 +2763,7 @@
             debug->num_mappings, PackFile_DebugFilenameMapping);
 
     /* Read in each mapping. */
-    for (i = 0; i < debug->num_mappings; i++) {
+    for (i = 0; i < debug->num_mappings; ++i) {
         /* Get offset and filename type. */
         debug->mappings[i].offset   = PF_fetch_opcode(self->pf, &cursor);
         debug->mappings[i].filename = PF_fetch_opcode(self->pf, &cursor);
@@ -2809,7 +2808,7 @@
     default_dump_header(interp, self);
 
     Parrot_io_printf(interp, "\n  mappings => [\n");
-    for (i = 0; i < debug->num_mappings; i++) {
+    for (i = 0; i < debug->num_mappings; ++i) {
         Parrot_io_printf(interp, "    #%d\n    [\n", i);
         Parrot_io_printf(interp, "        OFFSET => %d,\n",
                    debug->mappings[i].offset);
@@ -2919,7 +2918,7 @@
         /* Find the right place and shift stuff that's after it. */
         int i;
 
-        for (i = 0; i < debug->num_mappings; i++) {
+        for (i = 0; i < debug->num_mappings; ++i) {
             if (debug->mappings[i].offset > offset) {
                 insert_pos = i;
                 memmove(debug->mappings + i + 1, debug->mappings + i,
@@ -2995,7 +2994,7 @@
        bytecode offset. */
 
     int i;
-    for (i = 0; i < debug->num_mappings; i++) {
+    for (i = 0; i < debug->num_mappings; ++i) {
         /* If this is the last mapping or the current position is
            between this mapping and the next one, return a filename. */
        if (i + 1                          == debug->num_mappings
@@ -3032,14 +3031,14 @@
     opcode_t n;
 
     /* TODO make an index of code segments for faster look up */
-    for (i = n = 0; i < num_segs; i++) {
+    for (i = n = 0; i < num_segs; ++i) {
         if (dir->segments[i]->type == PF_BYTEC_SEG) {
             if (n == seg) {
                 Parrot_switch_to_cs(interp, (PackFile_ByteCode *)
                         dir->segments[i], 1);
                 return;
             }
-            n++;
+            ++n;
         }
     }
 
@@ -3278,7 +3277,7 @@
 
     if (self->fixup_count) {
         opcode_t i;
-        for (i = 0; i < self->fixup_count; i++) {
+        for (i = 0; i < self->fixup_count; ++i) {
             mem_gc_free(interp, self->fixups[i].name);
             self->fixups[i].name = NULL;
         }
@@ -3328,14 +3327,14 @@
     size_t                      size = 1;
     opcode_t i;
 
-    for (i = 0; i < ft->fixup_count; i++) {
+    for (i = 0; i < ft->fixup_count; ++i) {
         /* fixup_entry type */
-        size++;
+        ++size;
         switch (ft->fixups[i].type) {
           case enum_fixup_label:
           case enum_fixup_sub:
             size += PF_size_cstring(ft->fixups[i].name);
-            size ++; /* offset */
+            ++size; /* offset */
             break;
           case enum_fixup_none:
             break;
@@ -3371,7 +3370,7 @@
 
     *cursor++ = ft->fixup_count;
 
-    for (i = 0; i < ft->fixup_count; i++) {
+    for (i = 0; i < ft->fixup_count; ++i) {
         *cursor++ = (opcode_t) ft->fixups[i].type;
         switch (ft->fixups[i].type) {
           case enum_fixup_label:
@@ -3465,7 +3464,7 @@
         }
     }
 
-    for (i = 0; i < self->fixup_count; i++) {
+    for (i = 0; i < self->fixup_count; ++i) {
         PackFile_FixupEntry * const entry = self->fixups + i;
 
         entry->type = PF_fetch_opcode(pf, &cursor);
@@ -3555,7 +3554,7 @@
 {
     ASSERT_ARGS(find_fixup)
     opcode_t i;
-    for (i = 0; i < ft->fixup_count; i++) {
+    for (i = 0; i < ft->fixup_count; ++i) {
         if ((INTVAL)((enum_fixup_t)ft->fixups[i].type) == type
         &&  STREQ(ft->fixups[i].name, name)) {
             return ft->fixups + i;
@@ -3662,7 +3661,7 @@
     ASSERT_ARGS(PackFile_ConstTable_clear)
     opcode_t i;
 
-    for (i = 0; i < self->const_count; i++) {
+    for (i = 0; i < self->const_count; ++i) {
         PackFile_Constant_destroy(interp, self->constants[i]);
         self->constants[i] = NULL;
     }
@@ -3726,7 +3725,7 @@
         return NULL;
     }
 
-    for (i = 0; i < self->const_count; i++) {
+    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);
@@ -3840,7 +3839,7 @@
 /*
 
 =item C<size_t PackFile_Constant_pack_size(PARROT_INTERP, const
-PackFile_Constant *self)>
+PackFile_Constant *self, const PackFile_ConstTable *ct)>
 
 Determines the size of the buffer needed in order to pack the PackFile Constant
 into a contiguous region of memory.
@@ -3852,7 +3851,8 @@
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
 size_t
-PackFile_Constant_pack_size(PARROT_INTERP, ARGIN(const PackFile_Constant *self))
+PackFile_Constant_pack_size(PARROT_INTERP, ARGIN(const PackFile_Constant *self), ARGIN(const
+    PackFile_ConstTable *ct))
 {
     ASSERT_ARGS(PackFile_Constant_pack_size)
     PMC    *component;
@@ -3878,7 +3878,7 @@
 
       case PFC_PMC:
         component = self->u.key; /* the pmc (Sub, ...) */
-        packed_size = PF_size_strlen(Parrot_freeze_size(interp, component));
+        packed_size = PF_size_strlen(Parrot_freeze_pbc_size(interp, component, ct));
         break;
 
       default:
@@ -3981,7 +3981,7 @@
     interp->code                      = pf->cur_cs;
     image                             = PF_fetch_string(interp, pf, &cursor);
 
-    pmc         = Parrot_thaw_constants(interp, image);
+    pmc         = Parrot_thaw_pbc(interp, image, constt);
 
     /* place item in const_table */
     self->type  = PFC_PMC;
@@ -4123,7 +4123,7 @@
 
     /* Free any keys. */
     if (self->keys) {
-        for (i = 0; i < self->num_keys; i++)
+        for (i = 0; i < self->num_keys; ++i)
             mem_gc_free(interp, self->keys[i]);
 
         mem_gc_free(interp, self->keys);
@@ -4131,14 +4131,14 @@
 
     /* Free any groups. */
     if (self->groups) {
-        for (i = 0; i < self->num_groups; i++)
+        for (i = 0; i < self->num_groups; ++i)
             mem_gc_free(interp, self->groups[i]);
         mem_gc_free(interp, self->groups);
     }
 
     /* Free any entries. */
     if (self->entries) {
-        for (i = 0; i < self->num_entries; i++)
+        for (i = 0; i < self->num_entries; ++i)
             mem_gc_free(interp, self->entries[i]);
         mem_gc_free(interp, self->entries);
     }
@@ -4194,7 +4194,7 @@
     /* Write key count and any keys. */
     *cursor++ = self->num_keys;
 
-    for (i = 0; i < self->num_keys; i++) {
+    for (i = 0; i < self->num_keys; ++i) {
         const PackFile_Annotations_Key * const key = self->keys[i];
         *cursor++ = key->name;
         *cursor++ = key->type;
@@ -4203,7 +4203,7 @@
     /* Write group count and any groups. */
     *cursor++ = self->num_groups;
 
-    for (i = 0; i < self->num_groups; i++) {
+    for (i = 0; i < self->num_groups; ++i) {
         const PackFile_Annotations_Group * const group = self->groups[i];
         *cursor++ = group->bytecode_offset;
         *cursor++ = group->entries_offset;
@@ -4212,7 +4212,7 @@
     /* Write entry count and any entries. */
     *cursor++ = self->num_entries;
 
-    for (i = 0; i < self->num_entries; i++) {
+    for (i = 0; i < self->num_entries; ++i) {
         const PackFile_Annotations_Entry * const entry = self->entries[i];
         *cursor++ = entry->bytecode_offset;
         *cursor++ = entry->key;
@@ -4257,7 +4257,7 @@
     self->keys     = mem_gc_allocate_n_zeroed_typed(interp,
             self->num_keys, PackFile_Annotations_Key *);
 
-    for (i = 0; i < self->num_keys; i++) {
+    for (i = 0; i < self->num_keys; ++i) {
         PackFile_Annotations_Key * const key = self->keys[i] =
                 mem_gc_allocate_zeroed_typed(interp, PackFile_Annotations_Key);
         key->name = PF_fetch_opcode(seg->pf, &cursor);
@@ -4271,7 +4271,7 @@
     self->groups     = mem_gc_allocate_n_zeroed_typed(interp,
             self->num_groups, PackFile_Annotations_Group *);
 
-    for (i = 0; i < self->num_groups; i++) {
+    for (i = 0; i < self->num_groups; ++i) {
         PackFile_Annotations_Group * const group =
             self->groups[i] = mem_gc_allocate_zeroed_typed(interp,
                     PackFile_Annotations_Group);
@@ -4287,7 +4287,7 @@
     self->num_entries = PF_fetch_opcode(seg->pf, &cursor);
     self->entries     = mem_gc_allocate_n_zeroed_typed(interp,
             self->num_entries, PackFile_Annotations_Entry *);
-    for (i = 0; i < self->num_entries; i++) {
+    for (i = 0; i < self->num_entries; ++i) {
         PackFile_Annotations_Entry * const entry =
             self->entries[i]   = mem_gc_allocate_zeroed_typed(interp,
                     PackFile_Annotations_Entry);
@@ -4337,7 +4337,7 @@
 
     /* Dump keys. */
     Parrot_io_printf(interp, "\n  keys => [\n");
-    for (i = 0; i < self->num_keys; i++) {
+    for (i = 0; i < self->num_keys; ++i) {
         const PackFile_Annotations_Key * const key = self->keys[i];
         Parrot_io_printf(interp, "    #%d\n    [\n", i);
         Parrot_io_printf(interp, "        NAME => %Ss\n",
@@ -4354,7 +4354,7 @@
 
     /* Dump groups. */
     Parrot_io_printf(interp, "\n  groups => [\n");
-    for (i = 0; i < self->num_groups; i++) {
+    for (i = 0; i < self->num_groups; ++i) {
         const PackFile_Annotations_Group * const group = self->groups[i];
         Parrot_io_printf(interp, "    #%d\n    [\n", i);
         Parrot_io_printf(interp, "        BYTECODE_OFFSET => %d\n",
@@ -4369,7 +4369,7 @@
     /* Dump entries. */
     Parrot_io_printf(interp, "\n  entries => [\n");
 
-    for (i = 0; i < self->num_entries; i++) {
+    for (i = 0; i < self->num_entries; ++i) {
         const PackFile_Annotations_Entry * const entry = self->entries[i];
         Parrot_io_printf(interp, "    #%d\n    [\n", i);
         Parrot_io_printf(interp, "        BYTECODE_OFFSET => %d\n",
@@ -4420,7 +4420,7 @@
     group->entries_offset  = self->num_entries;
 
     /* Increment group count. */
-    self->num_groups++;
+    ++self->num_groups;
 }
 
 
@@ -4451,7 +4451,7 @@
     opcode_t key_id   = -1;
     INTVAL   i;
 
-    for (i = 0; i < self->num_keys; i++) {
+    for (i = 0; i < self->num_keys; ++i) {
         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;
@@ -4470,7 +4470,7 @@
 
         key_id             = self->num_keys;
         self->keys[key_id] = mem_gc_allocate_typed(interp, PackFile_Annotations_Key);
-        self->num_keys++;
+        ++self->num_keys;
 
         /* Populate it. */
         self->keys[key_id]->name = key;
@@ -4499,7 +4499,7 @@
     self->entries[self->num_entries]->key             = key_id;
     self->entries[self->num_entries]->value           = value;
 
-    self->num_entries++;
+    ++self->num_entries;
 }
 
 
@@ -4525,8 +4525,7 @@
 
     switch (type) {
       case PF_ANNOTATION_KEY_TYPE_INT:
-        result = Parrot_pmc_new(interp, enum_class_Integer);
-        VTABLE_set_integer_native(interp, result, value);
+        result = Parrot_pmc_new_init_int(interp, enum_class_Integer, value);
         break;
       case PF_ANNOTATION_KEY_TYPE_NUM:
         result = Parrot_pmc_new(interp, enum_class_Float);
@@ -4572,7 +4571,7 @@
     opcode_t key_id = -1;
 
     if (!STRING_IS_NULL(key)) {
-        for (i = 0; i < self->num_keys; i++) {
+        for (i = 0; i < self->num_keys; ++i) {
             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;
@@ -4585,7 +4584,7 @@
     }
 
     /* Use groups to find search start point. */
-    for (i = 0; i < self->num_groups; i++)
+    for (i = 0; i < self->num_groups; ++i)
         if (offset < self->groups[i]->bytecode_offset)
             break;
         else
@@ -4599,7 +4598,7 @@
         opcode_t *have_values   = mem_gc_allocate_n_zeroed_typed(interp,
                 self->num_keys, opcode_t);
 
-        for (i = start_entry; i < self->num_entries; i++) {
+        for (i = start_entry; i < self->num_entries; ++i) {
             if (self->entries[i]->bytecode_offset >= offset)
                 break;
 
@@ -4610,7 +4609,7 @@
         /* Create hash of values we have. */
         result = Parrot_pmc_new(interp, enum_class_Hash);
 
-        for (i = 0; i < self->num_keys; i++) {
+        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;
                 VTABLE_set_pmc_keyed_str(interp, result, key_name,
@@ -4627,7 +4626,7 @@
         opcode_t latest_value = 0;
         opcode_t found_value  = 0;
 
-        for (i = start_entry; i < self->num_entries; i++) {
+        for (i = start_entry; i < self->num_entries; ++i) {
             if (self->entries[i]->bytecode_offset >= offset)
                 break;
 

Modified: branches/codestring/src/packfile/pf_items.c
==============================================================================
--- branches/codestring/src/packfile/pf_items.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/packfile/pf_items.c	Mon May  3 14:39:34 2010	(r46235)
@@ -323,7 +323,7 @@
         dest[7] |= 0x80;
     /* long double frac 63 bits => 52 bits
        src[7] &= 0x7f; reset integer bit */
-    for (i = 0; i < 6; i++) {
+    for (i = 0; i < 6; ++i) {
         dest[i+1] |= (i==5 ? src[7]&0x7f : src[i+2]) >> 3;
         dest[i] |= (src[i+2] & 0x1f) << 5;
     }
@@ -552,7 +552,7 @@
             dest[7] |= 0x80;
         /* long double frac 112 bits => 52 bits
            src[13] &= 0x7f; reset integer bit */
-        for (i = 0; i < 6; i++) {
+        for (i = 0; i < 6; ++i) {
             dest[i+1] |= (i==5 ? src[13]&0x7f : src[i+7]) >> 3;
             dest[i] |= (src[i+7] & 0x1f) << 5;
         }

Modified: branches/codestring/src/packout.c
==============================================================================
--- branches/codestring/src/packout.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/packout.c	Mon May  3 14:39:34 2010	(r46235)
@@ -112,7 +112,7 @@
     padding_size = 16 - (PACKFILE_HEADER_BYTES + self->header->uuid_size) % 16;
     if (padding_size < 16) {
         int i;
-        for (i = 0; i < padding_size; i++)
+        for (i = 0; i < padding_size; ++i)
             *byte_cursor++ = 0;
     }
     else {
@@ -162,8 +162,8 @@
     const PackFile_ConstTable* const self = (const PackFile_ConstTable *) seg;
     size_t size = 1;    /* const_count */
 
-    for (i = 0; i < self->const_count; i++)
-        size += PackFile_Constant_pack_size(interp, self->constants[i]);
+    for (i = 0; i < self->const_count; ++i)
+        size += PackFile_Constant_pack_size(interp, self->constants[i], self);
     return size;
 }
 
@@ -197,7 +197,7 @@
 
     *cursor++ = self->const_count;
 
-    for (i = 0; i < self->const_count; i++)
+    for (i = 0; i < self->const_count; ++i)
         cursor = PackFile_Constant_pack(interp, self, self->constants[i], cursor);
 
     return cursor;
@@ -228,7 +228,7 @@
     GETATTR_Key_str_key(interp, key, key_str);
     GETATTR_Key_num_key(interp, key, key_num);
 
-    for (i = 0; i < ct->const_count; i++) {
+    for (i = 0; i < ct->const_count; ++i) {
         if (type == PFC_STRING && ct->constants[i]->u.string == key_str)
             return i;
         if (type == PFC_NUMBER && ct->constants[i]->u.number == key_num)
@@ -286,12 +286,12 @@
 
       case PFC_PMC:
         key = self->u.key;      /* the (Sub) PMC */
-        image = Parrot_freeze(interp, key);
+        image = Parrot_freeze_pbc(interp, key, const_table);
         cursor = PF_store_string(cursor, image);
         break;
 
       case PFC_KEY:
-        for (i = 0, key = self->u.key; key; i++){
+        for (i = 0, key = self->u.key; key; ++i){
             GETATTR_Key_next_key(interp, key, key);
         }
 

Modified: branches/codestring/src/pbc_dump.c
==============================================================================
--- branches/codestring/src/pbc_dump.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pbc_dump.c	Mon May  3 14:39:34 2010	(r46235)
@@ -124,7 +124,7 @@
         /* trace_op_dump(interp, self->pf->src, pc); */
         Parrot_io_printf(interp, " %04x:  ", (int)(pc - self->data));
 
-        for (i = 0; i < 6; i++)
+        for (i = 0; i < 6; ++i)
             if (i < n)
                 Parrot_io_printf(interp, "%08lx ", (unsigned long)pc[i]);
             else
@@ -210,7 +210,7 @@
     const PackFile_Directory * const dir = (const PackFile_Directory *)self;
     size_t i;
 
-    for (i = 0; i < dir->num_segments; i++)
+    for (i = 0; i < dir->num_segments; ++i)
         self->pf->PackFuncs[dir->segments[i]->type].dump(interp, dir->segments[i]);
 }
 
@@ -440,7 +440,7 @@
     if (nums_only) {
         int i;
 
-        for (i = PF_DIR_SEG + 1; i < PF_MAX_SEG; i++)
+        for (i = PF_DIR_SEG + 1; i < PF_MAX_SEG; ++i)
             pf->PackFuncs[i].dump = null_dump;
 
         pf->PackFuncs[PF_DIR_SEG].dump   = null_dir_dump;

Modified: branches/codestring/src/pbc_merge.c
==============================================================================
--- branches/codestring/src/pbc_merge.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pbc_merge.c	Mon May  3 14:39:34 2010	(r46235)
@@ -325,7 +325,7 @@
     }
 
     /* Loop over input files. */
-    for (i = 0; i < num_inputs; i++) {
+    for (i = 0; i < num_inputs; ++i) {
         /* Get the bytecode segment from the input file. */
         PackFile_ByteCode * const in_seg = inputs[i]->pf->cur_cs;
         if (in_seg == NULL) {
@@ -393,7 +393,7 @@
     }
 
     /* Loop over input files. */
-    for (i = 0; i < num_inputs; i++) {
+    for (i = 0; i < num_inputs; ++i) {
 
         /* Get the constant table segment from the input file. */
         PackFile_ConstTable * const in_seg = inputs[i]->pf->cur_cs->const_table;
@@ -414,7 +414,7 @@
                     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++) {
+        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,
@@ -439,12 +439,12 @@
             }
 
             inputs[i]->const_map[input_const_num] = output_const_num;
-            input_const_num++;
-            output_const_num++;
+            ++input_const_num;
+            ++output_const_num;
 
             /* Slot it into the list. */
             constants[cursor] = copy;
-            cursor++;
+            ++cursor;
         }
     }
 
@@ -488,7 +488,7 @@
     }
 
     /* Loop over input files. */
-    for (i = 0; i < num_inputs; i++) {
+    for (i = 0; i < num_inputs; ++i) {
         /* Get the fixup segment from the input file. */
         PackFile_FixupTable * const in_seg = inputs[i]->pf->cur_cs->fixups;
         int j;
@@ -508,7 +508,7 @@
 
         /* Loop over the fixups and copy them to the output PBC, correcting
            the offsets into the bytecode. */
-        for (j = 0; j < in_seg->fixup_count; j++) {
+        for (j = 0; j < in_seg->fixup_count; ++j) {
             /* Get the entry and allocate space for copies. */
             const PackFile_FixupEntry * const cur_entry = in_seg->fixups + j;
             PackFile_FixupEntry * const copy =
@@ -536,7 +536,7 @@
 
             /* Slot it into the list. */
             fixups[cursor] = *copy;
-            cursor++;
+            ++cursor;
         }
     }
 
@@ -576,7 +576,7 @@
     /* We need to merge both the mappings and the list of line numbers.
        The line numbers can just be concatenated. The mappings must have
        their offsets fixed up. */
-    for (i = 0; i < num_inputs; i++) {
+    for (i = 0; i < num_inputs; ++i) {
         const PackFile_Debug * const in_seg = inputs[i]->pf->cur_cs->debugs;
         int j;
 
@@ -592,7 +592,7 @@
                 num_mappings + in_seg->num_mappings,
                 PackFile_DebugFilenameMapping);
 
-        for (j = 0; j < in_seg->num_mappings; j++) {
+        for (j = 0; j < in_seg->num_mappings; ++j) {
             PackFile_DebugFilenameMapping *mapping = mappings + num_mappings + j;
 
             STRUCT_COPY_FROM_STRUCT(mapping, in_seg->mappings[j]);
@@ -647,16 +647,16 @@
         /* Keep track of the current input file. */
         if (cur_input + 1 < num_inputs &&
             cur_op >= inputs[cur_input + 1]->code_start)
-            cur_input++;
+            ++cur_input;
 
         /* Get info about this op and jump over it. */
         op_num = ops[cur_op];
         op     = &interp->op_info_table[op_num];
         op_ptr = ops + cur_op;
-        cur_op++;
+        ++cur_op;
 
         /* Loop over the arguments. */
-        for (cur_arg = 1; cur_arg < op->op_count; cur_arg++) {
+        for (cur_arg = 1; cur_arg < op->op_count; ++cur_arg) {
             /* Pick out any indexes into the constant table and correct them. */
             switch (op->types[cur_arg - 1]) {
                 case PARROT_ARG_NC:
@@ -671,7 +671,7 @@
             }
 
             /* Move along the bytecode array. */
-            cur_op++;
+            ++cur_op;
         }
 
         /* Handle special case variable argument opcodes. */
@@ -684,7 +684,7 @@
 
             /* Loop over the arguments to locate any that need a fixup. */
             const int sig_items = VTABLE_elements(interp, sig);
-            for (cur_arg = 0; cur_arg < sig_items; cur_arg++) {
+            for (cur_arg = 0; cur_arg < sig_items; ++cur_arg) {
                 switch (VTABLE_get_integer_keyed_int(interp, sig, cur_arg)) {
                     case PARROT_ARG_NC:
                     case PARROT_ARG_PC:
@@ -696,7 +696,7 @@
                     default:
                         break;
                 }
-                cur_op++;
+                ++cur_op;
             }
         }
     }
@@ -731,10 +731,10 @@
     }
 
     /* calculate how many constants are stored in the packfiles to be merged */
-    for (i = 0; i < num_inputs; i++) {
+    for (i = 0; i < num_inputs; ++i) {
         PackFile_Directory *pf_dir = &inputs[i]->pf->directory;
         unsigned int j = 0;
-        for (j = 0; j < pf_dir->num_segments; j++) {
+        for (j = 0; j < pf_dir->num_segments; ++j) {
             PackFile_Segment *seg = (PackFile_Segment *)pf_dir->segments[j];
             if (seg->type == PF_CONST_SEG) {
                 opcode_t const_count = ((PackFile_ConstTable *)seg)->const_count;
@@ -755,7 +755,7 @@
     /* Walk bytecode and fix ops that reference the constants table. */
     pbc_merge_ctpointers(interp, inputs, num_inputs, bc);
 
-    for (i = 0; i < num_inputs; i++) {
+    for (i = 0; i < num_inputs; ++i) {
         mem_gc_free(interp, inputs[i]->const_map);
     }
 
@@ -861,7 +861,7 @@
        structure for each of them. */
     input_files = mem_gc_allocate_n_typed(interp, argc, pbc_merge_input*);
 
-    for (i = 0; i < argc; i++) {
+    for (i = 0; i < argc; ++i) {
         /* Allocate a struct. */
         input_files[i] = mem_gc_allocate_typed(interp, pbc_merge_input);
 
@@ -879,7 +879,7 @@
         }
 
         /* Next file. */
-        argv++;
+        ++argv;
     }
 
     /* Merge. */

Modified: branches/codestring/src/pmc/callcontext.pmc
==============================================================================
--- branches/codestring/src/pmc/callcontext.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/callcontext.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -30,7 +30,6 @@
     INTVAL type;
 } Pcc_cell;
 
-/* mask off lower two bits (1 + 2 = 3) for pointer tags */
 #define NOCELL     0
 #define INTCELL    1
 #define FLOATCELL  2
@@ -383,7 +382,7 @@
         UINTVAL i, j = 0;
         result = Parrot_pmc_new_init_int(interp, enum_class_FixedStringArray, hash->entries);
 
-        for (i = 0; i <= hash->mask; i++) {
+        for (i = 0; i <= hash->mask; ++i) {
             HashBucket *b = hash->bi[i];
 
             while (b) {
@@ -580,7 +579,7 @@
         if (hash) {
             UINTVAL i;
 
-            for (i = 0; i <= hash->mask; i++) {
+            for (i = 0; i <= hash->mask; ++i) {
                 HashBucket *b = hash->bi[i];
 
                 while (b) {
@@ -618,7 +617,7 @@
         if (hash) {
             UINTVAL i;
 
-            for (i = 0; i <= hash->mask; i++) {
+            for (i = 0; i <= hash->mask; ++i) {
                 HashBucket *b = hash->bi[i];
 
                 while (b) {
@@ -1020,7 +1019,7 @@
         GET_ATTR_positionals(INTERP, SELF, cells);
         retval = autobox_pmc(INTERP, &cells[0]);
 
-        for (i = 1; i < size; i++)
+        for (i = 1; i < size; ++i)
             cells[i - 1] = cells[i];
 
         SET_ATTR_num_positionals(INTERP, SELF, size - 1);
@@ -1041,7 +1040,7 @@
         GET_ATTR_positionals(INTERP, SELF, cells);
         retval = autobox_string(INTERP, &cells[0]);
 
-        for (i = 1; i < size; i++)
+        for (i = 1; i < size; ++i)
             cells[i - 1] = cells[i];
 
         SET_ATTR_num_positionals(INTERP, SELF, size - 1);

Modified: branches/codestring/src/pmc/class.pmc
==============================================================================
--- branches/codestring/src/pmc/class.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/class.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -208,7 +208,7 @@
         /* Insert into hash, along with index. */
         VTABLE_set_integer_keyed_str(interp, attrib_index, full_key, cur_index);
         VTABLE_set_integer_keyed_str(interp, class_cache, attrib_name, cur_index);
-        cur_index++;
+        ++cur_index;
     }
 
     return cur_index;
@@ -228,7 +228,7 @@
     int                  i;
 
     /* Go over the list of all parents to construct the attribute index. */
-    for (i = 0; i < num_classes; i++) {
+    for (i = 0; i < num_classes; ++i) {
        /* Get the class and check that it respects the standard class interface
         * (if not we don't know how it stores its attributes, so we'll have to
         * delegate the lookup). */
@@ -352,7 +352,7 @@
         const int  parent_count = VTABLE_elements(interp, parent_list);
         int i;
 
-        for (i = 0; i < parent_count; i++)
+        for (i = 0; i < parent_count; ++i)
             VTABLE_add_parent(interp, self,
                 VTABLE_get_pmc_keyed_int(interp, parent_list, i));
     }
@@ -365,7 +365,7 @@
         const int   role_count = VTABLE_elements(interp, role_list);
         int i;
 
-        for (i = 0; i < role_count; i++)
+        for (i = 0; i < role_count; ++i)
             VTABLE_add_role(interp, self,
                 VTABLE_get_pmc_keyed_int(interp, role_list, i));
     }
@@ -378,7 +378,7 @@
         const int   attrib_count    = VTABLE_elements(interp, attrs_name_list);
         int i;
 
-        for (i = 0; i < attrib_count; i++) {
+        for (i = 0; i < attrib_count; ++i) {
             STRING * const attr_name = VTABLE_get_string_keyed_int(interp,
                 attrs_name_list, i);
             VTABLE_add_attribute(interp, self, attr_name, PMCNULL);
@@ -415,7 +415,7 @@
     STRING * const name  = CONST_STRING(interp, "init");
 
     /* Loop through the parents in reverse MRO order. */
-    for (; parent_index >= 0; parent_index--) {
+    for (; parent_index >= 0; --parent_index) {
         PMC *meth;
         PMC * const parent = VTABLE_get_pmc_keyed_int(interp,
             all_parents, parent_index);
@@ -445,7 +445,7 @@
     STRING * const name  = CONST_STRING(interp, "init_pmc");
 
     /* Loop through the parents in reverse MRO order. */
-    for (; parent_index >= 0; parent_index--) {
+    for (; parent_index >= 0; --parent_index) {
         PMC *meth;
         PMC * const parent = VTABLE_get_pmc_keyed_int(interp,
             all_parents, parent_index);
@@ -586,23 +586,23 @@
         PObj_custom_mark_SET(SELF);
 
         /* Set up the object. */
-        _class->name            = CONST_STRING(interp, "");
+        _class->name            = CONST_STRING(INTERP, "");
         _class->_namespace      = PMCNULL;
-        _class->parents         = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
-        _class->all_parents     = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
-        _class->roles           = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
-        _class->methods         = Parrot_pmc_new(interp, enum_class_Hash);
-        _class->attrib_metadata = Parrot_pmc_new(interp, enum_class_Hash);
+        _class->parents         = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+        _class->all_parents     = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+        _class->roles           = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+        _class->methods         = Parrot_pmc_new(INTERP, enum_class_Hash);
+        _class->attrib_metadata = Parrot_pmc_new(INTERP, enum_class_Hash);
         _class->attrib_index    = PMCNULL;
         _class->attrib_cache    = PMCNULL;
         _class->meth_cache      = PMCNULL;
-        _class->resolve_method  = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+        _class->resolve_method  = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
 
-        _class->vtable_overrides = Parrot_pmc_new(interp, enum_class_Hash);
-        _class->parent_overrides = Parrot_pmc_new(interp, enum_class_Hash);
+        _class->vtable_overrides = Parrot_pmc_new(INTERP, enum_class_Hash);
+        _class->parent_overrides = Parrot_pmc_new(INTERP, enum_class_Hash);
 
         /* We put ourself on the all parents list. */
-        VTABLE_push_pmc(interp, _class->all_parents, SELF);
+        VTABLE_push_pmc(INTERP, _class->all_parents, SELF);
 
         /* We are a class. */
         PObj_is_class_SET(SELF);
@@ -613,8 +613,8 @@
 
     VTABLE void init_pmc(PMC *init_data) {
         PMC           *arg;
-        const INTVAL   arg_type = VTABLE_type(interp, init_data);
-        STRING * const name_str = CONST_STRING(interp, "name");
+        const INTVAL   arg_type = VTABLE_type(INTERP, init_data);
+        STRING * const name_str = CONST_STRING(INTERP, "name");
 
         /* Set up the object. */
         SELF.init();
@@ -626,8 +626,8 @@
           case enum_class_ResizableStringArray:
           case enum_class_NameSpace:
             /* set only the name property */
-            arg = Parrot_pmc_new(interp, enum_class_Hash);
-            VTABLE_set_pmc_keyed_str(interp, arg, name_str, init_data);
+            arg = Parrot_pmc_new(INTERP, enum_class_Hash);
+            VTABLE_set_pmc_keyed_str(INTERP, arg, name_str, init_data);
             break;
 
           case enum_class_Hash:
@@ -636,15 +636,15 @@
 
             /* slow attempt to determine init_data type */
           default:
-            if (VTABLE_isa(interp, init_data, CONST_STRING(interp, "String"))
-             || VTABLE_isa(interp, init_data, CONST_STRING(interp, "Key"))
-             || VTABLE_isa(interp, init_data, CONST_STRING(interp, "ResizableStringArray"))) {
+            if (VTABLE_isa(INTERP, init_data, CONST_STRING(INTERP, "String"))
+             || VTABLE_isa(INTERP, init_data, CONST_STRING(INTERP, "Key"))
+             || VTABLE_isa(INTERP, init_data, CONST_STRING(INTERP, "ResizableStringArray"))) {
                 /* set only the name property */
-                arg = Parrot_pmc_new(interp, enum_class_Hash);
-                VTABLE_set_pmc_keyed_str(interp, arg, name_str, init_data);
+                arg = Parrot_pmc_new(INTERP, enum_class_Hash);
+                VTABLE_set_pmc_keyed_str(INTERP, arg, name_str, init_data);
             }
 
-            if (VTABLE_isa(interp, init_data, CONST_STRING(interp, "Hash")))
+            if (VTABLE_isa(INTERP, init_data, CONST_STRING(INTERP, "Hash")))
                 arg = init_data;
             else
                 Parrot_ex_throw_from_c_args(INTERP, NULL,
@@ -654,7 +654,7 @@
         }
 
         /* Initialize the class with the supplied data. */
-        init_class_from_hash(interp, SELF, arg);
+        init_class_from_hash(INTERP, SELF, arg);
     }
 
 /*
@@ -668,7 +668,7 @@
 */
 
     VTABLE STRING *get_string() {
-        return make_class_name(interp, SELF);
+        return make_class_name(INTERP, SELF);
     }
 
 /*
@@ -683,20 +683,20 @@
 
     VTABLE void mark() {
         Parrot_Class_attributes * const _class = PARROT_CLASS(SELF);
-        Parrot_gc_mark_STRING_alive(interp, _class->name);
-        Parrot_gc_mark_STRING_alive(interp, _class->fullname);
-        Parrot_gc_mark_PMC_alive(interp, _class->_namespace);
-        Parrot_gc_mark_PMC_alive(interp, _class->parents);
-        Parrot_gc_mark_PMC_alive(interp, _class->all_parents);
-        Parrot_gc_mark_PMC_alive(interp, _class->roles);
-        Parrot_gc_mark_PMC_alive(interp, _class->methods);
-        Parrot_gc_mark_PMC_alive(interp, _class->vtable_overrides);
-        Parrot_gc_mark_PMC_alive(interp, _class->parent_overrides);
-        Parrot_gc_mark_PMC_alive(interp, _class->attrib_metadata);
-        Parrot_gc_mark_PMC_alive(interp, _class->attrib_index);
-        Parrot_gc_mark_PMC_alive(interp, _class->attrib_cache);
-        Parrot_gc_mark_PMC_alive(interp, _class->resolve_method);
-        Parrot_gc_mark_PMC_alive(interp, _class->meth_cache);
+        Parrot_gc_mark_STRING_alive(INTERP, _class->name);
+        Parrot_gc_mark_STRING_alive(INTERP, _class->fullname);
+        Parrot_gc_mark_PMC_alive(INTERP, _class->_namespace);
+        Parrot_gc_mark_PMC_alive(INTERP, _class->parents);
+        Parrot_gc_mark_PMC_alive(INTERP, _class->all_parents);
+        Parrot_gc_mark_PMC_alive(INTERP, _class->roles);
+        Parrot_gc_mark_PMC_alive(INTERP, _class->methods);
+        Parrot_gc_mark_PMC_alive(INTERP, _class->vtable_overrides);
+        Parrot_gc_mark_PMC_alive(INTERP, _class->parent_overrides);
+        Parrot_gc_mark_PMC_alive(INTERP, _class->attrib_metadata);
+        Parrot_gc_mark_PMC_alive(INTERP, _class->attrib_index);
+        Parrot_gc_mark_PMC_alive(INTERP, _class->attrib_cache);
+        Parrot_gc_mark_PMC_alive(INTERP, _class->resolve_method);
+        Parrot_gc_mark_PMC_alive(INTERP, _class->meth_cache);
     }
 
 
@@ -715,27 +715,27 @@
 
     VTABLE void add_attribute(STRING *name, PMC *type) {
         Parrot_Class_attributes * const _class        = PARROT_CLASS(SELF);
-        PMC          * const new_attribute = Parrot_pmc_new(interp, enum_class_Hash);
+        PMC          * const new_attribute = Parrot_pmc_new(INTERP, enum_class_Hash);
 
         /* If we've been instantiated already, not allowed. */
         if (_class->instantiated)
-            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
                 "Modifications to classes are not allowed after instantiation.");
 
         /* If we already have an attribute of this name, it's an error. */
-        if (VTABLE_exists_keyed_str(interp, _class->attrib_metadata, name))
-            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+        if (VTABLE_exists_keyed_str(INTERP, _class->attrib_metadata, name))
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
                 "Attribute '%Ss' already exists in '%Ss'.", name,
                 VTABLE_get_string(INTERP, SELF));
 
         /* Set name and type. */
-        VTABLE_set_string_keyed_str(interp, new_attribute, CONST_STRING(interp, "name"), name);
+        VTABLE_set_string_keyed_str(INTERP, new_attribute, CONST_STRING(INTERP, "name"), name);
 
         if (!PMC_IS_NULL(type))
-            VTABLE_set_pmc_keyed_str(interp, new_attribute, CONST_STRING(interp, "type"), type);
+            VTABLE_set_pmc_keyed_str(INTERP, new_attribute, CONST_STRING(INTERP, "type"), type);
 
         /* Enter the attribute in the attrib_metadata table. */
-        VTABLE_set_pmc_keyed_str(interp, _class->attrib_metadata, name,
+        VTABLE_set_pmc_keyed_str(INTERP, _class->attrib_metadata, name,
             new_attribute);
     }
 
@@ -756,19 +756,19 @@
 
         /* If we've been instantiated already, not allowed. */
         if (_class->instantiated)
-            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
                 "Modifications to classes are not allowed after instantiation.");
 
         /* If we don't have an attribute of this name, it's an error. */
-        if (!VTABLE_exists_keyed_str(interp, _class->attrib_metadata, name))
-            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+        if (!VTABLE_exists_keyed_str(INTERP, _class->attrib_metadata, name))
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
                 "Attribute '%Ss' cannot be removed, does not exist in '%Ss'.", name,
                 VTABLE_get_string(INTERP, SELF));
 
         /* Remove the attribute from the attrib_metadata table. */
-        VTABLE_delete_keyed_str(interp, _class->attrib_metadata, name);
+        VTABLE_delete_keyed_str(INTERP, _class->attrib_metadata, name);
 
-        build_attrib_index(interp, SELF);
+        build_attrib_index(INTERP, SELF);
     }
 
 /*
@@ -783,21 +783,21 @@
     VTABLE void add_method(STRING *name, PMC *sub) {
         Parrot_Class_attributes * const _class = PARROT_CLASS(SELF);
         PMC                     * const method =
-                 VTABLE_get_pmc_keyed_str(interp, _class->methods, name);
+                 VTABLE_get_pmc_keyed_str(INTERP, _class->methods, name);
 
         /* If we have already added a method with this name... */
         if (!PMC_IS_NULL(method)) {
             if (method == sub)
                 return;
 
-            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
                 "A method named '%S' already exists in class '%S'. "
                 "It may have been supplied by a role.",
-                name, VTABLE_get_string(interp, SELF));
+                name, VTABLE_get_string(INTERP, SELF));
         }
 
         /* Enter it into the table. */
-        VTABLE_set_pmc_keyed_str(interp, _class->methods, name, sub);
+        VTABLE_set_pmc_keyed_str(INTERP, _class->methods, name, sub);
     }
 
 /*
@@ -811,12 +811,12 @@
 */
     VTABLE void remove_method(STRING *name) {
         Parrot_Class_attributes * const _class = PARROT_CLASS(SELF);
-        if (VTABLE_exists_keyed_str(interp, _class->methods, name))
-            VTABLE_delete_keyed_str(interp, _class->methods, name);
+        if (VTABLE_exists_keyed_str(INTERP, _class->methods, name))
+            VTABLE_delete_keyed_str(INTERP, _class->methods, name);
         else
-            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
                 "No method named '%S' to remove in class '%S'.",
-                name, VTABLE_get_string(interp, SELF));
+                name, VTABLE_get_string(INTERP, SELF));
     }
 
 /*
@@ -831,28 +831,28 @@
     VTABLE void add_vtable_override(STRING *name, PMC *sub) {
         Parrot_Class_attributes * const _class = PARROT_CLASS(SELF);
         PMC                     * const vtable =
-            VTABLE_get_pmc_keyed_str(interp, _class->vtable_overrides, name);
+            VTABLE_get_pmc_keyed_str(INTERP, _class->vtable_overrides, name);
 
         /* If we have already added a vtable override with this name... */
         if (!PMC_IS_NULL(vtable)) {
             if (vtable == sub)
                 return;
 
-            Parrot_ex_throw_from_c_args(interp, NULL,
+            Parrot_ex_throw_from_c_args(INTERP, NULL,
                 EXCEPTION_INVALID_OPERATION,
                 "A vtable override named '%S' already exists in class '%S'. "
                 "It may have been supplied by a role.",
-                name, VTABLE_get_string(interp, SELF));
+                name, VTABLE_get_string(INTERP, SELF));
         }
 
         /* Check that the name is actually valid as a vtable override */
-        if (Parrot_get_vtable_index(interp, name) == -1)
-            Parrot_ex_throw_from_c_args(interp, NULL,
+        if (Parrot_get_vtable_index(INTERP, name) == -1)
+            Parrot_ex_throw_from_c_args(INTERP, NULL,
                 EXCEPTION_METHOD_NOT_FOUND,
                 "'%S' is not a valid vtable function name.", name);
 
         /* Add it to vtable list. */
-        VTABLE_set_pmc_keyed_str(interp, _class->vtable_overrides, name, sub);
+        VTABLE_set_pmc_keyed_str(INTERP, _class->vtable_overrides, name, sub);
     }
 
 /*
@@ -870,59 +870,59 @@
 
         /* If we've been instantiated already, not allowed. */
         if (_class->instantiated)
-            Parrot_ex_throw_from_c_args(interp, NULL,
+            Parrot_ex_throw_from_c_args(INTERP, NULL,
                 EXCEPTION_INVALID_OPERATION,
                 "Modifications to classes are not allowed after instantiation.");
 
         /* Ensure it really is a class. */
         if (!PObj_is_class_TEST(parent))
-            Parrot_ex_throw_from_c_args(interp, NULL,
+            Parrot_ex_throw_from_c_args(INTERP, NULL,
                 EXCEPTION_INVALID_OPERATION, "Parent isn't a Class.");
 
         /* Check is not self */
         if (parent == SELF)
-            Parrot_ex_throw_from_c_args(interp, NULL,
+            Parrot_ex_throw_from_c_args(INTERP, NULL,
                     EXCEPTION_INVALID_OPERATION, "Can't be own parent");
 
         /* get number of direct parents */
-        parent_count = VTABLE_elements(interp, _class->parents);
+        parent_count = VTABLE_elements(INTERP, _class->parents);
 
         /* iterate over all direct parents, check whether this class already has
          * the parent being added. */
-        for (index = 0; index < parent_count; index++) {
+        for (index = 0; index < parent_count; ++index) {
             /* get the next parent */
-            PMC * const current_parent = VTABLE_get_pmc_keyed_int(interp,
+            PMC * const current_parent = VTABLE_get_pmc_keyed_int(INTERP,
                                       _class->parents, index);
 
             /* throw an exception if we already have this parent */
             if (current_parent == parent)
-                Parrot_ex_throw_from_c_args(interp, NULL,
+                Parrot_ex_throw_from_c_args(INTERP, NULL,
                     EXCEPTION_INVALID_OPERATION,
                     "The class '%S' already has a parent class '%S'. "
                     "It may have been supplied by a role.",
-                    VTABLE_get_string(interp, SELF),
-                    VTABLE_get_string(interp, parent));
+                    VTABLE_get_string(INTERP, SELF),
+                    VTABLE_get_string(INTERP, parent));
         }
 
         /* Check that none of the parents is self */
-        parent_count = VTABLE_elements(interp, PARROT_CLASS(parent)->all_parents);
+        parent_count = VTABLE_elements(INTERP, PARROT_CLASS(parent)->all_parents);
 
-        for (index = 0; index < parent_count; index++) {
+        for (index = 0; index < parent_count; ++index) {
             /* get the next parent */
-            PMC * const current_parent = VTABLE_get_pmc_keyed_int(interp,
+            PMC * const current_parent = VTABLE_get_pmc_keyed_int(INTERP,
                 PARROT_CLASS(parent)->all_parents, index);
 
             if (current_parent == SELF)
-                Parrot_ex_throw_from_c_args(interp, NULL,
+                Parrot_ex_throw_from_c_args(INTERP, NULL,
                     EXCEPTION_INVALID_OPERATION,
                     "Loop in class hierarchy: '%S' is an ancestor of '%S'.",
-                    VTABLE_get_string(interp, SELF),
-                    VTABLE_get_string(interp, parent));
+                    VTABLE_get_string(INTERP, SELF),
+                    VTABLE_get_string(INTERP, parent));
         }
 
         /* Add to the lists of our immediate parents and all parents. */
-        VTABLE_push_pmc(interp, _class->parents, parent);
-        calculate_mro(interp, SELF, parent_count + 1);
+        VTABLE_push_pmc(INTERP, _class->parents, parent);
+        calculate_mro(INTERP, SELF, parent_count + 1);
     }
 
 /*
@@ -942,34 +942,34 @@
 
         /* If we've been instantiated already, not allowed. */
         if (_class->instantiated)
-            Parrot_ex_throw_from_c_args(interp, NULL,
+            Parrot_ex_throw_from_c_args(INTERP, NULL,
                 EXCEPTION_INVALID_OPERATION,
                 "Modifications to classes are not allowed after instantiation.");
 
         /* Ensure it really is a class. */
         if (!PObj_is_class_TEST(parent))
-            Parrot_ex_throw_from_c_args(interp, NULL,
+            Parrot_ex_throw_from_c_args(INTERP, NULL,
                 EXCEPTION_INVALID_OPERATION, "Parent isn't a Class.");
 
         /* get number of direct parents */
-        parent_count = VTABLE_elements(interp, _class->parents);
+        parent_count = VTABLE_elements(INTERP, _class->parents);
 
         /* iterate over all direct parents, looking for the parent to remove */
-        for (index = 0; index < parent_count; index++) {
+        for (index = 0; index < parent_count; ++index) {
             /* get the next parent */
-            PMC * const current_parent = VTABLE_get_pmc_keyed_int(interp,
+            PMC * const current_parent = VTABLE_get_pmc_keyed_int(INTERP,
                                       _class->parents, index);
             if (current_parent == parent)
                 break;
         }
 
         if (index >= parent_count)
-            Parrot_ex_throw_from_c_args(interp, NULL,
+            Parrot_ex_throw_from_c_args(INTERP, NULL,
                 EXCEPTION_INVALID_OPERATION,
                 "Can't remove_parent: is not a parent.");
 
-        VTABLE_delete_keyed_int(interp, _class->parents, index);
-        calculate_mro(interp, SELF, parent_count - 1);
+        VTABLE_delete_keyed_int(INTERP, _class->parents, index);
+        calculate_mro(INTERP, SELF, parent_count - 1);
     }
 
 /*
@@ -986,7 +986,7 @@
         const Parrot_Class_attributes * const _class = PARROT_CLASS(SELF);
 
         /* Do the composition. */
-        Parrot_ComposeRole(interp, role,
+        Parrot_ComposeRole(INTERP, role,
             _class->resolve_method, !PMC_IS_NULL(_class->resolve_method),
            PMCNULL, 0, _class->methods, _class->roles);
     }
@@ -1037,46 +1037,44 @@
         /* What should we return? */
         PMC *found;
 
-        if (Parrot_str_equal(interp, what, CONST_STRING(interp, "attributes"))) {
+        if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "attributes"))) {
             found = _class->attrib_metadata;
         }
-        else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "parents"))) {
+        else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "parents"))) {
             found = _class->parents;
         }
-        else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "name"))) {
-            found = Parrot_pmc_new(interp, enum_class_String);
-            VTABLE_set_string_native(interp, found, _class->name);
-        }
-        else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "id"))) {
-            found = Parrot_pmc_new(interp, enum_class_Integer);
-            VTABLE_set_integer_native(interp, found, _class->id);
+        else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "name"))) {
+            found = Parrot_pmc_new(INTERP, enum_class_String);
+            VTABLE_set_string_native(INTERP, found, _class->name);
         }
-        else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "namespace"))) {
+        else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "id"))) {
+            found = Parrot_pmc_new_init_int(INTERP, enum_class_Integer, _class->id);
+        }
+        else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "namespace"))) {
             /* Should not clone this. */
             return _class->_namespace;
         }
-        else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "attrib_index"))) {
+        else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "attrib_index"))) {
             found = _class->attrib_index;
         }
-        else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "methods"))) {
+        else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "methods"))) {
             found = _class->methods;
         }
-        else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "vtable_overrides"))) {
+        else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "vtable_overrides"))) {
             found = _class->vtable_overrides;
         }
-        else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "all_parents"))) {
+        else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "all_parents"))) {
             found = _class->all_parents;
         }
-        else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "roles"))) {
+        else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "roles"))) {
             found = _class->roles;
         }
-        else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "flags"))) {
-            found = Parrot_pmc_new(interp, enum_class_Integer);
-            VTABLE_set_integer_native(interp, found,
+        else if (Parrot_str_equal(INTERP, what, CONST_STRING(INTERP, "flags"))) {
+            found = Parrot_pmc_new_init_int(INTERP, enum_class_Integer,
                 (INTVAL)PObj_get_FLAGS(SELF));
         }
         else
-            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
                 "Unknown introspection value '%S'", what);
 
         /* return found value */
@@ -1086,18 +1084,18 @@
         if (found->vtable->base_type == enum_class_Hash) {
             /* for Hash return values, create and return a shallow
              * clone because the VTABLE_clone does a deep clone */
-            PMC * const hash  = Parrot_pmc_new(interp, enum_class_Hash);
-            PMC * const iter  = VTABLE_get_iter(interp, found);
-            while (VTABLE_get_bool(interp, iter)) {
-                STRING * const key   = VTABLE_shift_string(interp, iter);
-                PMC    * const value = VTABLE_get_pmc_keyed_str(interp, found, key);
-                VTABLE_set_pmc_keyed_str(interp, hash, key, value);
+            PMC * const hash  = Parrot_pmc_new(INTERP, enum_class_Hash);
+            PMC * const iter  = VTABLE_get_iter(INTERP, found);
+            while (VTABLE_get_bool(INTERP, iter)) {
+                STRING * const key   = VTABLE_shift_string(INTERP, iter);
+                PMC    * const value = VTABLE_get_pmc_keyed_str(INTERP, found, key);
+                VTABLE_set_pmc_keyed_str(INTERP, hash, key, value);
             }
 
             return hash;
         }
 
-        return VTABLE_clone(interp, found);
+        return VTABLE_clone(INTERP, found);
     }
 
 /*
@@ -1113,35 +1111,35 @@
     VTABLE PMC *inspect() {
         /* Create a hash, then use inspect_str to get all of the data to
          * fill it up with. */
-        PMC    * const metadata    = Parrot_pmc_new(interp, enum_class_Hash);
-        STRING * const name_str    = CONST_STRING(interp, "name");
-        STRING * const ns_str      = CONST_STRING(interp, "namespace");
-        STRING * const attrs_str   = CONST_STRING(interp, "attributes");
-        STRING * const meths_str   = CONST_STRING(interp, "methods");
-        STRING * const parents_str = CONST_STRING(interp, "parents");
-        STRING * const roles_str   = CONST_STRING(interp, "roles");
-        STRING * const flags_str   = CONST_STRING(interp, "flags");
-
-        VTABLE_set_pmc_keyed_str(interp, metadata, name_str,
-            VTABLE_inspect_str(interp, SELF, name_str));
-
-        VTABLE_set_pmc_keyed_str(interp, metadata, ns_str,
-            VTABLE_inspect_str(interp, SELF, ns_str));
-
-        VTABLE_set_pmc_keyed_str(interp, metadata, attrs_str,
-            VTABLE_inspect_str(interp, SELF, attrs_str));
-
-        VTABLE_set_pmc_keyed_str(interp, metadata, meths_str,
-            VTABLE_inspect_str(interp, SELF, meths_str));
+        PMC    * const metadata    = Parrot_pmc_new(INTERP, enum_class_Hash);
+        STRING * const name_str    = CONST_STRING(INTERP, "name");
+        STRING * const ns_str      = CONST_STRING(INTERP, "namespace");
+        STRING * const attrs_str   = CONST_STRING(INTERP, "attributes");
+        STRING * const meths_str   = CONST_STRING(INTERP, "methods");
+        STRING * const parents_str = CONST_STRING(INTERP, "parents");
+        STRING * const roles_str   = CONST_STRING(INTERP, "roles");
+        STRING * const flags_str   = CONST_STRING(INTERP, "flags");
+
+        VTABLE_set_pmc_keyed_str(INTERP, metadata, name_str,
+            VTABLE_inspect_str(INTERP, SELF, name_str));
+
+        VTABLE_set_pmc_keyed_str(INTERP, metadata, ns_str,
+            VTABLE_inspect_str(INTERP, SELF, ns_str));
+
+        VTABLE_set_pmc_keyed_str(INTERP, metadata, attrs_str,
+            VTABLE_inspect_str(INTERP, SELF, attrs_str));
+
+        VTABLE_set_pmc_keyed_str(INTERP, metadata, meths_str,
+            VTABLE_inspect_str(INTERP, SELF, meths_str));
 
-        VTABLE_set_pmc_keyed_str(interp, metadata, parents_str,
-            VTABLE_inspect_str(interp, SELF, parents_str));
+        VTABLE_set_pmc_keyed_str(INTERP, metadata, parents_str,
+            VTABLE_inspect_str(INTERP, SELF, parents_str));
 
-        VTABLE_set_pmc_keyed_str(interp, metadata, roles_str,
-            VTABLE_inspect_str(interp, SELF, roles_str));
+        VTABLE_set_pmc_keyed_str(INTERP, metadata, roles_str,
+            VTABLE_inspect_str(INTERP, SELF, roles_str));
 
-        VTABLE_set_pmc_keyed_str(interp, metadata, flags_str,
-            VTABLE_inspect_str(interp, SELF, flags_str));
+        VTABLE_set_pmc_keyed_str(INTERP, metadata, flags_str,
+            VTABLE_inspect_str(INTERP, SELF, flags_str));
 
         return metadata;
     }
@@ -1170,18 +1168,18 @@
 
         Parrot_Class_attributes * const new_class = PARROT_CLASS(copy);
 
-        new_class->name                = CONST_STRING(interp, "");
+        new_class->name                = CONST_STRING(INTERP, "");
         new_class->_namespace          = PMCNULL;
-        new_class->parents             = VTABLE_clone(interp, _class->parents);
-        new_class->roles               = VTABLE_clone(interp, _class->roles);
-        new_class->methods             = VTABLE_clone(interp, _class->methods);
-        new_class->vtable_overrides    = VTABLE_clone(interp,
+        new_class->parents             = VTABLE_clone(INTERP, _class->parents);
+        new_class->roles               = VTABLE_clone(INTERP, _class->roles);
+        new_class->methods             = VTABLE_clone(INTERP, _class->methods);
+        new_class->vtable_overrides    = VTABLE_clone(INTERP,
                                             _class->vtable_overrides);
-        new_class->parent_overrides    = VTABLE_clone(interp,
+        new_class->parent_overrides    = VTABLE_clone(INTERP,
                                             _class->parent_overrides);
-        new_class->attrib_metadata     = VTABLE_clone(interp,
+        new_class->attrib_metadata     = VTABLE_clone(INTERP,
                                             _class->attrib_metadata);
-        new_class->resolve_method      = VTABLE_clone(interp,
+        new_class->resolve_method      = VTABLE_clone(INTERP,
                                             _class->resolve_method);
 
         /* Return cloned class. */
@@ -1205,7 +1203,7 @@
         /* Do the standard clone. */
         PMC * const copy = SELF.clone();
 
-        init_class_from_hash(interp, copy, args);
+        init_class_from_hash(INTERP, copy, args);
 
         return copy;
     }
@@ -1227,39 +1225,39 @@
         /* If we've not been instantiated before... */
         if (!_class->instantiated) {
             /* Check that we have all methods listed in resolve list. */
-            const int resolve_count  = VTABLE_elements(interp,
+            const int resolve_count  = VTABLE_elements(INTERP,
                                                        _class->resolve_method);
-            const INTVAL cur_hll     = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp));
-            const INTVAL num_parents = VTABLE_elements(interp, _class->parents);
+            const INTVAL cur_hll     = Parrot_pcc_get_HLL(INTERP, CURRENT_CONTEXT(INTERP));
+            const INTVAL num_parents = VTABLE_elements(INTERP, _class->parents);
             INTVAL       mro_length;
             int          i;
 
             /* don't use HLL mappings for internal-only data */
-            Parrot_pcc_set_HLL(interp, CURRENT_CONTEXT(interp), 0);
+            Parrot_pcc_set_HLL(INTERP, CURRENT_CONTEXT(INTERP), 0);
 
-            for (i = 0; i < resolve_count; i++) {
+            for (i = 0; i < resolve_count; ++i) {
                 STRING * const check_meth =
-                    VTABLE_get_string_keyed_int(interp, _class->resolve_method, i);
-                if (!VTABLE_exists_keyed_str(interp, _class->methods, check_meth))
-                    Parrot_ex_throw_from_c_args(interp, NULL,
+                    VTABLE_get_string_keyed_int(INTERP, _class->resolve_method, i);
+                if (!VTABLE_exists_keyed_str(INTERP, _class->methods, check_meth))
+                    Parrot_ex_throw_from_c_args(INTERP, NULL,
                         EXCEPTION_METHOD_NOT_FOUND, "The method '%S' was named "
                         "in the resolve list, but not supplied", check_meth);
             }
 
             /* Build full parents list.
              * TT #1256:  Need pluggable MRO, for now always do C3. */
-            calculate_mro(interp, SELF, num_parents);
-            build_attrib_index(interp, SELF);
+            calculate_mro(INTERP, SELF, num_parents);
+            build_attrib_index(INTERP, SELF);
 
             if (PMC_IS_NULL(_class->attrib_index))
                 return PMCNULL;
 
             /* See if we have any parents from other universes and if so set a
              * flag stating so. */
-            mro_length = VTABLE_elements(interp, _class->all_parents);
+            mro_length = VTABLE_elements(INTERP, _class->all_parents);
 
-            for (i = 0; i < mro_length; i++) {
-                PMC * const class_check = VTABLE_get_pmc_keyed_int(interp,
+            for (i = 0; i < mro_length; ++i) {
+                PMC * const class_check = VTABLE_get_pmc_keyed_int(INTERP,
                     _class->all_parents, i);
                 if (class_check->vtable->base_type != enum_class_Class) {
                     /* Found one; that's enough. */
@@ -1268,14 +1266,14 @@
                 }
             }
 
-            Parrot_pcc_set_HLL(interp, CURRENT_CONTEXT(interp), cur_hll);
+            Parrot_pcc_set_HLL(INTERP, CURRENT_CONTEXT(INTERP), cur_hll);
         }
 
         /* Set instantiated flag. */
         _class->instantiated = 1;
 
         /* Create object. */
-        object = Parrot_pmc_new_noinit(interp, enum_class_Object);
+        object = Parrot_pmc_new_noinit(INTERP, enum_class_Object);
 
         /* Set custom GC mark and destroy on the object. */
         PObj_custom_mark_destroy_SETALL(object);
@@ -1291,28 +1289,28 @@
             Parrot_Object_attributes * const objattr =
                 PMC_data_typed(object, Parrot_Object_attributes *);
             objattr->_class       = SELF;
-            objattr->attrib_store = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+            objattr->attrib_store = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
         }
 
         if (!PMC_IS_NULL(init)) {
             /* Initialize attributes with the supplied values. */
-            PMC * const iter = VTABLE_get_iter(interp, init);
+            PMC * const iter = VTABLE_get_iter(INTERP, init);
 
-            while (VTABLE_get_bool(interp, iter)) {
-                STRING * const name  = VTABLE_shift_string(interp, iter);
-                PMC    * const value = VTABLE_get_pmc_keyed_str(interp, init,
+            while (VTABLE_get_bool(INTERP, iter)) {
+                STRING * const name  = VTABLE_shift_string(INTERP, iter);
+                PMC    * const value = VTABLE_get_pmc_keyed_str(INTERP, init,
                                             name);
 
                 /* Set the attribute. */
-                VTABLE_set_attr_str(interp, object, name, value);
+                VTABLE_set_attr_str(INTERP, object, name, value);
             }
 
             /* Check for overrides on the init_pmc vtable function */
-            initialize_parents_pmc(interp, object, _class->all_parents, init);
+            initialize_parents_pmc(INTERP, object, _class->all_parents, init);
         }
         else
             /* Check for overrides on the init vtable function */
-            initialize_parents(interp, object, _class->all_parents);
+            initialize_parents(INTERP, object, _class->all_parents);
 
         return object;
     }
@@ -1339,13 +1337,13 @@
         if (PObj_is_class_TEST(lookup) && lookup == SELF)
             return 1;
 
-        classobj = Parrot_oo_get_class(interp, lookup);
+        classobj = Parrot_oo_get_class(INTERP, lookup);
 
         if (PMC_IS_NULL(classobj))
             return 0;
 
         /* Check if the class object is the same as self's class object */
-        if (VTABLE_is_same(interp, SELF, classobj))
+        if (VTABLE_is_same(INTERP, SELF, classobj))
             return 1;
 
         /* this is effectively what the default PMC's isa_pmc does
@@ -1353,26 +1351,26 @@
          * only in these two, very specific and common cases */
         if (classobj->vtable->base_type == enum_class_Class
         ||  classobj->vtable->base_type == enum_class_PMCProxy) {
-            STRING *classname = make_class_name(interp, classobj);
+            STRING *classname = make_class_name(INTERP, classobj);
 
-            if (Parrot_str_equal(interp, SELF->vtable->whoami, classname))
+            if (Parrot_str_equal(INTERP, SELF->vtable->whoami, classname))
                 return 1;
 
             if (SELF->vtable->isa_hash
-            &&  parrot_hash_exists(interp, SELF->vtable->isa_hash,
+            &&  parrot_hash_exists(INTERP, SELF->vtable->isa_hash,
                                     (void *)classname))
                 return 1;
         }
 
         /* Iterate over all the parents and check if they respond true
          * for 'isa' on the original comparison. */
-        num_classes = VTABLE_elements(interp, _class->parents);
+        num_classes = VTABLE_elements(INTERP, _class->parents);
 
-        for (i = 0; i < num_classes; i++) {
-            PMC * const cur_class = VTABLE_get_pmc_keyed_int(interp,
+        for (i = 0; i < num_classes; ++i) {
+            PMC * const cur_class = VTABLE_get_pmc_keyed_int(INTERP,
                     _class->parents, i);
 
-            if (VTABLE_isa_pmc(interp, cur_class, lookup))
+            if (VTABLE_isa_pmc(INTERP, cur_class, lookup))
                 return 1;
         }
 
@@ -1393,10 +1391,10 @@
         PMC *want_class;
 
         /* hard-code this one exception right away */
-        if (Parrot_str_equal(interp, classname, CONST_STRING(interp, "Class")))
+        if (Parrot_str_equal(INTERP, classname, CONST_STRING(INTERP, "Class")))
             return 1;
 
-        want_class = Parrot_oo_get_class_str(interp, classname);
+        want_class = Parrot_oo_get_class_str(INTERP, classname);
 
         if (PMC_IS_NULL(want_class))
             return 0;
@@ -1404,7 +1402,7 @@
         if (SELF == want_class)
             return 1;
 
-        return VTABLE_isa_pmc(interp, SELF, want_class);
+        return VTABLE_isa_pmc(INTERP, SELF, want_class);
     }
 
 /*
@@ -1424,28 +1422,28 @@
         if (!role_list)
             return 0;
 
-        count = VTABLE_elements(interp, role_list);
+        count = VTABLE_elements(INTERP, role_list);
 
-        for (i = 0; i < count; i++) {
-            PMC * const role = VTABLE_get_pmc_keyed_int(interp, role_list, i);
+        for (i = 0; i < count; ++i) {
+            PMC * const role = VTABLE_get_pmc_keyed_int(INTERP, role_list, i);
 
-            if (VTABLE_does(interp, role, role_name))
+            if (VTABLE_does(INTERP, role, role_name))
                 return 1;
         }
 
         /* Iterate over all the parents and check if they respond true
          * for 'does' on the original comparison. */
-        count = VTABLE_elements(interp, _class->parents);
+        count = VTABLE_elements(INTERP, _class->parents);
 
-        for (i = 0; i < count; i++) {
-            PMC * const cur_class = VTABLE_get_pmc_keyed_int(interp,
+        for (i = 0; i < count; ++i) {
+            PMC * const cur_class = VTABLE_get_pmc_keyed_int(INTERP,
                     _class->parents, i);
 
-            if (VTABLE_does(interp, cur_class, role_name))
+            if (VTABLE_does(INTERP, cur_class, role_name))
                 return 1;
         }
 
-        return VTABLE_isa(interp, SELF, role_name);
+        return VTABLE_isa(INTERP, SELF, role_name);
     }
 
 /*
@@ -1465,27 +1463,27 @@
         if (!role_list)
             return 0;
 
-        role_count = VTABLE_elements(interp, role_list);
+        role_count = VTABLE_elements(INTERP, role_list);
 
-        for (i = 0; i < role_count; i++) {
-            PMC    * const test_role = VTABLE_get_pmc_keyed_int(interp, role_list, i);
-            if (VTABLE_does_pmc(interp, test_role, role))
+        for (i = 0; i < role_count; ++i) {
+            PMC    * const test_role = VTABLE_get_pmc_keyed_int(INTERP, role_list, i);
+            if (VTABLE_does_pmc(INTERP, test_role, role))
                 return 1;
         }
 
         /* Iterate over all the parents and check if they respond true
          * for 'does' on the original comparison. */
-        count = VTABLE_elements(interp, _class->parents);
+        count = VTABLE_elements(INTERP, _class->parents);
 
-        for (i = 0; i < count; i++) {
-            PMC * const cur_class = VTABLE_get_pmc_keyed_int(interp,
+        for (i = 0; i < count; ++i) {
+            PMC * const cur_class = VTABLE_get_pmc_keyed_int(INTERP,
                     _class->parents, i);
 
-            if (VTABLE_does_pmc(interp, cur_class, role))
+            if (VTABLE_does_pmc(INTERP, cur_class, role))
                 return 1;
         }
 
-        return VTABLE_isa_pmc(interp, SELF, role);
+        return VTABLE_isa_pmc(INTERP, SELF, role);
     }
 
 /*
@@ -1547,7 +1545,7 @@
 
     VTABLE void freeze(PMC *info) {
         Parrot_Class_attributes * const class_data = PARROT_CLASS(SELF);
-        STRING       *serial_namespace = CONST_STRING(interp, "");
+        STRING       *serial_namespace = CONST_STRING(INTERP, "");
 
         /* 1) freeze class id */
         VTABLE_push_integer(INTERP, info, class_data->id);
@@ -1557,10 +1555,10 @@
 
         /* 3) serialize namespace name, including HLL */
         if (!PMC_IS_NULL(class_data->_namespace)) {
-            PMC * const names = Parrot_ns_get_name(interp,
+            PMC * const names = Parrot_ns_get_name(INTERP,
                     class_data->_namespace);
             if (!PMC_IS_NULL(names))
-                serial_namespace = Parrot_str_join(interp, CONST_STRING(interp, ";"), names);
+                serial_namespace = Parrot_str_join(INTERP, CONST_STRING(INTERP, ";"), names);
         }
         VTABLE_push_string(INTERP, info, serial_namespace);
     }
@@ -1591,13 +1589,13 @@
         STRING * const semicolon_str = CONST_STRING(INTERP, ";");
         PMC    * const namespace_array =
             Parrot_str_split(INTERP, semicolon_str, serial_namespace);
-        PMC *ns = Parrot_get_namespace_keyed(interp,
+        PMC *ns = Parrot_get_namespace_keyed(INTERP,
                 INTERP->root_namespace, namespace_array);
 
         /* If the namespace doesn't exist, we create it, and initialize
          * ourselves in it */
         if (PMC_IS_NULL(ns)) {
-            ns = Parrot_make_namespace_keyed(interp,
+            ns = Parrot_make_namespace_keyed(INTERP,
                     INTERP->root_namespace, namespace_array);
             SELF.init_pmc(ns);
         }
@@ -1646,11 +1644,11 @@
         UNUSED(info)
 
         /* Recalculate full MRO from thawed parents */
-        _class->all_parents         = Parrot_ComputeMRO_C3(interp, SELF);
-        _class->parent_overrides    = Parrot_pmc_new(interp, enum_class_Hash);
+        _class->all_parents         = Parrot_ComputeMRO_C3(INTERP, SELF);
+        _class->parent_overrides    = Parrot_pmc_new(INTERP, enum_class_Hash);
 
         /* Rebuild attribute index from thawed attribute metadata */
-        build_attrib_index(interp, SELF);
+        build_attrib_index(INTERP, SELF);
     }
 
     /* **********************************************************************
@@ -1675,11 +1673,11 @@
         if (has_name) {
             /* We'll build a hash just containing the name, then give this to
              * init_class_from_hash - saves some code duplication. */
-            PMC    * const naming_hash = Parrot_pmc_new(interp, enum_class_Hash);
-            STRING * const name_str    = CONST_STRING(interp, "name");
+            PMC    * const naming_hash = Parrot_pmc_new(INTERP, enum_class_Hash);
+            STRING * const name_str    = CONST_STRING(INTERP, "name");
 
-            VTABLE_set_string_keyed_str(interp, naming_hash, name_str, name);
-            init_class_from_hash(interp, SELF, naming_hash);
+            VTABLE_set_string_keyed_str(INTERP, naming_hash, name_str, name);
+            init_class_from_hash(INTERP, SELF, naming_hash);
         }
 
         ret_name = _class->name;
@@ -1739,9 +1737,9 @@
         /* Check if any arguments are in the slurpy hash, don't pass an empty
          * hash to instantiate */
         PMC * const obj =
-            VTABLE_elements(interp, args) > 0
-                ? VTABLE_instantiate(interp, SELF, args)
-                : VTABLE_instantiate(interp, SELF, PMCNULL);
+            VTABLE_elements(INTERP, args) > 0
+                ? VTABLE_instantiate(INTERP, SELF, args)
+                : VTABLE_instantiate(INTERP, SELF, PMCNULL);
 
         RETURN(PMC *obj);
      }
@@ -1757,7 +1755,7 @@
 
 */
     METHOD attributes() {
-        STRING * const attr_str            = CONST_STRING(interp, "attributes");
+        STRING * const attr_str            = CONST_STRING(INTERP, "attributes");
         PMC    * const ret_attrib_metadata = SELF.inspect_str(attr_str);
 
         RETURN(PMC *ret_attrib_metadata);
@@ -1788,7 +1786,7 @@
 
 */
     METHOD methods() {
-        PMC * const ret_methods = SELF.inspect_str(CONST_STRING(interp, "methods"));
+        PMC * const ret_methods = SELF.inspect_str(CONST_STRING(INTERP, "methods"));
 
         RETURN(PMC *ret_methods);
     }
@@ -1818,7 +1816,7 @@
 
 */
     METHOD add_vtable_override(STRING *name, PMC *sub) {
-        VTABLE_add_vtable_override(interp, SELF, name, sub);
+        VTABLE_add_vtable_override(INTERP, SELF, name, sub);
     }
 
 /*
@@ -1831,7 +1829,7 @@
 
 */
     METHOD remove_method(STRING *name) {
-        VTABLE_remove_method(interp, SELF, name);
+        VTABLE_remove_method(INTERP, SELF, name);
     }
 
 /*
@@ -1849,17 +1847,17 @@
         int i;
 
         /* Walk and search. One day, we'll use the cache first. */
-        const int num_classes = VTABLE_elements(interp, _class->all_parents);
+        const int num_classes = VTABLE_elements(INTERP, _class->all_parents);
 
-        for (i = 0; i < num_classes; i++) {
+        for (i = 0; i < num_classes; ++i) {
             /* Get the class and see if it has the method. */
             PMC * const cur_class =
-                VTABLE_get_pmc_keyed_int(interp, _class->all_parents, i);
+                VTABLE_get_pmc_keyed_int(INTERP, _class->all_parents, i);
             const Parrot_Class_attributes * const class_info = PARROT_CLASS(cur_class);
 
             /* Found it! */
-            if (VTABLE_exists_keyed_str(interp, class_info->methods, name)) {
-                PMC * const ret = VTABLE_get_pmc_keyed_str(interp, class_info->methods, name);
+            if (VTABLE_exists_keyed_str(INTERP, class_info->methods, name)) {
+                PMC * const ret = VTABLE_get_pmc_keyed_str(INTERP, class_info->methods, name);
                 RETURN(PMC *ret);
             }
         }
@@ -1877,7 +1875,7 @@
 
 */
     METHOD parents() {
-        PMC * const ret_parents = SELF.inspect_str(CONST_STRING(interp, "parents"));
+        PMC * const ret_parents = SELF.inspect_str(CONST_STRING(INTERP, "parents"));
 
         RETURN(PMC *ret_parents);
     }
@@ -1905,7 +1903,7 @@
 
 */
     METHOD roles() {
-        PMC * const ret_roles = SELF.inspect_str(CONST_STRING(interp, "roles"));
+        PMC * const ret_roles = SELF.inspect_str(CONST_STRING(INTERP, "roles"));
 
         RETURN(PMC *ret_roles);
     }
@@ -1932,24 +1930,24 @@
          * no exclude list, pass along the resolve list in its place if it has
          * any methods listed in it. */
         if (!has_exclude_method) {
-            if (VTABLE_elements(interp, _class->resolve_method) != 0) {
+            if (VTABLE_elements(INTERP, _class->resolve_method) != 0) {
                 exclude_method     = _class->resolve_method;
                 has_exclude_method = 1;
             }
         }
         else {
-            const int resolve_count = VTABLE_elements(interp, _class->resolve_method);
+            const int resolve_count = VTABLE_elements(INTERP, _class->resolve_method);
             int i;
 
-            for (i = 0; i < resolve_count; i++) {
-                STRING * const meth_name = VTABLE_get_string_keyed_int(interp,
+            for (i = 0; i < resolve_count; ++i) {
+                STRING * const meth_name = VTABLE_get_string_keyed_int(INTERP,
                     _class->resolve_method, i);
-                VTABLE_push_string(interp, exclude_method, meth_name);
+                VTABLE_push_string(INTERP, exclude_method, meth_name);
             }
         }
 
         /* Do the composition. */
-        Parrot_ComposeRole(interp, role, exclude_method, has_exclude_method,
+        Parrot_ComposeRole(INTERP, role, exclude_method, has_exclude_method,
                            alias_method, has_alias_method,
                            _class->methods, _class->roles);
     }
@@ -2003,7 +2001,7 @@
 
 */
     METHOD does(STRING *role_name) {
-        const INTVAL does = VTABLE_does(interp, SELF, role_name);
+        const INTVAL does = VTABLE_does(INTERP, SELF, role_name);
         RETURN(INTVAL does);
     }
 

Modified: branches/codestring/src/pmc/complex.pmc
==============================================================================
--- branches/codestring/src/pmc/complex.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/complex.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -100,26 +100,26 @@
 
     if (*t == '-') {
         /* first number is negative */
-        t++;
+        ++t;
         first_num_minus = 1;
 
         /* allow for an optional space */
         if (*t == ' ')
-            t++;
+            ++t;
         first_num_offset = t;
     }
 
     /* skip digits */
     while (*t >= '0' && *t <= '9')
-        t++;
+        ++t;
 
     if (*t == '.') {
         /* this number has a decimal point */
-        t++;
+        ++t;
 
         /* skip digits */
         while (*t >= '0' && *t <= '9')
-            t++;
+            ++t;
     }
 
     /* save the length of the real part */
@@ -145,32 +145,32 @@
     else {
         /* skip an optional space */
         if (*t == ' ')
-            t++;
+            ++t;
 
         /* expect "+" or "-" and the imaginary part */
         if (*t == '+' || *t == '-') {
             /* save the sign */
             second_num_minus = (*t == '-');
-            t++;
+            ++t;
 
             /* skip another optional space */
             if (*t == ' ')
-                t++;
+                ++t;
 
             /* save the beginning of the imaginary part */
             second_num_offset = t;
 
             /* skip digits */
             while (*t >= '0' && *t <= '9')
-                t++;
+                ++t;
 
             if (*t == '.') {
                 /* this number has a decimal point */
-                t++;
+                ++t;
 
                 /* skip digits */
                 while (*t >= '0' && *t <= '9')
-                    t++;
+                    ++t;
             }
 
             /* save the length of the imaginary part */
@@ -178,7 +178,7 @@
 
             /* allow for one more optional space */
             if (*t == ' ')
-                t++;
+                ++t;
 
             /* verify that the string ends properly */
             if ((*t != 'i' && *t != 'j') || (*(t+1) != 0)) {

Modified: branches/codestring/src/pmc/default.pmc
==============================================================================
--- branches/codestring/src/pmc/default.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/default.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -242,8 +242,8 @@
     ASSERT_ARGS(propagate_std_props)
 
     if (self->vtable->flags & (VTABLE_IS_CONST_FLAG | VTABLE_IS_READONLY_FLAG)){
-        PMC * const pmc_true  = Parrot_pmc_new(interp, enum_class_Integer);
-        VTABLE_set_integer_native(interp, pmc_true, 1);
+        PMC * const pmc_true  = Parrot_pmc_new_init_int(interp,
+                enum_class_Integer, 1);
         VTABLE_set_pmc_keyed_str(interp, prop_hash, CONST_STRING(interp, "_ro"), pmc_true);
     }
 }
@@ -290,8 +290,8 @@
 
     if ((self->vtable->flags & (VTABLE_IS_CONST_FLAG | VTABLE_IS_READONLY_FLAG))
        && Parrot_str_equal(interp, key, CONST_STRING(interp, "_ro"))) {
-        PMC * const ret_val  = Parrot_pmc_new(interp, enum_class_Integer);
-        VTABLE_set_integer_native(interp, ret_val, 1);
+        PMC * const ret_val = Parrot_pmc_new_init_int(interp,
+                enum_class_Integer, 1);
         return ret_val;
     }
     else
@@ -992,8 +992,7 @@
 
     VTABLE PMC *inspect_str(STRING *name) {
         if (Parrot_str_equal(interp, name, CONST_STRING(interp, "flags"))) {
-            PMC *found = Parrot_pmc_new(interp, enum_class_Integer);
-            VTABLE_set_integer_native(interp, found,
+            PMC *found = Parrot_pmc_new_init_int(interp, enum_class_Integer,
                     (INTVAL)PObj_get_FLAGS(SELF));
             return found;
         }
@@ -1043,10 +1042,7 @@
 
         if (PMC_IS_NULL(_class)) {
             const INTVAL type      = VTABLE_type(interp, SELF);
-            PMC   * const type_num = Parrot_pmc_new(interp, enum_class_Integer);
-
-            VTABLE_set_integer_native(interp, type_num, type);
-            return Parrot_pmc_new_init(interp, enum_class_PMCProxy, type_num);
+            return Parrot_pmc_new_init_int(interp, enum_class_PMCProxy, type);
         }
 
         return _class;

Modified: branches/codestring/src/pmc/env.pmc
==============================================================================
--- branches/codestring/src/pmc/env.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/env.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -97,7 +97,7 @@
         INTVAL rv = 0;
 
         while (environ[rv] != NULL)
-            rv++;
+            ++rv;
 
         return rv;
     }

Modified: branches/codestring/src/pmc/eval.pmc
==============================================================================
--- branches/codestring/src/pmc/eval.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/eval.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -73,7 +73,7 @@
     if (!ct)
         return;
 
-    for (i = 0; i < ft->fixup_count; i++) {
+    for (i = 0; i < ft->fixup_count; ++i) {
         PackFile_FixupEntry * const e = ft->fixups + i;
 
         if (e->type == enum_fixup_sub) {
@@ -112,7 +112,7 @@
     if (!ct)
         return PMCNULL;
 
-    for (i = n = 0; i < ft->fixup_count; i++) {
+    for (i = n = 0; i < ft->fixup_count; ++i) {
         const PackFile_FixupEntry * const e = ft->fixups + i;
 
         if (e->type == enum_fixup_sub) {
@@ -151,7 +151,7 @@
     if (!ct)
         return;
 
-    for (i = 0; i < ft->fixup_count; i++) {
+    for (i = 0; i < ft->fixup_count; ++i) {
         const PackFile_FixupEntry * const e = ft->fixups + i;
 
         if (e->type == enum_fixup_sub) {
@@ -426,11 +426,11 @@
         if (!ft)
             return 0;
 
-        for (i = n = 0; i < ft->fixup_count; i++) {
+        for (i = n = 0; i < ft->fixup_count; ++i) {
             const PackFile_FixupEntry * const e = ft->fixups + i;
 
             if (e->type == enum_fixup_sub)
-                n++;
+                ++n;
         }
 
         return n;

Modified: branches/codestring/src/pmc/exception.pmc
==============================================================================
--- branches/codestring/src/pmc/exception.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/exception.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -545,26 +545,22 @@
         if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "type"))) {
                 INTVAL type;
                 GET_ATTR_type(interp, SELF, type);
-                value = Parrot_pmc_new(interp, enum_class_Integer);
-                VTABLE_set_integer_native(interp, value, type);
+                value = Parrot_pmc_new_init_int(interp, enum_class_Integer, type);
         }
         else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "severity"))) {
                 INTVAL severity;
                 GET_ATTR_severity(interp, SELF, severity);
-                value = Parrot_pmc_new(interp, enum_class_Integer);
-                VTABLE_set_integer_native(interp, value, severity);
+                value = Parrot_pmc_new_init_int(interp, enum_class_Integer, severity);
         }
         else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "exit_code"))) {
                 INTVAL exit_code;
                 GET_ATTR_exit_code(interp, SELF, exit_code);
-                value = Parrot_pmc_new(interp, enum_class_Integer);
-                VTABLE_set_integer_native(interp, value, exit_code);
+                value = Parrot_pmc_new_init_int(interp, enum_class_Integer, exit_code);
         }
         else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "handled"))) {
                 INTVAL handled;
                 GET_ATTR_handled(interp, SELF, handled);
-                value = Parrot_pmc_new(interp, enum_class_Integer);
-                VTABLE_set_integer_native(interp, value, handled);
+                value = Parrot_pmc_new_init_int(interp, enum_class_Integer, handled);
         }
         else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "message"))) {
                 STRING *message = SELF.get_string();

Modified: branches/codestring/src/pmc/exceptionhandler.pmc
==============================================================================
--- branches/codestring/src/pmc/exceptionhandler.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/exceptionhandler.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -185,7 +185,7 @@
                 const INTVAL type  = VTABLE_get_integer_keyed_str(interp, exception, CONST_STRING(interp, "type"));
                 INTVAL i;
 
-                for (i = 0; i < elems; i++) {
+                for (i = 0; i < elems; ++i) {
                     INTVAL handled_type = VTABLE_get_integer_keyed_int(interp,
                             handled_types, i);
                     if (handled_type == type)
@@ -199,7 +199,7 @@
                 const INTVAL type  = VTABLE_get_integer_keyed_str(interp, exception, CONST_STRING(interp, "type"));
                 INTVAL i;
 
-                for (i = 0; i < elems; i++) {
+                for (i = 0; i < elems; ++i) {
                     const INTVAL handled_type = VTABLE_get_integer_keyed_int(interp,
                             handled_types_except, i);
                     if (handled_type == type)

Modified: branches/codestring/src/pmc/exporter.pmc
==============================================================================
--- branches/codestring/src/pmc/exporter.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/exporter.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -256,7 +256,7 @@
                 if (n == 0)
                     temp_globals = PMCNULL;
 
-                for (i = 0; i < n; i++) {
+                for (i = 0; i < n; ++i) {
                     STRING * const item = VTABLE_get_string_keyed_int(interp, glb_array, i);
                     VTABLE_set_string_keyed_str(interp, temp_globals, item, s_empty);
                 }

Modified: branches/codestring/src/pmc/fixedbooleanarray.pmc
==============================================================================
--- branches/codestring/src/pmc/fixedbooleanarray.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/fixedbooleanarray.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -281,7 +281,7 @@
         zero = CONST_STRING(INTERP, "0");
         one  = CONST_STRING(INTERP, "1");
 
-        for (i = 0; i < elems; i++) {
+        for (i = 0; i < elems; ++i) {
             if (SELF.get_integer_keyed_int((INTVAL)i))
                 str = Parrot_str_concat(INTERP, str, one);
             else

Modified: branches/codestring/src/pmc/fixedintegerarray.pmc
==============================================================================
--- branches/codestring/src/pmc/fixedintegerarray.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/fixedintegerarray.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -317,9 +317,8 @@
 */
 
     VTABLE PMC *get_pmc_keyed_int(INTVAL key) {
-        PMC  * const ret = Parrot_pmc_new(INTERP, enum_class_Integer);
         const INTVAL val = SELF.get_integer_keyed_int(key);
-        VTABLE_set_integer_native(INTERP, ret, val);
+        PMC  * const ret = Parrot_pmc_new_init_int(INTERP, enum_class_Integer, val);
         return ret;
     }
 
@@ -444,11 +443,7 @@
 */
 
     VTABLE void set_string_keyed_int(INTVAL key, STRING *value) {
-        INTVAL tempInt;
-        PMC  * const tempPMC = Parrot_pmc_new_temporary(INTERP, enum_class_Integer);
-        VTABLE_set_string_native(INTERP, tempPMC, value);
-        tempInt        = VTABLE_get_integer(INTERP, tempPMC);
-        Parrot_pmc_free_temporary(interp, tempPMC);
+        const INTVAL tempInt = Parrot_str_to_int(INTERP, value);
         SELF.set_integer_keyed_int(key, tempInt);
     }
 

Modified: branches/codestring/src/pmc/fixedpmcarray.pmc
==============================================================================
--- branches/codestring/src/pmc/fixedpmcarray.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/fixedpmcarray.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -403,7 +403,7 @@
         PMC_size(SELF) = size;
         data           = mem_gc_allocate_n_typed(INTERP, size, PMC *);
 
-        for (i = 0; i < size; i++)
+        for (i = 0; i < size; ++i)
             data[i] = PMCNULL;
 
         PMC_array(SELF) = data;
@@ -426,7 +426,7 @@
         size            = PMC_size(SELF) = VTABLE_elements(INTERP, value);
         PMC_array(SELF) = mem_gc_allocate_n_typed(INTERP, size, PMC *);
 
-        for (i = 0; i < size; i++)
+        for (i = 0; i < size; ++i)
             (PMC_array(SELF))[i] = VTABLE_get_pmc_keyed_int(INTERP, value, i);
 
         PObj_custom_mark_destroy_SETALL(SELF);

Modified: branches/codestring/src/pmc/fixedstringarray.pmc
==============================================================================
--- branches/codestring/src/pmc/fixedstringarray.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/fixedstringarray.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -141,7 +141,7 @@
             UINTVAL size, i;
             GET_ATTR_size(INTERP, SELF, size);
 
-            for (i = 0; i < size; i++) {
+            for (i = 0; i < size; ++i) {
                 Parrot_gc_mark_STRING_alive(INTERP, str_array[i]);
             }
         }

Modified: branches/codestring/src/pmc/float.pmc
==============================================================================
--- branches/codestring/src/pmc/float.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/float.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -300,7 +300,7 @@
     VTABLE void increment() {
         FLOATVAL fv;
         GET_ATTR_fv(INTERP, SELF, fv);
-        fv++;
+        ++fv;
         SET_ATTR_fv(INTERP, SELF, fv);
     }
 
@@ -317,7 +317,7 @@
     VTABLE void decrement() {
         FLOATVAL fv;
         GET_ATTR_fv(INTERP, SELF, fv);
-        fv--;
+        --fv;
         SET_ATTR_fv(INTERP, SELF, fv);
     }
 /*

Modified: branches/codestring/src/pmc/hashiterator.pmc
==============================================================================
--- branches/codestring/src/pmc/hashiterator.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/hashiterator.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -90,7 +90,7 @@
         bucket = attrs->parrot_hash->bi[attrs->pos++];
     }
     attrs->bucket = bucket;
-    attrs->elements--;
+    --attrs->elements;
 
     return;
 }

Modified: branches/codestring/src/pmc/imageio.pmc
==============================================================================
--- branches/codestring/src/pmc/imageio.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/imageio.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -249,7 +249,7 @@
     const UINTVAL  n            = VTABLE_shift_integer(interp, info);
     const UINTVAL  id           = PackID_get_PMCID(n);
     const int      packid_flags = PackID_get_FLAGS(n);
-    PMC     *pmc          = PMCNULL;
+    PMC           *pmc          = PMCNULL;
 
     PARROT_ASSERT(PARROT_IMAGEIO(info)->what == VISIT_THAW_NORMAL);
 
@@ -260,17 +260,22 @@
         break;
       case enum_PackID_normal:
         {
+            PMC * const todo    = PARROT_IMAGEIO(info)->todo;
             const INTVAL type = VTABLE_shift_integer(interp, info);
+
+            PARROT_ASSERT(id - 1 == VTABLE_elements(interp, PARROT_IMAGEIO(info)->todo));
+
             if (type <= 0 || type > interp->n_vtable_max)
                 Parrot_ex_throw_from_c_args(interp, NULL, 1, "Unknown PMC type to thaw %d", type);
 
+            /* workaround to keep ParrotInterpreter PBC hack working */
+            if (type == enum_class_ParrotInterpreter)
+                PObj_flag_CLEAR(private1, info);
+
             pmc = Parrot_pmc_new_noinit(interp, type);
             VTABLE_thaw(interp, pmc, info);
 
-            {
-                PMC * const todo    = PARROT_IMAGEIO(info)->todo;
-                VTABLE_set_pmc_keyed_int(interp, todo, id - 1, pmc);
-            }
+            VTABLE_set_pmc_keyed_int(interp, todo, id - 1, pmc);
         }
         break;
       default:
@@ -303,7 +308,7 @@
             packid_type = enum_PackID_seen;
         }
         else {
-            PARROT_IMAGEIO(info)->id++; /* next id to freeze */
+            ++PARROT_IMAGEIO(info)->id; /* next id to freeze */
             id = PARROT_IMAGEIO(info)->id;
             packid_type = enum_PackID_normal;
         }
@@ -315,8 +320,14 @@
         Hash * const hash = (Hash *)VTABLE_get_pointer(interp, PARROT_IMAGEIO(info)->seen);
 
         PARROT_ASSERT(pmc);
+
+        /* workaround to keep ParrotInterpreter PBC hack working */
+        if (pmc->vtable->base_type == enum_class_ParrotInterpreter)
+            PObj_flag_CLEAR(private1, info);
+
         VTABLE_push_integer(interp, info,
                 PObj_is_object_TEST(pmc) ? (INTVAL) enum_class_Object : pmc->vtable->base_type);
+
         parrot_hash_put(interp, hash, pmc, (void *)id);
         VTABLE_push_pmc(interp, PARROT_IMAGEIO(info)->todo, pmc);
         VTABLE_freeze(interp, pmc, info);
@@ -324,14 +335,15 @@
 }
 
 pmclass ImageIO auto_attrs {
-    ATTR Buffer          *buffer;         /* buffer to store the image */
-    ATTR size_t           pos;            /* current read/write position in buffer */
-    ATTR size_t           input_length;
-    ATTR INTVAL           what;
-    ATTR PMC             *seen;           /* seen hash */
-    ATTR PMC             *todo;           /* todo list */
-    ATTR UINTVAL          id;             /* freze ID of PMC */
-    ATTR struct PackFile *pf;
+    ATTR Buffer              *buffer;      /* buffer to store the image */
+    ATTR size_t               pos;         /* current read/write position in buffer */
+    ATTR size_t               input_length;
+    ATTR INTVAL               what;
+    ATTR PMC                 *seen;        /* seen hash */
+    ATTR PMC                 *todo;        /* todo list */
+    ATTR UINTVAL              id;          /* freze ID of PMC */
+    ATTR struct PackFile     *pf;
+    ATTR PackFile_ConstTable *pf_ct;
 
 /*
 
@@ -359,6 +371,30 @@
         PARROT_IMAGEIO(SELF)->id     = 0;
         PARROT_IMAGEIO(SELF)->pf     = PackFile_new(INTERP, 0);
 
+        PObj_flag_CLEAR(private1, SELF);
+
+        PObj_custom_mark_destroy_SETALL(SELF);
+    }
+
+/*
+
+=item C<void init_pmc(PMC *pmc)>
+
+Initializes the PMC with a pre-existing C<PackFile_ConstTable>.
+
+=cut
+
+*/
+    VTABLE void init_pmc(PMC *pmc) {
+        PARROT_IMAGEIO(SELF)->buffer = NULL;
+        PARROT_IMAGEIO(SELF)->todo   = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+        PARROT_IMAGEIO(SELF)->seen   = PMCNULL;
+        PARROT_IMAGEIO(SELF)->id     = 0;
+        PARROT_IMAGEIO(SELF)->pf     = PackFile_new(INTERP, 0);
+
+        PARROT_IMAGEIO(SELF)->pf_ct  = (PackFile_ConstTable *)VTABLE_get_pointer(INTERP, pmc);
+        PObj_flag_SET(private1, SELF);
+
         PObj_custom_mark_destroy_SETALL(SELF);
     }
 
@@ -497,11 +533,42 @@
 
 */
 
-    VTABLE void push_string(STRING *v)
-    {
-        const size_t len = PF_size_string(v) * sizeof (opcode_t);
-        ensure_buffer_size(INTERP, SELF, len);
-        SET_VISIT_CURSOR(SELF, (char *)PF_store_string(GET_VISIT_CURSOR(SELF), v));
+    VTABLE void push_string(STRING *v) {
+        if (PObj_flag_TEST(private1, SELF)) {
+            /* store a reference to constant table entry of string */
+            int i;
+            PackFile_ConstTable *table = PARROT_IMAGEIO(SELF)->pf_ct;
+            for (i = 0; i < table->const_count; i++) {
+                PackFile_Constant *constant = table->constants[i];
+                if (constant->type == PFC_STRING) {
+                    STRING * const sc = constant->u.string;
+                    if (Parrot_str_equal(interp, v, sc)
+                    && Parrot_charset_number_of_str(interp, v)
+                    ==  Parrot_charset_number_of_str(interp, sc)
+                    &&  Parrot_encoding_number_of_str(interp, v)
+                    ==  Parrot_encoding_number_of_str(interp, sc)
+                    ) {
+                        STATICSELF.push_integer(i);
+                        return;
+                    }
+                }
+            }
+            /* XXX
+             * handle cases where the PMC has changed after Parrot_freeze_strings was called
+             * eg: :immediate subs
+             */
+            STATICSELF.push_integer(-1);
+            /* TODO
+             * should really be:
+             * PANIC(INTERP, "string not previously in constant table when freezing to packfile");
+             */
+        }
+
+        {
+            const size_t len = PF_size_string(v) * sizeof (opcode_t);
+            ensure_buffer_size(INTERP, SELF, len);
+            SET_VISIT_CURSOR(SELF, (char *)PF_store_string(GET_VISIT_CURSOR(SELF), v));
+        }
     }
 
 /*
@@ -531,8 +598,8 @@
 
     VTABLE INTVAL shift_integer()
     {
-        const opcode_t *pos = GET_VISIT_CURSOR(SELF);
-        const INTVAL i      = PF_fetch_integer(PARROT_IMAGEIO(SELF)->pf,
+        opcode_t *pos = GET_VISIT_CURSOR(SELF);
+        INTVAL    i   = PF_fetch_integer(PARROT_IMAGEIO(SELF)->pf,
                 (const opcode_t **)&pos);
         SET_VISIT_CURSOR(SELF, (char *)pos);
         BYTECODE_SHIFT_OK(SELF);
@@ -551,8 +618,8 @@
 */
 
     VTABLE FLOATVAL shift_float() {
-        const opcode_t *pos = GET_VISIT_CURSOR(SELF);
-        const FLOATVAL f    = PF_fetch_number(PARROT_IMAGEIO(SELF)->pf,
+        opcode_t *pos = GET_VISIT_CURSOR(SELF);
+        FLOATVAL  f   = PF_fetch_number(PARROT_IMAGEIO(SELF)->pf,
                 (const opcode_t **)&pos);
         SET_VISIT_CURSOR(SELF, (char *)pos);
         BYTECODE_SHIFT_OK(SELF);
@@ -570,14 +637,28 @@
 
 */
 
-    VTABLE STRING *shift_string()
-    {
-        const opcode_t *pos = GET_VISIT_CURSOR(SELF);
-        STRING * const s    = PF_fetch_string(interp, PARROT_IMAGEIO(SELF)->pf,
-                                           (const opcode_t **)&pos);
-        SET_VISIT_CURSOR(SELF, (char *)pos);
-        BYTECODE_SHIFT_OK(SELF);
-        return s;
+    VTABLE STRING *shift_string() {
+        if (PObj_flag_TEST(private1, SELF)) {
+            PackFile_ConstTable *table = PARROT_IMAGEIO(SELF)->pf_ct;
+            INTVAL i                   = STATICSELF.shift_integer();
+
+            if (i >= 0)
+                return table->constants[i]->u.string;
+
+            /* XXX
+             * only got here because constant table doesn't contain the string
+             * fallback on inline strings
+             */
+        }
+
+        {
+            opcode_t *pos = GET_VISIT_CURSOR(SELF);
+            STRING   *s   = PF_fetch_string(interp, PARROT_IMAGEIO(SELF)->pf,
+                                               (const opcode_t **)&pos);
+            SET_VISIT_CURSOR(SELF, (char *)pos);
+            BYTECODE_SHIFT_OK(SELF);
+            return s;
+        }
     }
 
 /*

Modified: branches/codestring/src/pmc/imageiosize.pmc
==============================================================================
--- branches/codestring/src/pmc/imageiosize.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/imageiosize.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -52,6 +52,11 @@
         Hash * const hash = (Hash *)VTABLE_get_pointer(interp, PARROT_IMAGEIOSIZE(info)->seen);
 
         parrot_hash_put(interp, hash, pmc, pmc);
+
+        /* workaround to keep ParrotInterpreter PBC hack working */
+        if (pmc->vtable->base_type == enum_class_ParrotInterpreter)
+            PObj_flag_CLEAR(private1, info);
+
         VTABLE_push_integer(interp, info, pmc->vtable->base_type);
         VTABLE_push_pmc(interp, PARROT_IMAGEIOSIZE(info)->todo, pmc);
         VTABLE_freeze(interp, pmc, info);
@@ -59,10 +64,11 @@
 }
 
 pmclass ImageIOSize auto_attrs {
-    ATTR PMC             *seen;           /* seen hash */
-    ATTR PMC             *todo;           /* todo list */
-    ATTR struct PackFile *pf;
-    ATTR INTVAL           size;
+    ATTR PMC                        *seen; /* seen hash */
+    ATTR PMC                        *todo; /* todo list */
+    ATTR struct PackFile            *pf;
+    ATTR struct PackFile_ConstTable *pf_ct;
+    ATTR INTVAL                      size;
 
 /*
 
@@ -84,14 +90,42 @@
 
 */
     VTABLE void init() {
-        PARROT_IMAGEIOSIZE(SELF)->todo = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
-        PARROT_IMAGEIOSIZE(SELF)->pf   = PackFile_new(INTERP, 0);
-        PARROT_IMAGEIOSIZE(SELF)->size = 0;
+        PARROT_IMAGEIOSIZE(SELF)->todo  = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+        PARROT_IMAGEIOSIZE(SELF)->pf    = PackFile_new(INTERP, 0);
+        PARROT_IMAGEIOSIZE(SELF)->pf_ct = NULL;
+        PARROT_IMAGEIOSIZE(SELF)->size  = 0;
 
         PARROT_IMAGEIOSIZE(SELF)->seen = Parrot_pmc_new(INTERP, enum_class_Hash);
         VTABLE_set_pointer(INTERP, PARROT_IMAGEIOSIZE(SELF)->seen,
             parrot_new_intval_hash(INTERP));
 
+        PObj_flag_CLEAR(private1, SELF);
+
+        PObj_custom_mark_destroy_SETALL(SELF);
+    }
+
+/*
+
+=item C<void init_pmc()>
+
+Initializes the PMC with a pre-existing C<PackFile_ConstTable>.
+
+=cut
+
+*/
+    VTABLE void init_pmc(PMC *pf_ct) {
+        PARROT_IMAGEIOSIZE(SELF)->todo  = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+        PARROT_IMAGEIOSIZE(SELF)->pf    = PackFile_new(INTERP, 0);
+        PARROT_IMAGEIOSIZE(SELF)->pf_ct =
+            (PackFile_ConstTable *)VTABLE_get_pointer(interp, pf_ct);
+        PARROT_IMAGEIOSIZE(SELF)->size  = 0;
+
+        PARROT_IMAGEIOSIZE(SELF)->seen = Parrot_pmc_new(INTERP, enum_class_Hash);
+        VTABLE_set_pointer(INTERP, PARROT_IMAGEIOSIZE(SELF)->seen,
+            parrot_new_intval_hash(INTERP));
+
+        PObj_flag_SET(private1, SELF);
+
         PObj_custom_mark_destroy_SETALL(SELF);
     }
 
@@ -134,8 +168,8 @@
 */
 
     VTABLE PMC *get_pmc() {
-        PMC * const ret = Parrot_pmc_new(INTERP, enum_class_Integer);
-        VTABLE_set_integer_native(INTERP, ret, PARROT_IMAGEIOSIZE(SELF)->size);
+        PMC * const ret = Parrot_pmc_new_init_int(INTERP, enum_class_Integer,
+                PARROT_IMAGEIOSIZE(SELF)->size);
         return ret;
     }
 
@@ -210,10 +244,40 @@
 
 */
 
-    VTABLE void push_string(STRING *v)
-    {
-        const size_t len = PF_size_string(v) * sizeof (opcode_t);
-        PARROT_IMAGEIOSIZE(SELF)->size += len;
+    VTABLE void push_string(STRING *v) {
+        if (PObj_flag_TEST(private1, SELF)) {
+            /* look for a reference to constant table entry of string */
+            int i;
+            PackFile_ConstTable *table = PARROT_IMAGEIOSIZE(SELF)->pf_ct;
+            for (i = 0; i < table->const_count; i++) {
+                PackFile_Constant *constant = table->constants[i];
+                if (constant->type == PFC_STRING) {
+                    STRING * const sc = constant->u.string;
+                    if (Parrot_str_equal(interp, v, sc)
+                    &&  Parrot_charset_number_of_str(interp, v)
+                    ==  Parrot_charset_number_of_str(interp, sc)
+                    &&  Parrot_encoding_number_of_str(interp, v)
+                    ==  Parrot_encoding_number_of_str(interp, sc)) {
+                        STATICSELF.push_integer(i);
+                        return;
+                    }
+                }
+            }
+            /* XXX
+             * handle cases where the PMC has changed after Parrot_freeze_strings was called
+             * eg: :immediate subs
+             */
+            STATICSELF.push_integer(-1);
+            /* TODO
+             * should really be:
+             * PANIC(INTERP, "string not previously in constant table when freezing to packfile");
+             */
+        }
+
+        {
+            const size_t len = PF_size_string(v) * sizeof (opcode_t);
+            PARROT_IMAGEIOSIZE(SELF)->size += len;
+        }
     }
 
 /*

Copied: branches/codestring/src/pmc/imageiostrings.pmc (from r46234, trunk/src/pmc/imageiostrings.pmc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/codestring/src/pmc/imageiostrings.pmc	Mon May  3 14:39:34 2010	(r46235, copy of r46234, trunk/src/pmc/imageiostrings.pmc)
@@ -0,0 +1,199 @@
+/*
+Copyright (C) 2010, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/pmc/imageiosize.pmc - ImageIOStrings PMC
+
+=head1 DESCRIPTION
+
+Get a list of strings in an object graph. Used in packfile creation.
+
+=cut
+
+*/
+
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
+pmclass ImageIOStrings auto_attrs {
+    ATTR PMC *seen; /* seen hash */
+    ATTR PMC *todo; /* todo list */
+    ATTR PMC *list; /* list of strings seen */
+
+/*
+
+=head1 VTABLES
+
+=over 4
+
+=cut
+
+*/
+
+/*
+
+=item C<void init()>
+
+Initializes the PMC.
+
+=cut
+
+*/
+    VTABLE void init() {
+        PARROT_IMAGEIOSTRINGS(SELF)->todo = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
+
+        PARROT_IMAGEIOSTRINGS(SELF)->seen = Parrot_pmc_new(INTERP, enum_class_Hash);
+        VTABLE_set_pointer(INTERP, PARROT_IMAGEIOSTRINGS(SELF)->seen,
+            parrot_new_intval_hash(INTERP));
+
+        PARROT_IMAGEIOSTRINGS(SELF)->list = Parrot_pmc_new(INTERP, enum_class_ResizableStringArray);
+    }
+
+/*
+
+=item C<void mark()>
+
+Marks the PMC as alive.
+
+=cut
+
+*/
+    VTABLE void mark() {
+        Parrot_gc_mark_PMC_alive(INTERP, PARROT_IMAGEIOSTRINGS(SELF)->todo);
+        Parrot_gc_mark_PMC_alive(INTERP, PARROT_IMAGEIOSTRINGS(SELF)->seen);
+        Parrot_gc_mark_PMC_alive(INTERP, PARROT_IMAGEIOSTRINGS(SELF)->list);
+    }
+
+/*
+
+=item C<VTABLE PMC *get_pmc()>
+
+Gets the result PMC after a thaw.
+
+=cut
+
+*/
+
+    VTABLE PMC *get_pmc() {
+        return PARROT_IMAGEIOSTRINGS(SELF)->list;
+    }
+
+/*
+
+=item C<VTABLE PMC *get_iter()>
+
+Get the C<todo> list for this freeze/thaw for iterating over.
+
+=cut
+
+*/
+
+    VTABLE PMC *get_iter() {
+        return PARROT_IMAGEIOSTRINGS(SELF)->todo;
+    }
+
+/*
+
+=item C<VTABLE INTVAL get_integer()>
+
+Returns the flags describing the visit action
+
+=cut
+
+*/
+
+    VTABLE INTVAL get_integer() {
+        return VISIT_FREEZE_NORMAL;
+    }
+
+
+/*
+
+=item C<VTABLE void push_integer(INTVAL v)>
+
+Do nothing.
+
+=cut
+
+*/
+
+    VTABLE void push_integer(INTVAL v) { }
+
+
+/*
+
+=item C<VTABLE void push_float(FLOATVAL v)>
+
+Do nothing.
+
+=cut
+
+*/
+
+    VTABLE void push_float(FLOATVAL v) { }
+
+
+/*
+
+=item C<VTABLE void push_string(STRING *v)>
+
+Adds the string to the list of strings.
+
+=cut
+
+*/
+
+    VTABLE void push_string(STRING *v)
+    {
+        VTABLE_push_string(INTERP, PARROT_IMAGEIOSTRINGS(SELF)->list, v);
+    }
+
+/*
+
+=item C<VTABLE void push_pmc(PMC *v)>
+
+Checks new pmcs for strings.
+
+=cut
+
+*/
+
+    VTABLE void push_pmc(PMC *v) {
+        if (!PMC_IS_NULL(v)) {
+            Hash * const hash    = (Hash *)VTABLE_get_pointer(INTERP,
+                                                PARROT_IMAGEIOSTRINGS(SELF)->seen);
+            HashBucket * const b = parrot_hash_get_bucket(INTERP, hash, v);
+            if (!b) {
+                /* not yet seen */
+                parrot_hash_put(INTERP, hash, v, v);
+                VTABLE_push_pmc(INTERP, PARROT_IMAGEIOSTRINGS(SELF)->todo, v);
+                VTABLE_freeze(INTERP, v, SELF);
+            }
+        }
+    }
+
+    VTABLE void set_pmc(PMC *p)
+    {
+        STATICSELF.push_pmc(p);
+        Parrot_visit_loop_visit(INTERP, SELF);
+    }
+
+/*
+
+=back
+
+=cut
+
+*/
+
+}
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */

Modified: branches/codestring/src/pmc/integer.pmc
==============================================================================
--- branches/codestring/src/pmc/integer.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/integer.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -102,6 +102,13 @@
         attrs->iv      = VTABLE_get_integer(INTERP, init);
     }
 
+    VTABLE void init_int(INTVAL init) {
+        Parrot_Integer_attributes * const attrs =
+            (Parrot_Integer_attributes *)PMC_data(SELF);
+
+        attrs->iv = init;
+    }
+
 /*
 
 =item C<PMC *clone()>

Modified: branches/codestring/src/pmc/namespace.pmc
==============================================================================
--- branches/codestring/src/pmc/namespace.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/namespace.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -532,7 +532,7 @@
                     break;
                 }
                 ns = Parrot_get_namespace_keyed_str(INTERP, ns, name);
-                i++;
+                ++i;
             }
             return ns;
         }
@@ -818,7 +818,7 @@
             Parrot_NameSpace_attributes *nsinfo = PARROT_NAMESPACE(ns);
             VTABLE_unshift_string(INTERP, ar, nsinfo->name);
             ns = nsinfo->parent;
-            elements++;
+            ++elements;
         }
 
         /* remove the NULL string of the namespace root */

Modified: branches/codestring/src/pmc/nci.pmc
==============================================================================
--- branches/codestring/src/pmc/nci.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/nci.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -64,7 +64,7 @@
     size_t  j            = 0;
     size_t  i;
 
-    for (i = 1; i < sig_length; i++) {
+    for (i = 1; i < sig_length; ++i) {
         const INTVAL c = Parrot_str_indexed(interp, sig, i);
 
         switch (c) {

Modified: branches/codestring/src/pmc/object.pmc
==============================================================================
--- branches/codestring/src/pmc/object.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/object.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -883,11 +883,10 @@
         UNLOCK_INTERPRETER(master);
 
         ret = SELF;
-        _true = Parrot_pmc_new(INTERP, enum_class_Integer);
-
         /* Setting the '_ro' property switches to the read-only vtable */
-        VTABLE_set_integer_native(INTERP, _true, 1);
+        _true = Parrot_pmc_new_init_int(INTERP, enum_class_Integer, 1);
         VTABLE_setprop(INTERP, ret, CONST_STRING(interp, "_ro"), _true);
+
         SELF->vtable->pmc_class = master->vtables[type_num]->pmc_class;
         Parrot_gc_add_pmc_sync(INTERP, ret);
         PObj_is_PMC_shared_SET(ret);

Modified: branches/codestring/src/pmc/oplib.pmc
==============================================================================
--- branches/codestring/src/pmc/oplib.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/oplib.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -41,8 +41,10 @@
     }
 
     VTABLE void init() {
-        if (OPLIB_OPCODE_CACHE == NULL)
+        if (OPLIB_OPCODE_CACHE == NULL) {
             OPLIB_OPCODE_CACHE = Parrot_pmc_new(INTERP, enum_class_Hash);
+            Parrot_pmc_gc_register(INTERP, OPLIB_OPCODE_CACHE);
+        }
         PObj_custom_mark_SET(SELF);
     }
 

Modified: branches/codestring/src/pmc/orderedhashiterator.pmc
==============================================================================
--- branches/codestring/src/pmc/orderedhashiterator.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/orderedhashiterator.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -183,8 +183,8 @@
                 ORDERED_HASH_ITEM_KEY);
         attrs->next_entry = VTABLE_get_pmc_keyed_int(INTERP, attrs->next_entry,
                 ORDERED_HASH_ITEM_NEXT);
-        attrs->pos++;
-        attrs->elements--;
+        ++attrs->pos;
+        --attrs->elements;
 
         return ret;
     }
@@ -214,8 +214,8 @@
                 ORDERED_HASH_ITEM_KEY);
         attrs->next_entry = VTABLE_get_pmc_keyed_int(INTERP, attrs->next_entry,
                 ORDERED_HASH_ITEM_PREV);
-        attrs->pos--;
-        attrs->elements--;
+        --attrs->pos;
+        --attrs->elements;
 
         return ret;
     }

Modified: branches/codestring/src/pmc/parrotinterpreter.pmc
==============================================================================
--- branches/codestring/src/pmc/parrotinterpreter.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/parrotinterpreter.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -351,7 +351,9 @@
 
     VTABLE INTVAL get_integer() {
         const Parrot_Interp i = PMC_interp(SELF);
-        return (INTVAL)i->thread_data->tid;
+        if (i->thread_data)
+          return (INTVAL)i->thread_data->tid;
+        return 0;
     }
 
 /*
@@ -651,7 +653,7 @@
 
 */
 
-    VTABLE INTVAL is_equal(PMC *val) {
+    MULTI INTVAL is_equal(ParrotInterpreter val) {
         Parrot_Interp self  = PMC_interp(SELF);
         Parrot_Interp other = PMC_interp(val);
 
@@ -665,6 +667,22 @@
         return 0;
     }
 
+    MULTI INTVAL is_equal(ParrotThread value) {
+        Parrot_Interp self  = PMC_interp(SELF);
+
+        if (!self->thread_data)
+            return 0;
+
+        return self->thread_data->tid == (UINTVAL) VTABLE_get_integer(interp, value);
+    }
+
+    MULTI INTVAL is_equal(DEFAULT value) {
+        Parrot_ex_throw_from_c_args(INTERP, NULL,
+                EXCEPTION_INTERNAL_NOT_IMPLEMENTED,
+                "ParrotInterpreter: no multiple dispatch variant 'is_equal' for %Ss",
+                VTABLE_name(interp, value));
+    }
+
 /*
 
 =item C<void visit(PMC *info)>

Deleted: branches/codestring/src/pmc/parrotrunningthread.pmc
==============================================================================
--- branches/codestring/src/pmc/parrotrunningthread.pmc	Mon May  3 14:39:34 2010	(r46234)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,164 +0,0 @@
-/*
-Copyright (C) 2006-2008, Parrot Foundation.
-$Id$
-
-=head1 NAME
-
-src/pmc/parrotrunningthread.pmc -- Represents a running Parrot Thread.
-
-=head1 DESCRIPTION
-
-This type represents a running parrot thread.
-
-It provides the following methods:
-    - join
-    - detach
-    - kill
-
-Note that a running thread object becomes invalid when a thread
-finishes while detached or joined. Further operations on the
-object may have unexpected behavior, such as manipulating an
-unrelated thread.
-
-=head2 Methods
-
-=over 4
-
-=cut
-
-*/
-
-#include "parrot/embed.h"
-
-#define PMC_tid(x) (PARROT_PARROTRUNNINGTHREAD(x))->tid
-
-/* HEADERIZER HFILE: none */
-/* HEADERIZER BEGIN: static */
-/* HEADERIZER END: static */
-
-pmclass ParrotRunningThread no_ro auto_attrs {
-    ATTR INTVAL tid; /* thread id */
-
-/*
-
-=item C<void init()>
-
-Create a new, invalid handle to a running thread.
-
-=cut
-
-*/
-
-    VTABLE void init() {
-        PMC_tid(SELF) = -1;
-    }
-
-/*
-
-=item C<void init_pmc(PMC *tid)>
-
-Create a new running thread referring to the thread with
-the Thread ID specified in C<tid>.
-
-=cut
-
-*/
-
-    VTABLE void init_pmc(PMC *tid) {
-        PMC_tid(SELF) = VTABLE_get_integer(INTERP, tid);
-    }
-
-/*
-
-=item C<INTVAL get_integer()>
-
-Return the thread ID of this thread.
-
-=cut
-
-*/
-
-    VTABLE INTVAL get_integer() {
-        return PMC_tid(SELF);
-    }
-
-/*
-
-=item C<void set_integer_native(INTVAL new_tid)>
-
-Change the thread ID we refer to to C<new_tid>.
-
-=cut
-
-*/
-
-    VTABLE void set_integer_native(INTVAL new_tid) {
-        if (new_tid < 0)
-            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INTERP_ERROR,
-                "Attempt to set invalid thread id %d", (int)new_tid);
-        PMC_tid(SELF) = new_tid;
-    }
-/*
-
-=item C<METHOD join()>
-
-Join the thread, returning whatever its main method returns.
-
-=cut
-
-*/
-    METHOD join() {
-        PMC *ret = pt_thread_join(INTERP,
-            (UINTVAL)VTABLE_get_integer(INTERP, SELF));
-
-        /* invalidate self */
-        PMC_tid(SELF) = -1;
-
-        RETURN(PMC *ret);
-    }
-
-/*
-
-=item C<METHOD detach()>
-
-Detach the thread so it cannot be joined and will free its resources
-immediately when it exits.
-
-=cut
-
-*/
-
-    METHOD detach() {
-        pt_thread_detach((UINTVAL)VTABLE_get_integer(INTERP, SELF));
-    }
-
-/*
-
-=item C<METHOD kill()>
-
-Terminate a running thread.
-
-=cut
-
-*/
-
-    METHOD kill() {
-        pt_thread_kill((UINTVAL)VTABLE_get_integer(INTERP, SELF));
-    }
-
-}
-
-/*
-
-=back
-
-=cut
-
-*/
-
-/*
- * Local variables:
- *   c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */

Copied: branches/codestring/src/pmc/parrotthread.pmc (from r46234, trunk/src/pmc/parrotthread.pmc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/codestring/src/pmc/parrotthread.pmc	Mon May  3 14:39:34 2010	(r46235, copy of r46234, trunk/src/pmc/parrotthread.pmc)
@@ -0,0 +1,181 @@
+/*
+Copyright (C) 2001-2010, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/pmc/parrotthread.pmc - Represents a Parrot Thread.
+
+=head1 DESCRIPTION
+
+This type represents a  parrot thread.
+
+It provides the following methods:
+    - join
+    - detach
+    - kill
+    - pid
+
+=head2 Methods
+
+=over 4
+
+=cut
+
+*/
+
+#include "parrot/embed.h"
+
+
+pmclass ParrotThread no_ro auto_attrs {
+    ATTR INTVAL tid; /* thread id */
+
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
+/*
+
+=item C<void init()>
+
+Create a new, invalid handle to a running thread.
+
+=cut
+
+*/
+
+    VTABLE void init() {
+        VTABLE_set_integer_native(interp, SELF, -1);
+    }
+
+/*
+
+=item C<void init_pmc(PMC *notused)>
+
+Create a new, invalid handle to a running thread.
+
+=cut
+
+*/
+
+    VTABLE void init_pmc(PMC *notused) {
+        VTABLE_set_integer_native(interp, SELF, -1);
+    }
+
+/*
+
+=item C<INTVAL get_integer()>
+
+Return the thread ID of this thread.
+
+=cut
+
+*/
+
+    VTABLE INTVAL get_integer() {
+        INTVAL ttid;
+        GETATTR_ParrotThread_tid(interp, SELF, ttid);
+        return ttid;
+    }
+
+    VTABLE void set_integer_native(INTVAL ttid) {
+        SETATTR_ParrotThread_tid(interp, SELF, ttid);
+    }
+
+
+/*
+
+=item C<METHOD run(closure)>
+
+Join the thread, returning whatever its main method returns.
+
+=cut
+
+*/
+    METHOD run_clone(PMC *sub, PMC *args :slurpy) {
+        INTVAL ttid;
+        if (PMC_IS_NULL(sub)) {
+            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+                    "Invalid thread sub");
+        }
+
+        ttid = pt_thread_create_run(interp,
+                                    enum_class_ThreadInterpreter, PARROT_CLONE_DEFAULT, sub, args);
+        VTABLE_set_integer_native(interp, SELF, ttid);
+    }
+
+    METHOD run(INTVAL clone_flags, PMC *sub, PMC *args :slurpy) {
+        INTVAL ttid;
+        if (PMC_IS_NULL(sub)) {
+            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+                    "Invalid thread sub");
+        }
+
+        ttid = pt_thread_create_run(interp, enum_class_ThreadInterpreter, clone_flags, sub, args);
+        VTABLE_set_integer_native(interp, SELF, ttid);
+    }
+/*
+
+=item C<METHOD join()>
+
+Join the thread, returning whatever its main method returns.
+
+=cut
+
+*/
+    METHOD join() {
+        PMC *ret;
+        INTVAL ttid = VTABLE_get_integer(INTERP, SELF);
+
+        ret = pt_thread_join(INTERP, ttid);
+        /* invalidate self */
+        VTABLE_set_integer_native(interp, SELF, -1);
+
+        RETURN(PMC *ret);
+    }
+
+/*
+
+=item C<METHOD detach()>
+
+Detach the thread so it cannot be joined and will free its resources
+immediately when it exits.
+
+=cut
+
+*/
+
+    METHOD detach() {
+        pt_thread_detach((UINTVAL)VTABLE_get_integer(INTERP, SELF));
+    }
+
+/*
+
+=item C<METHOD kill()>
+
+Terminate a running thread.
+
+=cut
+
+*/
+
+    METHOD kill() {
+        pt_thread_kill((UINTVAL)VTABLE_get_integer(INTERP, SELF));
+    }
+
+}
+
+/*
+
+=back
+
+=cut
+
+*/
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */

Modified: branches/codestring/src/pmc/pmcproxy.pmc
==============================================================================
--- branches/codestring/src/pmc/pmcproxy.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/pmcproxy.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -115,8 +115,7 @@
         PObj_is_class_SET(SELF);
     }
 
-    VTABLE void init_pmc(PMC *init_data) {
-        const INTVAL type_num = VTABLE_get_integer(interp, init_data);
+    VTABLE void init_int(INTVAL type_num) {
         Parrot_Class_attributes *proxy_info;
         INTVAL mro_length, i;
 
@@ -136,7 +135,7 @@
 
         /* Build MRO (skip ourself). */
         mro_length = VTABLE_elements(interp, interp->vtables[type_num]->mro);
-        for (i = 1; i < mro_length; i++) {
+        for (i = 1; i < mro_length; ++i) {
             PMC    *pclass = VTABLE_get_pmc_keyed_int(interp, interp->vtables[type_num]->mro, i);
             PMC    *cns    = pclass->vtable->_namespace;
             STRING *cname  = pclass->vtable->whoami;
@@ -185,6 +184,11 @@
         }
     }
 
+    VTABLE void init_pmc(PMC *init_data) {
+        const INTVAL type_num = VTABLE_get_integer(interp, init_data);
+        SELF.init_int(type_num);
+    }
+
 /*
 
 =item C<PMC *instantiate(PMC *init)>
@@ -260,7 +264,7 @@
          * for 'isa' on the original comparison. */
         num_classes = VTABLE_elements(interp, _proxy->parents);
 
-        for (i = 0; i < num_classes; i++) {
+        for (i = 0; i < num_classes; ++i) {
             PMC * const cur_class = VTABLE_get_pmc_keyed_int(interp,
                 _proxy->parents, i);
 

Modified: branches/codestring/src/pmc/resizablepmcarray.pmc
==============================================================================
--- branches/codestring/src/pmc/resizablepmcarray.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/resizablepmcarray.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -99,7 +99,7 @@
             PMC_array(SELF) = mem_gc_realloc_n_typed_zeroed(INTERP,
                     PMC_array(SELF), cur, i, PMC *);
 
-            for (; i < cur; i++) {
+            for (; i < cur; ++i) {
                 (PMC_array(SELF))[i] = PMCNULL;
             }
 
@@ -292,7 +292,7 @@
         for (i = idx; i < n - 1; ++i)
             data[i] = data[i + 1];
 
-        PMC_size(SELF)--;
+        --PMC_size(SELF);
     }
 
 /*
@@ -382,9 +382,7 @@
     VTABLE void push_integer(INTVAL value) {
 
         const INTVAL size = PMC_size(SELF);
-        PMC   * const val = Parrot_pmc_new(INTERP, enum_class_Integer);
-
-        VTABLE_set_integer_native(INTERP, val, value);
+        PMC   * const val = Parrot_pmc_new_init_int(INTERP, enum_class_Integer, value);
         SELF.set_pmc_keyed_int(size, val);
 
         return;
@@ -531,11 +529,10 @@
     VTABLE void unshift_integer(INTVAL value) {
 
         const INTVAL size = PMC_size(SELF);
-        PMC * const val   = Parrot_pmc_new(INTERP, enum_class_Integer);
+        PMC * const val   = Parrot_pmc_new_init_int(INTERP, enum_class_Integer, value);
         PMC    **data;
         INTVAL   i;
 
-        VTABLE_set_integer_native(INTERP, val, value);
         SELF.set_integer_native(size + 1);
 
         data = PMC_array(SELF);
@@ -703,7 +700,7 @@
         /* shrink the array */
         if (shift < 0) {
             /* start at offset so we don't overwrite values we'll need */
-            for (i = offset + count; i < length; i++)
+            for (i = offset + count; i < length; ++i)
                 VTABLE_set_pmc_keyed_int(INTERP, SELF, i + shift,
                     VTABLE_get_pmc_keyed_int(INTERP, SELF, i));
 
@@ -715,13 +712,13 @@
 
             /* move the existing values */
             /* start at length-1 so we don't overwrite values we'll need */
-            for (i = length - 1; i >= offset; i--)
+            for (i = length - 1; i >= offset; --i)
                 VTABLE_set_pmc_keyed_int(INTERP, SELF, i + shift,
                     VTABLE_get_pmc_keyed_int(INTERP, SELF, i));
         }
 
         /* copy the new values */
-        for (i = 0; i < elems; i++)
+        for (i = 0; i < elems; ++i)
             VTABLE_set_pmc_keyed_int(INTERP, SELF, i + offset,
                 VTABLE_get_pmc_keyed_int(INTERP, value, i));
     }

Modified: branches/codestring/src/pmc/resizablestringarray.pmc
==============================================================================
--- branches/codestring/src/pmc/resizablestringarray.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/resizablestringarray.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -225,7 +225,7 @@
             GET_ATTR_size(interp, SELF, old_size);
             if (new_size > old_size) {
                 INTVAL i;
-                for (i = old_size; i < new_size; i++)
+                for (i = old_size; i < new_size; ++i)
                     str_array[i] = NULL;
             }
 
@@ -249,7 +249,7 @@
                             cur, resize_threshold, STRING*));
             GET_ATTR_str_array(INTERP, SELF, str_array);
 
-            for (; i < cur; i++)
+            for (; i < cur; ++i)
                 str_array[i] = NULL;
 
             SET_ATTR_size(INTERP, SELF, new_size);
@@ -605,7 +605,7 @@
         /* shrink the array */
         if (shift < 0) {
             /* start at offset so we don't overwrite values we'll need */
-            for (i = offset+count; i < length; i++)
+            for (i = offset+count; i < length; ++i)
                 VTABLE_set_pmc_keyed_int(INTERP, SELF, i + shift,
                     VTABLE_get_pmc_keyed_int(INTERP, SELF, i));
 
@@ -617,13 +617,13 @@
 
             /* move the existing values */
             /* start at length-1 so we don't overwrite values we'll need */
-            for (i = length - 1; i >= offset; i--)
+            for (i = length - 1; i >= offset; --i)
                 VTABLE_set_pmc_keyed_int(INTERP, SELF, i + shift,
                     VTABLE_get_pmc_keyed_int(INTERP, SELF, i));
         }
 
         /* copy the new values */
-        for (i = 0; i < elems; i++)
+        for (i = 0; i < elems; ++i)
             VTABLE_set_pmc_keyed_int(INTERP, SELF, i + offset,
                 VTABLE_get_pmc_keyed_int(INTERP, value, i));
     }

Modified: branches/codestring/src/pmc/role.pmc
==============================================================================
--- branches/codestring/src/pmc/role.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/role.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -163,7 +163,7 @@
         PMC    * const role_list = VTABLE_get_pmc_keyed_str(interp, info, roles_str);
         const int role_count     = VTABLE_elements(interp, role_list);
 
-        for (i = 0; i < role_count; i++) {
+        for (i = 0; i < role_count; ++i) {
             PMC * const cur_role = VTABLE_get_pmc_keyed_int(interp, role_list, i);
             VTABLE_add_role(interp, self, cur_role);
         }
@@ -177,7 +177,7 @@
 
         const int attrib_count = VTABLE_elements(interp, attrib_name_list);
 
-        for (i = 0; i < attrib_count; i++) {
+        for (i = 0; i < attrib_count; ++i) {
             STRING * const attrib_name = VTABLE_get_string_keyed_int(interp,
                 attrib_name_list, i);
             VTABLE_add_attribute(interp, self, attrib_name, PMCNULL);
@@ -536,7 +536,7 @@
             return 1;
 
         count = VTABLE_elements(interp, role->roles);
-        for (i = 0; i < count; i++) {
+        for (i = 0; i < count; ++i) {
             PMC *cur_role = VTABLE_get_pmc_keyed_int(interp, role->roles, i);
             if (VTABLE_does(interp, cur_role, role_name))
                 return 1;
@@ -563,7 +563,7 @@
             return 1;
 
         count = VTABLE_elements(interp, this_role->roles);
-        for (i = 0; i < count; i++) {
+        for (i = 0; i < count; ++i) {
             PMC *cur_role = VTABLE_get_pmc_keyed_int(interp, this_role->roles, i);
             if (VTABLE_does_pmc(interp, cur_role, role))
                 return 1;

Modified: branches/codestring/src/pmc/scalar.pmc
==============================================================================
--- branches/codestring/src/pmc/scalar.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/scalar.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -938,9 +938,7 @@
 */
     VTABLE PMC *share_ro() {
         PMC         *ret  = pt_shared_fixup(INTERP, SELF);
-        PMC * const _true = Parrot_pmc_new(INTERP, enum_class_Integer);
-
-        VTABLE_set_integer_native(INTERP, _true, 1);
+        PMC * const _true = Parrot_pmc_new_init_int(INTERP, enum_class_Integer, 1);
 
         /* first set readonly */
         VTABLE_setprop(INTERP, ret, CONST_STRING(INTERP, "_ro"), _true);

Modified: branches/codestring/src/pmc/scheduler.pmc
==============================================================================
--- branches/codestring/src/pmc/scheduler.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/scheduler.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -523,7 +523,7 @@
                 &&   handler->vtable->base_type == enum_class_ExceptionHandler)
                 || (Parrot_str_equal(INTERP, type, event)
                 &&  handler->vtable->base_type == enum_class_EventHandler))
-                        count++;
+                        ++count;
             }
         }
 

Modified: branches/codestring/src/pmc/string.pmc
==============================================================================
--- branches/codestring/src/pmc/string.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/string.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -659,7 +659,7 @@
                 break;
 
             i = i * base + dig;
-            j++;
+            ++j;
         }
 
         if (j < len) {

Modified: branches/codestring/src/pmc/sub.pmc
==============================================================================
--- branches/codestring/src/pmc/sub.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/sub.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -857,7 +857,7 @@
 
                 ASSERT_SIG_PMC(sig);
 
-                for (i = 0; i < sig_length; i++) {
+                for (i = 0; i < sig_length; ++i) {
                     int sig_item = VTABLE_get_integer_keyed_int(INTERP, sig, i);;
                     if (PARROT_ARG_SLURPY_ARRAY_ISSET(sig_item)){
                         if (PARROT_ARG_NAME_ISSET(sig_item))
@@ -866,18 +866,18 @@
                             sub->arg_info->pos_slurpy = 1;
                     }
                     else if (PARROT_ARG_NAME_ISSET(sig_item)) {
-                        i++;
+                        ++i;
                         sig_item = VTABLE_get_integer_keyed_int(INTERP, sig, i);;
                         if (PARROT_ARG_OPTIONAL_ISSET(sig_item))
-                            sub->arg_info->named_optional++;
+                            ++sub->arg_info->named_optional;
                         else
-                            sub->arg_info->named_required++;
+                            ++sub->arg_info->named_required;
                     }
                     else if (!PARROT_ARG_OPT_FLAG_ISSET(sig_item)) {
                         if (PARROT_ARG_OPTIONAL_ISSET(sig_item))
-                            sub->arg_info->pos_optional++;
+                            ++sub->arg_info->pos_optional;
                         else
-                            sub->arg_info->pos_required++;
+                            ++sub->arg_info->pos_required;
                     }
                 }
             }
@@ -907,8 +907,7 @@
                 EXCEPTION_INVALID_OPERATION,
                 "Unknown introspection value '%S'", what);
 
-        retval = Parrot_pmc_new(INTERP, enum_class_Integer);
-        VTABLE_set_integer_native(INTERP, retval, count_found);
+        retval = Parrot_pmc_new_init_int(INTERP, enum_class_Integer, count_found);
         return retval;
     }
 

Modified: branches/codestring/src/pmc/task.pmc
==============================================================================
--- branches/codestring/src/pmc/task.pmc	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc/task.pmc	Mon May  3 14:39:34 2010	(r46235)
@@ -210,8 +210,8 @@
         PMC *value;
 
         if (Parrot_str_equal(interp, name, CONST_STRING(interp, "id"))) {
-            value = Parrot_pmc_new(interp, enum_class_Integer);
-            VTABLE_set_integer_native(interp, value, core_struct->id);
+            value = Parrot_pmc_new_init_int(interp, enum_class_Integer,
+                    core_struct->id);
         }
         else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "type"))) {
             value = Parrot_pmc_new(interp, enum_class_String);
@@ -222,8 +222,8 @@
             VTABLE_set_string_native(interp, value, core_struct->subtype);
         }
         else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "priority"))) {
-            value = Parrot_pmc_new(interp, enum_class_Integer);
-            VTABLE_set_integer_native(interp, value, core_struct->priority);
+            value = Parrot_pmc_new_init_int(interp, enum_class_Integer,
+                    core_struct->priority);
         }
         else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "status"))) {
             value = Parrot_pmc_new(interp, enum_class_String);

Copied: branches/codestring/src/pmc/threadinterpreter.pmc (from r46234, trunk/src/pmc/threadinterpreter.pmc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/codestring/src/pmc/threadinterpreter.pmc	Mon May  3 14:39:34 2010	(r46235, copy of r46234, trunk/src/pmc/threadinterpreter.pmc)
@@ -0,0 +1,91 @@
+/*
+Copyright (C) 2001-2007, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/pmc/threadinterpreter.pmc - INTERNAL Interpreter for OS level worker thread(pthread).
+
+=head1 DESCRIPTION
+
+ThreadInterpreter extends ParrotInterpreter to provide a interpreter
+to be used internally in a OS level worker thread(pthread).
+which supports:
+
+=head2 Methods
+
+=over 4
+
+=cut
+
+*/
+
+#include "parrot/embed.h"
+
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+static void stop_GC(Interp *parent, Interp *thread);
+#define ASSERT_ARGS_stop_GC __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: static */
+
+#define PMC_interp(x) ((Parrot_ParrotInterpreter_attributes *)PMC_data(x))->interp
+
+/*
+ * can't do multi-threaded GC yet
+ * XXX a quick hack to pass the few tests
+ */
+static void
+stop_GC(Interp *parent, Interp *thread)
+{
+    ASSERT_ARGS(stop_GC)
+    Parrot_block_GC_mark(parent);
+    Parrot_block_GC_mark(thread);
+    Parrot_block_GC_sweep(parent);
+    Parrot_block_GC_sweep(thread);
+}
+
+
+
+pmclass ThreadInterpreter extends ParrotInterpreter no_ro {
+
+/*
+
+=item C<void init()>
+
+Initializes the thread.
+
+=cut
+
+*/
+
+    VTABLE void init() {
+        /* protect interpreter creation and list handling */
+        LOCK(interpreter_array_mutex);
+
+        SUPER();
+        pt_add_to_interpreters(INTERP, PMC_interp(SELF));
+
+        UNLOCK(interpreter_array_mutex);
+
+        /* can't allow GC runs for now */
+        stop_GC(INTERP, PMC_interp(SELF));
+    }
+}
+
+/*
+
+=back
+
+=cut
+
+*/
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */

Modified: branches/codestring/src/pmc_freeze.c
==============================================================================
--- branches/codestring/src/pmc_freeze.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/pmc_freeze.c	Mon May  3 14:39:34 2010	(r46235)
@@ -61,12 +61,38 @@
 
 /*
 
+=item C<STRING * Parrot_freeze_pbc(PARROT_INTERP, PMC *pmc, const
+PackFile_ConstTable *pf)>
+
+Freeze to a PackFile.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+STRING *
+Parrot_freeze_pbc(PARROT_INTERP, ARGIN(PMC *pmc), ARGIN(const PackFile_ConstTable *pf)) {
+    ASSERT_ARGS(Parrot_freeze_pbc)
+    PMC *pf_pmc, *visitor;
+
+    pf_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, pf_pmc, (void *)pf);
+
+    visitor  = Parrot_pmc_new_init(interp, enum_class_ImageIO, pf_pmc);
+    VTABLE_set_pmc(interp, visitor, pmc);
+
+    return VTABLE_get_string(interp, visitor);
+}
+
+
+/*
+
 =item C<UINTVAL Parrot_freeze_size(PARROT_INTERP, PMC *pmc)>
 
 Get the size of an image to be frozen without allocating a large buffer.
 
-Used in C<Packfile_Constant_pack_size>.
-
 =cut
 
 */
@@ -86,6 +112,58 @@
     return int_result;
 }
 
+/*
+
+=item C<UINTVAL Parrot_freeze_pbc_size(PARROT_INTERP, PMC *pmc, const
+PackFile_ConstTable *pf)>
+
+Get the size of an image if it were created using C<Parrot_freeze_pbc>.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+UINTVAL
+Parrot_freeze_pbc_size(PARROT_INTERP, ARGIN(PMC *pmc), ARGIN(const PackFile_ConstTable *pf))
+{
+    ASSERT_ARGS(Parrot_freeze_pbc_size)
+    PMC     *pf_pmc, *visitor, *pmc_result;
+
+    pf_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, pf_pmc, (void *)pf);
+
+    visitor = Parrot_pmc_new_init(interp, enum_class_ImageIOSize, pf_pmc);
+    VTABLE_set_pmc(interp, visitor, pmc);
+
+    pmc_result = VTABLE_get_pmc(interp, visitor);
+    return VTABLE_get_integer(interp, pmc_result);
+}
+
+
+/*
+
+=item C<PMC * Parrot_freeze_strings(PARROT_INTERP, PMC *pmc)>
+
+Get the strings of a PMC to be frozen.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+PMC *
+Parrot_freeze_strings(PARROT_INTERP, PMC *pmc)
+{
+    ASSERT_ARGS(Parrot_freeze_strings)
+    PMC *visitor = Parrot_pmc_new(interp, enum_class_ImageIOStrings);
+    VTABLE_set_pmc(interp, visitor, pmc);
+    return VTABLE_get_pmc(interp, visitor);
+}
+
 
 /*
 
@@ -146,6 +224,47 @@
 
 /*
 
+=item C<PMC* Parrot_thaw_pbc(PARROT_INTERP, STRING *image, PackFile_ConstTable
+*pf)>
+
+Thaw a pmc frozen by Parrot_freeze_pbc.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC*
+Parrot_thaw_pbc(PARROT_INTERP, ARGIN(STRING *image), ARGIN(PackFile_ConstTable *pf))
+{
+    ASSERT_ARGS(Parrot_thaw_pbc)
+    PMC *info, *pf_pmc, *result;
+
+    pf_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, pf_pmc, pf);
+
+    info = Parrot_pmc_new_init(interp, enum_class_ImageIO, pf_pmc);
+
+    /* TODO
+     * Find out what broken code depends on blocking GC here and fix it, regardless of performance
+     * wins.
+     */
+    Parrot_block_GC_mark(interp);
+    Parrot_block_GC_sweep(interp);
+
+    VTABLE_set_string_native(interp, info, image);
+    result = VTABLE_get_pmc(interp, info);
+
+    Parrot_unblock_GC_mark(interp);
+    Parrot_unblock_GC_sweep(interp);
+
+    return result;
+}
+
+/*
+
 =item C<PMC* Parrot_thaw_constants(PARROT_INTERP, STRING *image)>
 
 Thaws constants, used by PackFile for unpacking PMC constants.
@@ -206,7 +325,7 @@
     PMC * const todo    = VTABLE_get_iter(interp, info);
 
     /* can't cache upper limit, visit may append items */
-    for (i = 0; i < VTABLE_elements(interp, todo); i++) {
+    for (i = 0; i < VTABLE_elements(interp, todo); ++i) {
         PMC * const current = VTABLE_get_pmc_keyed_int(interp, todo, i);
         if (!current)
             Parrot_ex_throw_from_c_args(interp, NULL, 1,

Modified: branches/codestring/src/runcore/cores.c
==============================================================================
--- branches/codestring/src/runcore/cores.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/runcore/cores.c	Mon May  3 14:39:34 2010	(r46235)
@@ -73,7 +73,7 @@
 structure to execute opcodes. Here's a brief example of how this
 architecture works:
 
-  for( ; ; current_opcode++) {
+  for( ; ; ++current_opcode) {
       switch(*current_opcode) {
           case opcode_1:
               ...

Modified: branches/codestring/src/runcore/profiling.c
==============================================================================
--- branches/codestring/src/runcore/profiling.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/runcore/profiling.c	Mon May  3 14:39:34 2010	(r46235)
@@ -334,7 +334,7 @@
         preop_ctx->current_pc = pc;
         preop_pc              = pc;
 
-        runcore->level++;
+        ++runcore->level;
         Profiling_exit_check_CLEAR(runcore);
 
         runcore->op_start  = Parrot_hires_get_time();
@@ -349,7 +349,7 @@
         else
             op_time = runcore->op_finish - runcore->op_start;
 
-        runcore->level--;
+        --runcore->level;
 
         /* if current context changed since the last printing of a CS line... */
         /* Occasionally the ctx stays the same while the sub changes, possible
@@ -375,7 +375,7 @@
                 ns_separator = Parrot_str_new(interp, ";", 1);
 
                 i = MAX_NS_DEPTH - 1;
-                for (;ns ; i--) {
+                for (;ns ; --i) {
                     if (i < 0) {
                         /* should probably warn about truncated namespace here */
                         break;
@@ -384,9 +384,8 @@
                     GETATTR_NameSpace_parent(interp, ns, ns);
                 }
 
-                i++;
-                i++; /* the root namespace has an empty name, so ignore it */
-                for (;i < MAX_NS_DEPTH; i++) {
+                i += 2; /* the root namespace has an empty name, so ignore it */
+                for (;i < MAX_NS_DEPTH; ++i) {
                     full_ns = Parrot_str_concat(interp, full_ns, ns_names[i]);
                     full_ns = Parrot_str_concat(interp, full_ns, ns_separator);
                 }
@@ -511,7 +510,7 @@
     pprof_data[PPROF_DATA_OPNAME] = (PPROF_DATA) "noop";
     runcore->output_fn(runcore, pprof_data, PPROF_LINE_OP);
 
-    runcore->runloop_count++;
+    ++runcore->runloop_count;
 }
 
 /*

Modified: branches/codestring/src/runcore/trace.c
==============================================================================
--- branches/codestring/src/runcore/trace.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/runcore/trace.c	Mon May  3 14:39:34 2010	(r46235)
@@ -316,7 +316,7 @@
         INTVAL i;
         len += Parrot_io_eprintf(debugger, " ");
         /* pass 1 print arguments */
-        for (i = s; i < n; i++) {
+        for (i = s; i < n; ++i) {
             const opcode_t o = pc[i];
 
             if (i < info->op_count)
@@ -415,7 +415,7 @@
             Parrot_io_eprintf(debugger, "\t");
 
         /* pass 2 print argument details if needed */
-        for (i = 1; i < n; i++) {
+        for (i = 1; i < n; ++i) {
             const opcode_t o = pc[i];
             if (i < info->op_count)
                 type = info->types[i - 1];

Modified: branches/codestring/src/scheduler.c
==============================================================================
--- branches/codestring/src/scheduler.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/scheduler.c	Mon May  3 14:39:34 2010	(r46235)
@@ -445,7 +445,7 @@
         LOCK(sched_struct->msg_lock);
         /* Search the task index for GC suspend tasks */
         num_tasks = VTABLE_elements(interp, sched_struct->messages);
-        for (index = 0; index < num_tasks; index++) {
+        for (index = 0; index < num_tasks; ++index) {
             PMC *message = VTABLE_get_pmc_keyed_int(interp, sched_struct->messages, index);
             if (!PMC_IS_NULL(message)
             &&   Parrot_str_equal(interp, VTABLE_get_string(interp, message),
@@ -612,11 +612,11 @@
                 switch (htype) {
                   case Hexception:
                     if (VTABLE_isa(interp, handler, handler_name))
-                        count++;
+                        ++count;
                     break;
                   case Hevent:
                     if (handler->vtable->base_type == enum_class_EventHandler)
-                        count++;
+                        ++count;
                     break;
                   default:
                     break;
@@ -1069,7 +1069,7 @@
 
     /* Sweep the wait list for completed timers */
     num_tasks = VTABLE_elements(interp, sched_struct->wait_index);
-    for (index = 0; index < num_tasks; index++) {
+    for (index = 0; index < num_tasks; ++index) {
         INTVAL tid = VTABLE_get_integer_keyed_int(interp, sched_struct->wait_index, index);
         if (tid > 0) {
             PMC *task = VTABLE_get_pmc_keyed_int(interp, sched_struct->task_list, tid);

Modified: branches/codestring/src/spf_render.c
==============================================================================
--- branches/codestring/src/spf_render.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/spf_render.c	Mon May  3 14:39:34 2010	(r46235)
@@ -144,12 +144,12 @@
             if (info->flags & FLAG_PLUS) {
                 STRING * const cs = CONST_STRING(interp, "+");
                 str = Parrot_str_concat(interp, cs, str);
-                len++;
+                ++len;
             }
             else if (info->flags & FLAG_SPACE) {
                 STRING * const cs = CONST_STRING(interp, " ");
                 str = Parrot_str_concat(interp, cs, str);
-                len++;
+                ++len;
             }
         }
 
@@ -340,7 +340,7 @@
     STRING *substr = NULL;
     char tc[PARROT_SPRINTF_BUFFER_SIZE];
 
-    for (i = 0; i < pat_len; i++) {
+    for (i = 0; i < pat_len; ++i) {
         if (string_ord(interp, pat, i) == '%') {        /* % */
             if (len) {
                 substr = Parrot_str_substr(interp, pat, old, len);
@@ -352,9 +352,9 @@
             if (string_ord(interp, pat, i + 1) == '%') {
                 /* skip this one, make next the first char
                  * of literal sequence, starting at old */
-                i++;
-                old++;
-                len++;
+                ++i;
+                ++old;
+                ++len;
                 continue;
             }
             else {
@@ -459,7 +459,7 @@
  *  set flags--the last does all the work.
  */
 
-                for (i++; i < pat_len && info.phase != PHASE_DONE; i++) {
+                for (++i; i < pat_len && info.phase != PHASE_DONE; ++i) {
                     const INTVAL ch = string_ord(interp, pat, i);
 
                     switch (info.phase) {
@@ -783,7 +783,7 @@
                              || ch == 'e' || ch == 'E') {
                                 const size_t tclen = strlen(tc);
                                 size_t j;
-                                for (j = 0; j < tclen; j++) {
+                                for (j = 0; j < tclen; ++j) {
                                     if ((tc[j] == 'e' || tc[j] == 'E')
                                         && (tc[j+1] == '+' || tc[j+1] == '-')
                                         && tc[j+2] == '0'
@@ -831,7 +831,7 @@
                                 STRING * const string = (VTABLE_get_repr(interp, tmp));
                                 STRING * const ts     = handle_flags(interp, &info,
                                                     string, 0, NULL);
-                                obj->index++;
+                                ++obj->index;
 
                                 targ = Parrot_str_concat(interp, targ, ts);
                                 break;
@@ -855,7 +855,7 @@
                             /* fake the old %P and %S commands */
                             if (info.type == SIZE_PMC
                              || info.type == SIZE_PSTR) {
-                                i--;
+                                --i;
                                 goto CASE_s;
                                 /* case 's' will see the SIZE_PMC or SIZE_PSTR
                                  * and assume it was %Ps (or %Ss).  Genius,
@@ -882,10 +882,10 @@
             }
 
             old = i;
-            i--;
+            --i;
         }
         else {
-            len++;
+            ++len;
         }
     }
     if (len) {

Modified: branches/codestring/src/spf_vtable.c
==============================================================================
--- branches/codestring/src/spf_vtable.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/spf_vtable.c	Mon May  3 14:39:34 2010	(r46235)
@@ -450,7 +450,7 @@
             ((PMC *)obj->data),
             (obj->index));
 
-    obj->index++;
+    ++obj->index;
     s = VTABLE_get_string(interp, tmp);
     /* XXX Parrot_str_copy like below? + adjusting bufused */
     return Parrot_str_substr(interp, s, 0, 1);
@@ -473,13 +473,12 @@
 getint_pmc(PARROT_INTERP, INTVAL size, ARGIN(SPRINTF_OBJ *obj))
 {
     ASSERT_ARGS(getint_pmc)
-    HUGEINTVAL ret;
+
     PMC * const tmp = VTABLE_get_pmc_keyed_int(interp,
             ((PMC *)obj->data),
-            (obj->index));
+            (obj->index++));
 
-    obj->index++;
-    ret = VTABLE_get_integer(interp, tmp);
+    HUGEINTVAL ret  = VTABLE_get_integer(interp, tmp);
 
     switch (size) {
       case SIZE_SHORT:
@@ -513,13 +512,12 @@
 getuint_pmc(PARROT_INTERP, INTVAL size, ARGIN(SPRINTF_OBJ *obj))
 {
     ASSERT_ARGS(getuint_pmc)
-    UHUGEINTVAL ret;
+
     PMC * const tmp = VTABLE_get_pmc_keyed_int(interp,
             ((PMC *)obj->data),
-            (obj->index));
+            (obj->index++));
 
-    obj->index++;
-    ret = (UINTVAL)VTABLE_get_integer(interp, tmp);
+    UHUGEINTVAL ret = (UINTVAL)VTABLE_get_integer(interp, tmp);
 
     switch (size) {
       case SIZE_SHORT:
@@ -553,13 +551,11 @@
 getfloat_pmc(PARROT_INTERP, INTVAL size, ARGIN(SPRINTF_OBJ *obj))
 {
     ASSERT_ARGS(getfloat_pmc)
-    HUGEFLOATVAL ret;
-    PMC * const tmp = VTABLE_get_pmc_keyed_int(interp,
+    PMC * const tmp  = VTABLE_get_pmc_keyed_int(interp,
             ((PMC *)obj->data),
-            (obj->index));
+            (obj->index++));
 
-    obj->index++;
-    ret = (HUGEFLOATVAL)(VTABLE_get_number(interp, tmp));
+    HUGEFLOATVAL ret = (HUGEFLOATVAL)(VTABLE_get_number(interp, tmp));
 
     switch (size) {
     case SIZE_SHORT:
@@ -591,14 +587,13 @@
 getstring_pmc(PARROT_INTERP, SHIM(INTVAL size), ARGIN(SPRINTF_OBJ *obj))
 {
     ASSERT_ARGS(getstring_pmc)
-    STRING *s;
+
     PMC * const tmp = VTABLE_get_pmc_keyed_int(interp,
             ((PMC *)obj->data),
-            (obj->index));
+            (obj->index++));
 
-    obj->index++;
-    s = (STRING *)(VTABLE_get_string(interp, tmp));
-    return s;
+    STRING * const str = (STRING *)(VTABLE_get_string(interp, tmp));
+    return str;
 }
 
 /*
@@ -619,11 +614,9 @@
 {
     ASSERT_ARGS(getptr_pmc)
     PMC * const tmp = VTABLE_get_pmc_keyed_int(interp,
-            ((PMC *)obj->data), (obj->index));
+            ((PMC *)obj->data), (obj->index++));
     const INTVAL i  = VTABLE_get_integer(interp, tmp);
 
-    obj->index++;
-
     /* XXX correct? */
     return (void *)i;
 }

Modified: branches/codestring/src/string/api.c
==============================================================================
--- branches/codestring/src/string/api.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/string/api.c	Mon May  3 14:39:34 2010	(r46235)
@@ -1022,7 +1022,7 @@
         UINTVAL i;
         char *             destpos = dest->strstart;
         const char * const srcpos  = s->strstart;
-        for (i = 0; i < num; i++) {
+        for (i = 0; i < num; ++i) {
             mem_sys_memcopy(destpos, srcpos, length);
             destpos += length;
         }
@@ -2014,7 +2014,7 @@
                 d = d*10 + (c-'0');
                 if (d >= max_safe)
                     d_is_safe = 0;
-                d_length++;
+                ++d_length;
             }
             else if (c == 'e' || c == 'E')
                 state = parse_after_e;
@@ -2583,8 +2583,8 @@
         if (d == offs) {
             /* we did it in place - no action */
             ++d;
-            iter.bytepos++;
-            iter.charpos++;
+            ++(iter.bytepos);
+            ++(iter.charpos);
             continue;
         }
 

Modified: branches/codestring/src/string/charset.c
==============================================================================
--- branches/codestring/src/string/charset.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/string/charset.c	Mon May  3 14:39:34 2010	(r46235)
@@ -348,7 +348,7 @@
         all_charsets->set = mem_gc_realloc_n_typed_zeroed(interp,
                 all_charsets->set, n + 1, n, One_charset);
 
-    all_charsets->n_charsets++;
+    ++all_charsets->n_charsets;
     all_charsets->set[n].charset      = charset;
     all_charsets->set[n].n_converters = 0;
 
@@ -372,7 +372,7 @@
 {
     ASSERT_ARGS(Parrot_str_internal_register_charset_names)
     int n;
-    for (n = 0; n < all_charsets->n_charsets; n++)
+    for (n = 0; n < all_charsets->n_charsets; ++n)
         all_charsets->set[n].name =
             Parrot_str_new_constant(interp, all_charsets->set[n].charset->name);
 }

Modified: branches/codestring/src/string/charset/ascii.c
==============================================================================
--- branches/codestring/src/string/charset/ascii.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/string/charset/ascii.c	Mon May  3 14:39:34 2010	(r46235)
@@ -316,7 +316,7 @@
         char * const buffer = result->strstart;
         UINTVAL offset;
 
-        for (offset = 0; offset < n; offset++) {
+        for (offset = 0; offset < n; ++offset) {
             buffer[offset] = (char)toupper((unsigned char)buffer[offset]);
         }
     }
@@ -346,7 +346,7 @@
         char * const buffer = result->strstart;
         UINTVAL offset;
 
-        for (offset = 0; offset < n; offset++) {
+        for (offset = 0; offset < n; ++offset) {
             buffer[offset] = (char)tolower((unsigned char)buffer[offset]);
         }
     }
@@ -379,7 +379,7 @@
         UINTVAL offset;
 
         buffer[0] = (char)toupper((unsigned char)buffer[0]);
-        for (offset = 1; offset < n; offset++) {
+        for (offset = 1; offset < n; ++offset) {
             buffer[offset] = (char)tolower((unsigned char)buffer[offset]);
         }
     }

Modified: branches/codestring/src/string/charset/iso-8859-1.c
==============================================================================
--- branches/codestring/src/string/charset/iso-8859-1.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/string/charset/iso-8859-1.c	Mon May  3 14:39:34 2010	(r46235)
@@ -331,7 +331,7 @@
         return result;
 
     buffer = (unsigned char *)result->strstart;
-    for (offset = 0; offset < result->strlen; offset++) {
+    for (offset = 0; offset < result->strlen; ++offset) {
         unsigned int c = buffer[offset]; /* XXX use encoding ? */
         if (c >= 0xe0 && c != 0xf7)
             c &= ~0x20;
@@ -367,7 +367,7 @@
         return result;
 
     buffer = (unsigned char *)result->strstart;
-    for (offset = 0; offset < result->strlen; offset++) {
+    for (offset = 0; offset < result->strlen; ++offset) {
         unsigned int c = buffer[offset];
         if (c >= 0xc0 && c != 0xd7 && c <= 0xde)
             c |= 0x20;
@@ -411,7 +411,7 @@
         c = toupper((unsigned char)c);
     buffer[0] = (unsigned char)c;
 
-    for (offset = 1; offset < result->strlen; offset++) {
+    for (offset = 1; offset < result->strlen; ++offset) {
         c = buffer[offset];
         if (c >= 0xc0 && c != 0xd7 && c <= 0xde)
             c |= 0x20;

Modified: branches/codestring/src/string/encoding.c
==============================================================================
--- branches/codestring/src/string/encoding.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/string/encoding.c	Mon May  3 14:39:34 2010	(r46235)
@@ -327,7 +327,7 @@
     else
         all_encodings->enc = mem_gc_realloc_n_typed_zeroed(interp,
                 all_encodings->enc, n + 1, n, One_encoding);
-    all_encodings->n_encodings++;
+    ++all_encodings->n_encodings;
     all_encodings->enc[n].encoding = encoding;
 
     return 1;
@@ -351,7 +351,7 @@
 {
     ASSERT_ARGS(Parrot_str_internal_register_encoding_names)
     int n;
-    for (n = 0; n < all_encodings->n_encodings; n++)
+    for (n = 0; n < all_encodings->n_encodings; ++n)
         all_encodings->enc[n].name =
             Parrot_str_new_constant(interp, all_encodings->enc[n].encoding->name);
 }

Modified: branches/codestring/src/string/encoding/fixed_8.c
==============================================================================
--- branches/codestring/src/string/encoding/fixed_8.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/string/encoding/fixed_8.c	Mon May  3 14:39:34 2010	(r46235)
@@ -388,7 +388,7 @@
 {
     ASSERT_ARGS(fixed8_get_next)
     const UINTVAL c = get_byte(interp, iter->str, iter->charpos++);
-    iter->bytepos++;
+    ++iter->bytepos;
     return c;
 }
 
@@ -409,7 +409,7 @@
 {
     ASSERT_ARGS(fixed8_set_next)
     set_byte(interp, iter->str, iter->charpos++, c);
-    iter->bytepos++;
+    ++iter->bytepos;
 }
 
 /*

Modified: branches/codestring/src/string/encoding/ucs2.c
==============================================================================
--- branches/codestring/src/string/encoding/ucs2.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/string/encoding/ucs2.c	Mon May  3 14:39:34 2010	(r46235)
@@ -423,7 +423,7 @@
      *      iter versions
      */
     const UChar c = s[pos++];
-    i->charpos++;
+    ++i->charpos;
     i->bytepos = pos * sizeof (UChar);
     return c;
 #else
@@ -457,7 +457,7 @@
     UChar    *s = (UChar*) i->str->strstart;
     UINTVAL pos = i->bytepos / sizeof (UChar);
     s[pos++]    = (UChar)c;
-    i->charpos++;
+    ++i->charpos;
     i->bytepos = pos * sizeof (UChar);
 #else
     /* This function must never be called if compiled without ICU.

Modified: branches/codestring/src/string/encoding/utf16.c
==============================================================================
--- branches/codestring/src/string/encoding/utf16.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/string/encoding/utf16.c	Mon May  3 14:39:34 2010	(r46235)
@@ -485,7 +485,7 @@
      *      iter versions
      */
     U16_NEXT_UNSAFE(s, pos, c);
-    i->charpos++;
+    ++i->charpos;
     i->bytepos = pos * sizeof (UChar);
     return c;
 }
@@ -509,7 +509,7 @@
     UChar * const s = (UChar*) i->str->strstart;
     UINTVAL pos = i->bytepos / sizeof (UChar);
     U16_APPEND_UNSAFE(s, pos, c);
-    i->charpos++;
+    ++i->charpos;
     i->bytepos = pos * sizeof (UChar);
 }
 

Modified: branches/codestring/src/string/encoding/utf8.c
==============================================================================
--- branches/codestring/src/string/encoding/utf8.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/string/encoding/utf8.c	Mon May  3 14:39:34 2010	(r46235)
@@ -229,7 +229,7 @@
 
     while (u8ptr < u8end) {
         u8ptr += UTF8SKIP(u8ptr);
-        characters++;
+        ++characters;
     }
 
     if (u8ptr > u8end)
@@ -261,8 +261,8 @@
         UINTVAL count;
 
         c &= UTF8_START_MASK(len);
-        for (count = 1; count < len; count++) {
-            u8ptr++;
+        for (count = 1; count < len; ++count) {
+            ++u8ptr;
 
             if (!UTF8_IS_CONTINUATION(*u8ptr))
                 Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_MALFORMED_UTF8,
@@ -365,9 +365,9 @@
     const utf8_t *u8ptr = (const utf8_t *)ptr;
 
     while (n-- > 0) {
-        u8ptr--;
+        --u8ptr;
         while (UTF8_IS_CONTINUATION(*u8ptr))
-            u8ptr--;
+            --u8ptr;
     }
 
     return u8ptr;
@@ -408,8 +408,8 @@
 
         c &= UTF8_START_MASK(len);
         i->bytepos += len;
-        for (len--; len; len--) {
-            u8ptr++;
+        for (--len; len; --len) {
+            ++u8ptr;
 
             if (!UTF8_IS_CONTINUATION(*u8ptr))
                 Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_MALFORMED_UTF8,
@@ -427,10 +427,10 @@
             "Malformed UTF-8 string\n");
     }
     else {
-        i->bytepos++;
+        ++i->bytepos;
     }
 
-    i->charpos++;
+    ++i->charpos;
     return c;
 }
 
@@ -457,7 +457,7 @@
     i->bytepos += (new_pos - pos);
     /* XXX possible buffer overrun exception? */
     PARROT_ASSERT(i->bytepos <= Buffer_buflen(s));
-    i->charpos++;
+    ++i->charpos;
 }
 
 /*

Modified: branches/codestring/src/sub.c
==============================================================================
--- branches/codestring/src/sub.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/sub.c	Mon May  3 14:39:34 2010	(r46235)
@@ -181,7 +181,7 @@
 
         if (!debug)
             return 0;
-        for (i = n = 0; n < sub->seg->base.size; i++) {
+        for (i = n = 0; n < sub->seg->base.size; ++i) {
             op_info_t * const op_info = &interp->op_info_table[*pc];
             opcode_t var_args = 0;
 
@@ -233,7 +233,7 @@
     base_pc            = sub->seg->base.data;
     current_annotation = pc - base_pc;
 
-    for (i = op = 0; op < debug_size; i++) {
+    for (i = op = 0; op < debug_size; ++i) {
         op_info_t * const op_info  = &interp->op_info_table[*base_pc];
         opcode_t          var_args = 0;
 
@@ -549,10 +549,11 @@
 void *
 Parrot_get_sub_pmc_from_subclass(PARROT_INTERP, ARGIN(PMC *subclass)) {
     ASSERT_ARGS(Parrot_get_sub_pmc_from_subclass)
-    PMC *key, *sub_pmc;
 
     /* Ensure we really do have a subclass of sub. */
     if (VTABLE_isa(interp, subclass, CONST_STRING(interp, "Sub"))) {
+        PMC *key, *sub_pmc;
+
         /* If it's actually a PMC still, probably does the same structure
          * underneath. */
         if (!PObj_is_object_TEST(subclass)) {

Modified: branches/codestring/src/thread.c
==============================================================================
--- branches/codestring/src/thread.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/thread.c	Mon May  3 14:39:34 2010	(r46235)
@@ -705,152 +705,87 @@
 
 /*
 
-=item C<int pt_thread_run(PARROT_INTERP, PMC *dest_interp, PMC *sub, PMC *arg)>
+=item C<PMC * pt_thread_create(PARROT_INTERP, INTVAL type, INTVAL clone_flags)>
 
-Runs the C<*sub> PMC in a separate thread using the interpreter in
-C<*dest_interp>.
-
-C<arg> should be an array of arguments for the subroutine.
+create a pt_thread
 
 =cut
 
 */
 
-int
-pt_thread_run(PARROT_INTERP, ARGOUT(PMC *dest_interp), ARGIN(PMC *sub), ARGIN_NULLOK(PMC *arg))
+PMC *
+pt_thread_create(PARROT_INTERP, INTVAL type, INTVAL clone_flags)
 {
-    ASSERT_ARGS(pt_thread_run)
-    PMC *old_dest_interp;
-    PMC *parent;
-    Interp * const interpreter = (Parrot_Interp)VTABLE_get_pointer(interp,
-            dest_interp);
-
-    Parrot_block_GC_sweep(interpreter);
-    Parrot_block_GC_mark(interpreter);
-    Parrot_block_GC_sweep(interp);
-    Parrot_block_GC_mark(interp);
-
-    /* make a copy of the ParrotThread PMC so we can use it
-     * to hold parameters to the new thread without it being
-     * garbage collected or otherwise changed by the parent thread.
-     * Also so the new thread's getinterp doesn't return an object
-     * owned by the wrong interpreter -- which would be very bad
-     * if the parent is destroyed before the child.
-     * XXX FIXME move this elsewhere? at least the set_pmc_keyed_int
-     */
-    old_dest_interp = dest_interp;
-    dest_interp     = Parrot_pmc_new_noinit(interpreter, enum_class_ParrotThread);
-
-    /* so it's not accidentally deleted */
-    VTABLE_set_pointer(interp, old_dest_interp, NULL);
-    VTABLE_set_pointer(interp, dest_interp, interpreter);
-
-    VTABLE_set_pmc_keyed_int(interpreter, interpreter->iglobals,
-        (INTVAL) IGLOBALS_INTERPRETER, dest_interp);
-
-    parent = VTABLE_get_pmc_keyed_int(interp, interp->iglobals,
-                IGLOBALS_INTERPRETER);
-
-    /*
-     * TODO check if thread flags are consistent
-     */
-    if (interp->flags & PARROT_THR_COPY_INTERP)
-        clone_interpreter(interpreter,
-                (Parrot_Interp)VTABLE_get_pointer(interp, parent),
-                PARROT_CLONE_DEFAULT);
-    /*
-     * TODO thread pools
-     */
-
-    pt_thread_prepare_for_run(interpreter, interp);
-
-    SETATTR_ParrotInterpreter_sub(interp, dest_interp,
-            pt_transfer_sub(interpreter, interp, sub));
-    VTABLE_set_pmc(interp, dest_interp,
-            make_local_args_copy(interpreter, interp, arg));
-
-    /*
-     * create a joinable thread
-     */
-    interpreter->thread_data->state = THREAD_STATE_JOINABLE;
-
-    Parrot_unblock_GC_mark(interpreter);
-    Parrot_unblock_GC_sweep(interpreter);
-    Parrot_unblock_GC_mark(interp);
-    Parrot_unblock_GC_sweep(interp);
-
-    THREAD_CREATE_JOINABLE(interpreter->thread_data->thread,
-            thread_func, dest_interp);
+    ASSERT_ARGS(pt_thread_create)
+    PMC *new_interp_pmc = pmc_new(interp, type);
+    Interp *new_interp  = (Interp *)VTABLE_get_pointer(interp, new_interp_pmc);
 
-    /* check for pending GC */
-    LOCK(interpreter_array_mutex);
-    if (interp->thread_data->state & THREAD_STATE_SUSPEND_GC_REQUESTED)
-        pt_suspend_one_for_gc(interpreter);
+    clone_interpreter(new_interp, interp, clone_flags);
+    pt_thread_prepare_for_run(new_interp, interp);
 
-    UNLOCK(interpreter_array_mutex);
-    return 0;
+    return new_interp_pmc;
 }
 
 /*
 
-=item C<int pt_thread_run_1(PARROT_INTERP, PMC* dest_interp, PMC* sub, PMC
+=item C<int pt_thread_run(PARROT_INTERP, PMC *thread_interp_pmc, PMC *sub, PMC
 *arg)>
 
-Runs a thread that shares nothing and does not communicate with the other
-interpreter.
+run a pt_thread
 
 =cut
 
 */
 
 int
-pt_thread_run_1(PARROT_INTERP, ARGOUT(PMC* dest_interp), ARGIN(PMC* sub), ARGIN(PMC *arg))
+pt_thread_run(PARROT_INTERP, PMC *thread_interp_pmc, ARGIN(PMC *sub), ARGIN_NULLOK(PMC *arg))
 {
-    ASSERT_ARGS(pt_thread_run_1)
-    interp->flags |= PARROT_THR_TYPE_1;
-    return pt_thread_run(interp, dest_interp, sub, arg);
-}
+    ASSERT_ARGS(pt_thread_run)
+    Interp *thread_interp = (Interp *)VTABLE_get_pointer(interp, thread_interp_pmc);
 
-/*
+    SETATTR_ParrotInterpreter_sub(interp,
+                                  thread_interp_pmc, pt_transfer_sub(thread_interp, interp, sub));
+    VTABLE_set_pmc(interp, thread_interp_pmc, make_local_args_copy(thread_interp, interp, arg));
+    thread_interp->thread_data->state = THREAD_STATE_JOINABLE;
 
-=item C<int pt_thread_run_2(PARROT_INTERP, PMC* dest_interp, PMC* sub, PMC
-*arg)>
+    THREAD_CREATE_JOINABLE(thread_interp->thread_data->thread, thread_func, thread_interp_pmc);
 
-Runs an interpreter in a thread with no shared variables, but which
-communicates by sending messages.
+    /* check for pending GC */
+    /*
+     * can't do multi-threaded GC yet
+     * XXX a quick hack to pass the few tests
 
-=cut
+    LOCK(interpreter_array_mutex);
+    if (interp->thread_data->state & THREAD_STATE_SUSPEND_GC_REQUESTED)
+        pt_suspend_one_for_gc(new_interp);
+    UNLOCK(interpreter_array_mutex);
 
-*/
+    */
 
-int
-pt_thread_run_2(PARROT_INTERP, ARGOUT(PMC* dest_interp), ARGIN(PMC* sub), ARGIN(PMC *arg))
-{
-    ASSERT_ARGS(pt_thread_run_2)
-    interp->flags |= PARROT_THR_TYPE_2;
-    return pt_thread_run(interp, dest_interp, sub, arg);
+    return thread_interp->thread_data->tid;
 }
 
 /*
 
-=item C<int pt_thread_run_3(PARROT_INTERP, PMC* dest_interp, PMC* sub, PMC
-*arg)>
+=item C<int pt_thread_create_run(PARROT_INTERP, INTVAL type, INTVAL clone_flags,
+PMC *sub, PMC *arg)>
 
-Runs an interpreter in a thread, allowing shared variables and using a thread
-pool.
+create a pt_thread run
 
 =cut
 
 */
 
 int
-pt_thread_run_3(PARROT_INTERP, ARGOUT(PMC* dest_interp), ARGIN(PMC* sub), ARGIN(PMC *arg))
+pt_thread_create_run(PARROT_INTERP,
+                     INTVAL type, INTVAL clone_flags, ARGIN(PMC *sub), ARGIN_NULLOK(PMC *arg))
 {
-    ASSERT_ARGS(pt_thread_run_3)
-    interp->flags |= PARROT_THR_TYPE_3;
-    return pt_thread_run(interp, dest_interp, sub, arg);
+  ASSERT_ARGS(pt_thread_create_run)
+  PMC *thread_interp_pmc = pt_thread_create(interp, type, clone_flags);
+  return pt_thread_run(interp, thread_interp_pmc, sub, arg);
 }
 
+
 /*
 
 =item C<void pt_thread_yield(void)>
@@ -1299,7 +1234,7 @@
             retval = PMCNULL;
         }
         interpreter_array[tid] = NULL;
-        running_threads--;
+        --running_threads;
 
         DEBUG_ONLY(fprintf(stderr, "destroying an interpreter [join]\n"));
         if (Interp_debug_TEST(parent, PARROT_THREAD_DEBUG_FLAG))
@@ -1508,7 +1443,7 @@
 
     new_interp->thread_data = mem_internal_allocate_zeroed_typed(Thread_data);
     INTERPRETER_LOCK_INIT(new_interp);
-    running_threads++;
+    ++running_threads;
     if (Interp_debug_TEST(interp, PARROT_THREAD_DEBUG_FLAG))
         fprintf(stderr, "running threads %d\n", running_threads);
 

Modified: branches/codestring/src/utils.c
==============================================================================
--- branches/codestring/src/utils.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/utils.c	Mon May  3 14:39:34 2010	(r46235)
@@ -845,7 +845,7 @@
     c.temp_reg = temp_reg;
 
     /* compute max_reg, the max reg number + 1 */
-    for (i = 0; i < n_regs; i++) {
+    for (i = 0; i < n_regs; ++i) {
         if (src_regs[i] > max_reg)
             max_reg = src_regs[i];
         if (dest_regs[i] > max_reg)
@@ -861,26 +861,26 @@
     c.reg_to_index = reg_to_index = mem_gc_allocate_n_zeroed_typed(interp, max_reg, int);
 
     /* init backup array */
-    for (i = 0; i < n_regs; i++)
+    for (i = 0; i < n_regs; ++i)
         backup[i] = -1;
 
     /* fill in the conversion array between a register number and its index */
-    for (i = 0; i < max_reg; i++)
+    for (i = 0; i < max_reg; ++i)
         reg_to_index[i] = -1;
-    for (i = 0; i < n_regs; i++) {
+    for (i = 0; i < n_regs; ++i) {
         const int index = dest_regs[i];
         if (index != src_regs[i]) /* get rid of self-assignment */
             reg_to_index[index] = i;
     }
 
     /* count the nb of successors for each reg index */
-    for (i = 0; i < n_regs; i++) {
+    for (i = 0; i < n_regs; ++i) {
         const int index = reg_to_index[ src_regs[i] ];
         if (index >= 0) /* not interested in the wells that have no preds */
-            nb_succ[ index ]++;
+            ++nb_succ[index];
     }
     /* process each well if any */
-    for (i = 0; i < n_regs; i++) {
+    for (i = 0; i < n_regs; ++i) {
         if (0 == nb_succ[i]) { /* a well */
             rec_climb_back_and_mark(i, &c);
         }
@@ -888,7 +888,7 @@
 
     /* process remaining dest registers not processed */
     /* remaining nodes are members of cycles without exits */
-    for (i = 0; i < n_regs; i++) {
+    for (i = 0; i < n_regs; ++i) {
         if (0 < nb_succ[i] && 0 > backup[i]) { /* not a well nor visited*/
             process_cycle_without_exit(i, &c);
         }

Modified: branches/codestring/src/vtables.c
==============================================================================
--- branches/codestring/src/vtables.c	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/src/vtables.c	Mon May  3 14:39:34 2010	(r46235)
@@ -184,7 +184,7 @@
     ASSERT_ARGS(parrot_free_vtables)
     int i;
 
-    for (i = 0; i < interp->n_vtable_max; i++)
+    for (i = 0; i < interp->n_vtable_max; ++i)
         Parrot_destroy_vtable(interp, interp->vtables[i]);
 
     mem_internal_free(interp->vtables);
@@ -206,7 +206,7 @@
     ASSERT_ARGS(mark_vtables)
     INTVAL i;
 
-    for (i = 1; i < interp->n_vtable_max; i++) {
+    for (i = 1; i < interp->n_vtable_max; ++i) {
         const VTABLE * const vtable = interp->vtables[i];
 
         /* XXX dynpmc groups have empty slots for abstract objects */

Modified: branches/codestring/t/library/archive_tar.t
==============================================================================
--- branches/codestring/t/library/archive_tar.t	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/t/library/archive_tar.t	Mon May  3 14:39:34 2010	(r46235)
@@ -8,7 +8,7 @@
 
 =head1 DESCRIPTION
 
-Test the Archive/TAR library
+Test the Archive/Tar library
 
 =head1 SYNOPSIS
 
@@ -19,32 +19,34 @@
 .sub 'main' :main
     .include 'test_more.pir'
 
-    load_bytecode 'Archive/TAR.pir'
+    load_bytecode 'Archive/Tar.pir'
 
-    plan(11)
+    plan(12)
     test_new()
     test_tar()
 .end
 
 .sub 'test_new'
-    $P0 = new ['Archive';'TAR']
-    $I0 = isa $P0, ['Archive';'TAR']
-    ok($I0, "new ['Archive';'TAR']")
-    $P0 = new ['Archive';'TAR';'File']
-    $I0 = isa $P0, ['Archive';'TAR';'File']
-    ok($I0, "new ['Archive';'TAR';'File']")
+    $P0 = new ['Archive';'Tar']
+    $I0 = isa $P0, ['Archive';'Tar']
+    ok($I0, "new ['Archive';'Tar']")
+    $P0 = new ['Archive';'Tar';'File']
+    $I0 = isa $P0, ['Archive';'Tar';'File']
+    ok($I0, "new ['Archive';'Tar';'File']")
 .end
 
 .sub 'test_tar'
     .local pmc archive, entry
-    archive = new ['Archive';'TAR']
-    $I0 = isa archive, ['Archive';'TAR']
-    ok($I0, "test_atf")
+    archive = new ['Archive';'Tar']
+    $I0 = isa archive, ['Archive';'Tar']
+    ok($I0, "test_tar")
     entry = archive.'add_data'('msg.txt', "some data")
-    $I0 = isa entry, ['Archive';'TAR';'File']
-    ok($I0, "entry is an ['Archive';'TAR';'File']")
+    $I0 = isa entry, ['Archive';'Tar';'File']
+    ok($I0, "entry is an ['Archive';'Tar';'File']")
     $S0 = entry.'data'()
     is($S0, "some data", "data")
+    $S0 = entry.'full_path'()
+    is($S0, 'msg.txt', "full_path")
     .local string header
     header = entry.'_format_tar_entry'()
     $I0 = length header

Modified: branches/codestring/t/library/osutils.t
==============================================================================
--- branches/codestring/t/library/osutils.t	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/t/library/osutils.t	Mon May  3 14:39:34 2010	(r46235)
@@ -21,9 +21,11 @@
 
     load_bytecode 'osutils.pir'
 
-    plan(4)
+    plan(11)
     test_basename()
     test_dirname()
+    test_catfile()
+    test_splitpath()
 .end
 
 .sub 'test_basename'
@@ -42,6 +44,24 @@
     is( $S0, '.', "dirname" )
 .end
 
+.sub 'test_catfile'
+    $S0 = catfile('abc', 'def', 'ghi')
+    is($S0, 'abc/def/ghi', "catfile")
+.end
+
+.sub 'test_splitpath'
+    .local string volume, directories, file
+    (volume, directories, file) = splitpath('abc/def/ghi.txt')
+    is(volume, '', "splitpath vol")
+    is(directories, 'abc/def', "splitpath dirs")
+    is(file, 'ghi.txt', "splitpath file")
+
+    (volume, directories, file) = splitpath('c:/abc/def/ghi.txt')
+    is(volume, 'c:', "splitpath vol")
+    is(directories, '/abc/def', "splitpath dirs")
+    is(file, 'ghi.txt', "splitpath file")
+.end
+
 # Local Variables:
 #   mode: pir
 #   fill-column: 100

Modified: branches/codestring/t/native_pbc/annotations.pbc
==============================================================================
Binary file (source and/or target). No diff available.

Modified: branches/codestring/t/native_pbc/integer_1.pbc
==============================================================================
Binary file (source and/or target). No diff available.

Modified: branches/codestring/t/native_pbc/number_1.pbc
==============================================================================
Binary file (source and/or target). No diff available.

Modified: branches/codestring/t/native_pbc/string_1.pbc
==============================================================================
Binary file (source and/or target). No diff available.

Copied: branches/codestring/t/pmc/imageiostrings.t (from r46234, trunk/t/pmc/imageiostrings.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/codestring/t/pmc/imageiostrings.t	Mon May  3 14:39:34 2010	(r46235, copy of r46234, trunk/t/pmc/imageiostrings.t)
@@ -0,0 +1,47 @@
+#!./parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/pmc/imageiostrings.t - test ImageIOStrings PMC
+
+=head1 SYNOPSIS
+
+    % prove t/pmc/imageiostrings.t
+
+=head1 DESCRIPTION
+
+Tests the ImageIOStringsPMC.
+
+=cut
+
+.sub main :main
+    .include 'test_more.pir'
+
+    plan(3)
+
+    .local pmc iios
+    iios = new ['ImageIOStrings']
+    ok(1, 'instantiated ImageIOStrings')
+
+    .local pmc test_pmc
+    test_pmc = null
+    iios = new ['ImageIOStrings']
+    setref iios, test_pmc
+    $P0 = deref iios
+    $I0 = $P0
+    nok( $I0, 'no strings in null pmc' )
+
+    test_pmc = split ' ', 'spam sausage spam spam bacon spam tomato and spam'
+    iios = new ['ImageIOStrings']
+    setref iios, test_pmc
+    $P0 = deref iios
+    is_deeply( $P0, test_pmc, 'correctly manages RSA' )
+.end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Deleted: branches/codestring/t/pmc/parrotrunningthread.t
==============================================================================
--- branches/codestring/t/pmc/parrotrunningthread.t	Mon May  3 14:39:34 2010	(r46234)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,56 +0,0 @@
-#!./parrot
-# Copyright (C) 2007-2008, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-t/pmc/parrotrunningthread.t - test the ParrotRunningThread PMC
-
-=head1 SYNOPSIS
-
-    % prove t/pmc/parrotrunningthread.t
-
-=head1 DESCRIPTION
-
-Tests the ParrotRunningThread PMC.
-
-=cut
-
-.sub 'main' :main
-    .include 'test_more.pir'
-
-    plan(2)
-
-    new $P0, ['ParrotRunningThread']
-    ok(1, 'Instantiated .ParrotRunningThread')
-
-    test_set_integer_native($P0)
-.end
-
-.sub 'test_set_integer_native'
-    .param pmc thread
-
-    .local string desc
-    desc   = 'setting invalid thread id should throw exception'
-
-    push_eh invalid_thread_id_handler
-    thread = -1
-    pop_eh
-
-    ok(0, desc)
-
-  invalid_thread_id_handler:
-    .local pmc e, c
-    .get_results( e )
-
-    .local string message
-    message   = e
-
-    is( message, 'Attempt to set invalid thread id -1', desc )
-.end
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/codestring/t/pmc/parrotthread.t
==============================================================================
--- branches/codestring/t/pmc/parrotthread.t	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/t/pmc/parrotthread.t	Mon May  3 14:39:34 2010	(r46235)
@@ -16,13 +16,14 @@
 
 =cut
 
-.sub main :main
+.sub 'main' :main
     .include 'test_more.pir'
 
     plan(1)
 
     new $P0, ['ParrotThread']
     ok(1, 'Instantiated a ParrotThread PMC')
+
 .end
 
 # Local Variables:

Modified: branches/codestring/t/pmc/threads.t
==============================================================================
--- branches/codestring/t/pmc/threads.t	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/t/pmc/threads.t	Mon May  3 14:39:34 2010	(r46235)
@@ -47,7 +47,7 @@
 ok1:
     print "ok 1\n"
     new P4, ['ParrotThread']
-    ne P4, P2, ok2
+    ne P2, P4, ok2
     print "not"
 ok2:
     print "ok 2\n"
@@ -182,7 +182,7 @@
 CODE
 ok 1
 hello from thread
-ParrotThread tid 1
+ThreadInterpreter tid 1
 from 10 interp
 OUTPUT
 
@@ -215,7 +215,7 @@
     branch lp
 .end
 CODE
-start 1
+start -1
 in thread
 done
 OUTPUT

Modified: branches/codestring/t/src/embed.t
==============================================================================
--- branches/codestring/t/src/embed.t	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/t/src/embed.t	Mon May  3 14:39:34 2010	(r46235)
@@ -8,7 +8,7 @@
 use Test::More;
 use Parrot::Test;
 
-plan tests => 6;
+plan tests => 7;
 
 =head1 NAME
 
@@ -24,7 +24,52 @@
 
 =cut
 
-c_output_is( <<'CODE', <<'OUTPUT', "Minimal embed, using just the embed.h header" );
+sub linedirective
+{
+    # Provide a #line directive for the C code in the heredoc
+    # starting immediately after where this sub is called.
+    my $linenum = shift() + 1;
+    return "#line " . $linenum . ' "' . __FILE__ . '"' . "\n";
+}
+
+c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', 'Parrot_compile_string populates the error string when an opcode is given improper arguments');
+#include <stdio.h>
+#include <stdlib.h>
+#include "parrot/embed.h"
+
+void fail(const char *msg);
+
+void fail(const char *msg)
+{
+    fprintf(stderr, "failed: %s\n", msg);
+    exit(EXIT_FAILURE);
+}
+
+
+int main(int argc, const char **argv)
+{
+    Parrot_Interp interp;
+    Parrot_String err, lang;
+    Parrot_PMC func_pmc;
+    char *str;
+
+    interp = Parrot_new(NULL);
+    if (! interp)
+        fail("Cannot create parrot interpreter");
+    lang = Parrot_str_new_constant(interp, "PIR", 3);
+
+    func_pmc  = Parrot_compile_string(interp, lang, ".sub foo\n copy\n.end", &err);
+    str = Parrot_str_to_cstring(interp, err);
+    puts(str);
+    Parrot_str_free_cstring(interp, str);
+    Parrot_destroy(interp);
+    return 0;
+}
+CODE
+The opcode 'copy' (copy<0>) was not found. Check the type and number of the arguments
+OUTPUT
+
+c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', "Minimal embed, using just the embed.h header" );
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -54,7 +99,7 @@
 Done
 OUTPUT
 
-c_output_is( <<'CODE', <<'OUTPUT', "Hello world from main" );
+c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', "Hello world from main" );
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -103,7 +148,7 @@
 Hello, pir
 OUTPUT
 
-c_output_is( <<'CODE', <<'OUTPUT', "Hello world from a sub" );
+c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', "Hello world from a sub" );
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -169,7 +214,7 @@
 Hello, sub
 OUTPUT
 
-c_output_is( <<'CODE', <<'OUTPUT', "External sub" );
+c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', "External sub" );
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -225,7 +270,7 @@
 Hello from C
 OUTPUT
 
-c_output_is( <<'CODE', <<'OUTPUT', "Insert external sub in namespace" );
+c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', "Insert external sub in namespace" );
 
 #include <stdio.h>
 #include <stdlib.h>

Deleted: branches/codestring/tools/docs/book-to-latex.pl
==============================================================================
--- branches/codestring/tools/docs/book-to-latex.pl	Mon May  3 14:39:34 2010	(r46234)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,34 +0,0 @@
-#! perl
-# Copyright (C) 2010, Parrot Foundation.
-# $Id$
-
-use strict;
-use warnings;
-
-use Pod::PseudoPod::LaTeX;
-
-print <<'HEADER';
-\documentclass[11pt,a4paper,oneside]{report}
-\usepackage{graphics,graphicx}
-\usepackage{colortbl}
-
-\begin{document}
-\tableofcontents
-HEADER
-
-for (@ARGV) {
-    my $parser = Pod::PseudoPod::LaTeX->new();
-    $parser->output_fh( *STDOUT );
-    $parser->parse_file( $_ );
-}
-
-print <<'FOOTER';
-\end{document}
-FOOTER
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Modified: branches/codestring/tools/docs/filename_and_chapter.pl
==============================================================================
--- branches/codestring/tools/docs/filename_and_chapter.pl	Mon May  3 13:16:49 2010	(r46234)
+++ branches/codestring/tools/docs/filename_and_chapter.pl	Mon May  3 14:39:34 2010	(r46235)
@@ -2,13 +2,20 @@
 # Copyright (C) 2010, Parrot Foundation.
 # $Id$
 #
-# perl script that deliver all filenames and the associated chapters
+# perl script that writes modified POD files to the directory
+# 'build/modified_pod'. Then this script generates a latex file from
+# this POD.
 #
 
 use strict;
 use warnings;
 
+# prototype
+sub write_mod($);
+
+
 use Getopt::Long ();
+use Pod::PseudoPod::LaTeX;
 
 my $item_list_ref = [ ['intro.pod', 'Introduction to Parrot'],
                       ['overview.pod', 'Overview'],
@@ -16,29 +23,70 @@
                     ];
 
 my $lang = @$item_list_ref;
+my $MOD_BUILD_PATH='build/modified_pod/';
 
-my ( $result, $give_out, $b_out);
+my ( $result, $give_out );
 
 $result = Getopt::Long::GetOptions (
     "print" => \$give_out,
-    "b_out" => \$b_out,
 );
 
 if ($give_out)  {
     for ( my $i=0; $i<$lang; $i++ )
-        { print $$item_list_ref[$i][0], ' ' }
-    exit;
-};
-
-if ($b_out) {
-    for ( my $i=0; $i<$lang; $i++ )
-        { print 'build/modified_pod/', $$item_list_ref[$i][0], ' ' }
+        { print $$item_list_ref[$i][0], "\n" }
     exit;
 };
 
 
-for (my $i=0; $i<$lang; $i++)
-    { `sed -e '4,6c\=head0 $$item_list_ref[$i][1]' $$item_list_ref[$i][0] > build/modified_pod/$$item_list_ref[$i][0]` }
+for ( my $i=0; $i<$lang; $i++ ) {
+    write_mod( $i );
+}
+
+
+open my $TEX_FH, '>', 'build/parrot-book.tex');
+
+print $TEX_FH <<'HEADER';
+\documentclass[11pt,a4paper,oneside]{report}
+\usepackage{graphics,graphicx}
+\usepackage{colortbl}
+
+\begin{document}
+\tableofcontents
+HEADER
+
+for ( my $i=0; $i<$lang; $i++ ) {
+    my $parser = Pod::PseudoPod::LaTeX->new();
+    $parser->output_fh( $TEX_FH );
+    $parser->parse_file( "${MOD_BUILD_PATH}$$item_list_ref[$i][0]" );
+}
+
+print $TEX_FH <<'FOOTER';
+\end{document}
+FOOTER
+
+close( $TEX_FH );
+
+
+sub write_mod( $ ) {
+    my $icnt;
+
+    open( my $IN_FH, '<', "$$item_list_ref[$_[0]][0]" ) ||
+        die( "$0: can't open $$item_list_ref[$_[0]][0] for reading ($!)\n" );
+    open( my $OUT_FH, '>', "${MOD_BUILD_PATH}$$item_list_ref[$_[0]][0]" );
+
+    # do the same as: sed -e '4,6c\=head0 $$item_list_ref[$i][1]'
+    while( <$IN_FH> ) {
+        if ( $icnt = (4..6) ) {
+            if ( $icnt =~ /E0$/ ) {
+                print( $OUT_FH "=head0 $$item_list_ref[$_[0]][1]\n");
+            }
+        }
+        else { print( $OUT_FH ); }
+    }
+
+    close( $IN_FH );
+    close( $OUT_FH );
+}
 
 
 # Local Variables:


More information about the parrot-commits mailing list