[svn:parrot] r46220 - in branches/pbc_frozen_strings1: . compilers/data_json compilers/imcc compilers/pct compilers/pct/src/PAST compilers/pge compilers/tge config/auto/sizes config/auto/zlib config/gen config/gen/makefiles docs docs/book/draft docs/book/pct docs/book/pir docs/dev docs/pdds docs/project editor examples/embed examples/languages/abc examples/languages/squaak examples/pge examples/pir examples/pir/befunge examples/tutorial 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/mandriva ports/mandriva/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/examples t/library t/native_pbc t/oo t/op t/pmc t/pmc/te stlib t/src t/steps/init/hints tools/build tools/dev tools/docs tools/util

plobsing at svn.parrot.org plobsing at svn.parrot.org
Sun May 2 22:14:59 UTC 2010


Author: plobsing
Date: Sun May  2 22:14:53 2010
New Revision: 46220
URL: https://trac.parrot.org/parrot/changeset/46220

Log:
sync with trunk

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

Modified: branches/pbc_frozen_strings1/CREDITS
==============================================================================
--- branches/pbc_frozen_strings1/CREDITS	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/CREDITS	Sun May  2 22:14:53 2010	(r46220)
@@ -509,9 +509,10 @@
 E: jesse at fsck.com
 
 N: Jimmy Zhuo
-A: jimmy
+A: JimmyZ
+U: jimmy
 E: zhuomingliang at yahoo.com.cn
-D: Bugfixes
+D: Bugfixes, cage cleaning
 
 N: John J. Trammell
 E: trammell at el-swifto.com

Modified: branches/pbc_frozen_strings1/DEPRECATED.pod
==============================================================================
--- branches/pbc_frozen_strings1/DEPRECATED.pod	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/DEPRECATED.pod	Sun May  2 22:14:53 2010	(r46220)
@@ -41,6 +41,10 @@
 
 L<https://trac.parrot.org/parrot/ticket/1580>
 
+=item packfiledebug [experimental]
+
+L<https://trac.parrot.org/parrot/ticket/1599>
+
 =item moved to dynpmc [eligible in 1.1]
 
 AddrRegistry, CodeString, Env, Eval, File, OS, PCCMETHOD_Test, StringHandle,
@@ -406,7 +410,11 @@
 A way to provide an equivalent of -L and -I parrot command line options
 to language that doesn't support it.
 
-=item JSON, and Config;JSON [eligible in 1.5]
+=item Archive::Tar [experimental]
+
+L<https://trac.parrot.org/parrot/ticket/1598>
+
+=item JSON and Config;JSON [eligible in 1.5]
 
 L<https://trac.parrot.org/parrot/ticket/508>
 
@@ -420,6 +428,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/pbc_frozen_strings1/MANIFEST
==============================================================================
--- branches/pbc_frozen_strings1/MANIFEST	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/MANIFEST	Sun May  2 22:14:53 2010	(r46220)
@@ -1,12 +1,12 @@
 # ex: set ro:
 # $Id$
 #
-# generated by tools/dev/mk_manifest_and_skip.pl Wed Apr 28 01:59:45 2010 UT
+# generated by ./tools/dev/mk_manifest_and_skip.pl Sun May  2 04:09:12 2010 UT
 #
 # See below for documentation on the format of this file.
 #
 # See docs/submissions.pod and the documentation in
-# tools/dev/mk_manifest_and_skip.pl on how to recreate this file after SVN
+# ./tools/dev/mk_manifest_and_skip.pl on how to recreate this file after SVN
 # has been told about new or deleted files.
 .gitignore                                                  []
 CREDITS                                                     [main]doc
@@ -245,7 +245,6 @@
 config/gen/core_pmcs.pm                                     []
 config/gen/makefiles.pm                                     []
 config/gen/makefiles/docs.in                                []
-config/gen/makefiles/dynpmc.in                              []
 config/gen/makefiles/editor.in                              []
 config/gen/makefiles/ext.in                                 []
 config/gen/makefiles/parrot_embed_pl.in                     []
@@ -1125,6 +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/CGI/QueryHash.pir                    [library]
 runtime/parrot/library/Config/JSON.pir                      [library]
 runtime/parrot/library/Configure/genfile.pir                [library]
@@ -1233,7 +1233,9 @@
 src/dynoplibs/Rules.in                                      []
 src/dynoplibs/math.ops                                      []
 src/dynoplibs/obscure.ops                                   []
+src/dynpmc/Defines.in                                       []
 src/dynpmc/README.pod                                       []doc
+src/dynpmc/Rules.in                                         []
 src/dynpmc/dynlexpad.pmc                                    []
 src/dynpmc/ext.pir                                          []
 src/dynpmc/foo.pmc                                          []
@@ -1371,6 +1373,7 @@
 src/pmc/packfileannotation.pmc                              []
 src/pmc/packfileannotations.pmc                             []
 src/pmc/packfileconstanttable.pmc                           []
+src/pmc/packfiledebug.pmc                                   []
 src/pmc/packfiledirectory.pmc                               []
 src/pmc/packfilefixupentry.pmc                              []
 src/pmc/packfilefixuptable.pmc                              []
@@ -1378,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                                        []
@@ -1399,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                                 []
@@ -1636,6 +1639,7 @@
 t/harness                                                   [test]
 t/harness.pir                                               [test]
 t/include/fp_equality.t                                     [test]
+t/library/archive_tar.t                                     [test]
 t/library/cgi_query_hash.t                                  [test]
 t/library/configure.t                                       [test]
 t/library/coroutine.t                                       [test]
@@ -1861,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]
@@ -2118,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/pbc_frozen_strings1/MANIFEST.SKIP
==============================================================================
--- branches/pbc_frozen_strings1/MANIFEST.SKIP	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/MANIFEST.SKIP	Sun May  2 22:14:53 2010	(r46220)
@@ -1,6 +1,6 @@
 # ex: set ro:
 # $Id$
-# generated by tools/dev/mk_manifest_and_skip.pl Wed Apr 28 01:59:45 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
@@ -535,6 +535,9 @@
 ^runtime/parrot/library/PAST/
 ^runtime/parrot/library/config\.pir$
 ^runtime/parrot/library/config\.pir/
+# generated from svn:ignore of 'runtime/parrot/library/Archive/'
+^runtime/parrot/library/Archive/.*\.pbc$
+^runtime/parrot/library/Archive/.*\.pbc/
 # generated from svn:ignore of 'runtime/parrot/library/CGI/'
 ^runtime/parrot/library/CGI/.*\.pbc$
 ^runtime/parrot/library/CGI/.*\.pbc/
@@ -722,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/pbc_frozen_strings1/MANIFEST.generated
==============================================================================
--- branches/pbc_frozen_strings1/MANIFEST.generated	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/MANIFEST.generated	Sun May  2 22:14:53 2010	(r46220)
@@ -124,6 +124,7 @@
 runtime/parrot/include/tm.pasm                    [main]
 runtime/parrot/include/vtable_methods.pasm        [main]
 runtime/parrot/include/warnings.pasm              [main]
+runtime/parrot/library/Archive/TAR.pbc            [main]
 runtime/parrot/library/CGI/QueryHash.pbc          [main]
 runtime/parrot/library/Config/JSON.pbc            [main]
 runtime/parrot/library/Configure/genfile.pbc      [main]

Modified: branches/pbc_frozen_strings1/PBC_COMPAT
==============================================================================
--- branches/pbc_frozen_strings1/PBC_COMPAT	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/PBC_COMPAT	Sun May  2 22:14:53 2010	(r46220)
@@ -27,6 +27,8 @@
 
 # please insert tab separated entries at the top of the list
 
+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
 6.7	2010.04.22	coke	remove RetContinuation PMC

Modified: branches/pbc_frozen_strings1/compilers/imcc/pbc.c
==============================================================================
--- branches/pbc_frozen_strings1/compilers/imcc/pbc.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/compilers/imcc/pbc.c	Sun May  2 22:14:53 2010	(r46220)
@@ -1082,10 +1082,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');

Modified: branches/pbc_frozen_strings1/compilers/pct/src/PAST/Compiler.pir
==============================================================================
--- branches/pbc_frozen_strings1/compilers/pct/src/PAST/Compiler.pir	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/compilers/pct/src/PAST/Compiler.pir	Sun May  2 22:14:53 2010	(r46220)
@@ -102,7 +102,8 @@
     piropsig['splice']     = 'PPii'
     piropsig['split']      = 'Pss'
     piropsig['sub']        = 'PP+'
-    piropsig['substr']     = 'Ssiis'
+    piropsig['substr']     = 'Ssii'
+    piropsig['replace']    = 'Ssiis'
     piropsig['pow']        = 'NN+'
     piropsig['print']      = 'v*'
     piropsig['say']        = 'v*'

Modified: branches/pbc_frozen_strings1/config/gen/makefiles.pm
==============================================================================
--- branches/pbc_frozen_strings1/config/gen/makefiles.pm	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/config/gen/makefiles.pm	Sun May  2 22:14:53 2010	(r46220)
@@ -48,8 +48,12 @@
             conditioned_lines => 1,
         },
 
-        'src/dynpmc/Makefile'        =>
-            { SOURCE => 'config/gen/makefiles/dynpmc.in' },
+        'src/dynpmc/Rules.mak' => {
+             SOURCE => 'src/dynpmc/Rules.in',
+        },
+        'src/dynpmc/Defines.mak' => {
+             SOURCE => 'src/dynpmc/Defines.in',
+        },
         'editor/Makefile'            =>
             { SOURCE => 'config/gen/makefiles/editor.in' },
 

Modified: branches/pbc_frozen_strings1/config/gen/makefiles/docs.in
==============================================================================
--- branches/pbc_frozen_strings1/config/gen/makefiles/docs.in	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/config/gen/makefiles/docs.in	Sun May  2 22:14:53 2010	(r46220)
@@ -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

Deleted: branches/pbc_frozen_strings1/config/gen/makefiles/dynpmc.in
==============================================================================
--- branches/pbc_frozen_strings1/config/gen/makefiles/dynpmc.in	Sun May  2 22:14:53 2010	(r46219)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,200 +0,0 @@
-# Copyright (C) 2003-2010, Parrot Foundation.
-# $Id$
-
-PERL          = @perl@
-RM_F          = @rm_f@
-CP            = @cp@
-CHMOD         = @chmod@
-LOAD_EXT      = @load_ext@
-BUILD_DIR     = @build_dir@
-RECONFIGURE   = $(PERL) $(BUILD_DIR)/tools/dev/reconfigure.pl
-INSTALL_DIR   = $(BUILD_DIR)/runtime/parrot/dynext
-O             = @o@
-CC            = @cc@
-LD            = @ld@
-LDFLAGS       = @ldflags@ @ld_debug@ @rpath_blib@
-LD_LOAD_FLAGS = @ld_load_flags@
-CFLAGS        = @ccflags@ @cc_shared@ @cc_debug@ @ccwarn@ @cc_hasjit@ @gc_flag@ @optimize@
-LIBPARROT     = @libparrot_ldflags@
-
-BUILD_TOOLS_DIR = $(BUILD_DIR)/tools/build
-BUILD_LIB_DIR   = $(BUILD_DIR)/blib/lib
-PMC2C           = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl
-INCLUDES        = -I$(BUILD_DIR)/include -I at build_dir@/include/pmc
-LINKARGS        = $(LDFLAGS) $(LD_LOAD_FLAGS) $(LIBPARROT) @icu_shared@ @libs@
-
-PMC2CD = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --dump
-PMC2CC = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --c
-
-# add your dynamic pmcs here
-PMC_TARGETS = \
-  dynlexpad$(LOAD_EXT) \
-  foo_group$(LOAD_EXT) \
-  pccmethod_test$(LOAD_EXT) \
-  rotest$(LOAD_EXT) \
-  rational$(LOAD_EXT) \
-#IF(has_zlib):  gziphandle$(LOAD_EXT) \
-  subproxy$(LOAD_EXT)
-
-PMCS_FOO = \
-  foo.pmc \
-  foo2.pmc
-
-OBJS_FOO = \
-  foo$(O) \
-  foo2$(O)
-
-#IF(win32 and cc==gcc):LIB_ZLIB = -lz
-#ELSIF(win32):LIB_ZLIB = zlib.lib
-#ELSE:LIB_ZLIB = -lz
-
-CLEANUPS = \
-  "*.c" \
-  "pmc_*.h" \
-  "*_group.h" \
-  "*.dump" \
-#IF(o):  "*@o@" \
-#IF(win32):  "*.lib" \
-#IF(win32):  "*.pdb" \
-#IF(win32):  "*.ilk" \
-#IF(win32):  "*.exp" \
-#IF(win32):  "*.def" \
-#IF(win32):  "*.manifest" \
-#IF(load_ext):  "*@load_ext@"
-
-
-all : install
-
-install : $(PMC_TARGETS)
-#IF(cygwin or hpux):	$(CHMOD) 0775 *$(LOAD_EXT)
-	$(CP) *$(LOAD_EXT) $(INSTALL_DIR)
-#IF(cygwin or hpux):	$(CHMOD) 0775 $(INSTALL_DIR)/*$(LOAD_EXT)
-
-Makefile: ../../config/gen/makefiles/dynpmc.in
-	cd $(BUILD_DIR) && $(RECONFIGURE) --step=gen::makefiles --target=src/dynpmc/Makefile
-
-dynlexpad$(LOAD_EXT): dynlexpad$(O)
-	$(LD) @ld_out at dynlexpad$(LOAD_EXT) dynlexpad$(O) $(LINKARGS)
-#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-
-dynlexpad$(O): dynlexpad.c
-	$(CC) -c @cc_o_out at dynlexpad$(O) $(INCLUDES) $(CFLAGS) dynlexpad.c
-
-dynlexpad.c: dynlexpad.dump
-	$(PMC2CC) dynlexpad.pmc
-
-dynlexpad.dump: dynlexpad.pmc
-	$(PMC2CD) dynlexpad.pmc
-
-foo_group$(LOAD_EXT): $(OBJS_FOO) lib-foo_group$(O)
-	$(LD) @ld_out at foo_group$(LOAD_EXT) lib-foo_group$(O) $(OBJS_FOO) $(LINKARGS)
-#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-
-lib-foo_group$(O): foo_group.c
-	$(CC) -c @cc_o_out at lib-foo_group$(O) $(INCLUDES) $(CFLAGS) foo_group.c
-
-foo_group.c: $(OBJS_FOO)
-	$(PMC2C) --library foo_group --c $(PMCS_FOO)
-
-foo$(O): foo.c
-	$(CC) -c @cc_o_out at foo$(O) $(INCLUDES) $(CFLAGS) foo.c
-
-foo.c: foo.dump
-	$(PMC2CC) foo.pmc
-
-foo.dump: foo.pmc
-	$(PMC2CD) foo.pmc
-
-foo2$(O): foo.c foo2.c
-	$(CC) -c @cc_o_out at foo2$(O) $(INCLUDES) $(CFLAGS) foo2.c
-
-foo2.c: foo2.dump foo.pmc
-	$(PMC2CC) foo2.pmc
-
-foo2.dump: foo2.pmc foo.dump
-	$(PMC2CD) foo2.pmc
-
-pccmethod_test$(LOAD_EXT): pccmethod_test$(O)
-	$(LD) @ld_out at pccmethod_test$(LOAD_EXT) pccmethod_test$(O) $(LINKARGS)
-#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-
-pccmethod_test$(O): pccmethod_test.c
-	$(CC) -c @cc_o_out at pccmethod_test$(O) $(INCLUDES) $(CFLAGS) pccmethod_test.c
-
-pccmethod_test.c: pccmethod_test.dump
-	$(PMC2CC) pccmethod_test.pmc
-
-pccmethod_test.dump: pccmethod_test.pmc
-	$(PMC2CD) pccmethod_test.pmc
-
-rotest$(LOAD_EXT): rotest$(O)
-	$(LD) @ld_out at rotest$(LOAD_EXT) rotest$(O) $(LINKARGS)
-#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-
-rotest$(O): rotest.c
-	$(CC) -c @cc_o_out at rotest$(O) $(INCLUDES) $(CFLAGS) rotest.c
-
-rotest.c: rotest.dump
-	$(PMC2CC) rotest.pmc
-
-rotest.dump: rotest.pmc
-	$(PMC2CD) rotest.pmc
-
-rational$(LOAD_EXT): rational$(O)
-	$(LD) @ld_out at rational$(LOAD_EXT) rational$(O) $(LINKARGS)
-#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-
-rational$(O): rational.c
-	$(CC) -c @cc_o_out at rational$(O) $(INCLUDES) $(CFLAGS) rational.c
-
-rational.c: rational.dump
-	$(PMC2CC) rational.pmc
-
-rational.dump: rational.pmc
-	$(PMC2CD) rational.pmc
-
-subproxy$(LOAD_EXT): subproxy$(O)
-	$(LD) @ld_out at subproxy$(LOAD_EXT) subproxy$(O) $(LINKARGS)
-#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-
-subproxy$(O): subproxy.c
-	$(CC) -c @cc_o_out at subproxy$(O) $(INCLUDES) $(CFLAGS) subproxy.c
-
-subproxy.c: subproxy.dump
-	$(PMC2CC) subproxy.pmc
-
-subproxy.dump: subproxy.pmc
-	$(PMC2CD) subproxy.pmc
-
-gziphandle$(LOAD_EXT): gziphandle$(O)
-	$(LD) @ld_out at gziphandle$(LOAD_EXT) gziphandle$(O) $(LINKARGS) $(LIB_ZLIB)
-#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
-
-gziphandle$(O): gziphandle.c
-	$(CC) -c @cc_o_out at gziphandle$(O) $(INCLUDES) $(CFLAGS) gziphandle.c
-
-gziphandle.c: gziphandle.dump
-	$(PMC2CC) gziphandle.pmc
-
-gziphandle.dump: gziphandle.pmc
-	$(PMC2CD) gziphandle.pmc
-
-
-test : all
-	cd ../.. && $(PERL) -Ilib t/harness t/dynpmc/*.t
-
-testclean :
-	$(RM_F) "../../t/dynpmc/*.pir"
-
-clean :
-	$(RM_F) $(CLEANUPS)
-
-realclean:
-	$(RM_F) $(CLEANUPS) Makefile
-
-distclean: realclean
-
-# Local variables:
-#   mode: makefile
-# End:
-# vim: ft=make:

Modified: branches/pbc_frozen_strings1/config/gen/makefiles/root.in
==============================================================================
--- branches/pbc_frozen_strings1/config/gen/makefiles/root.in	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/config/gen/makefiles/root.in	Sun May  2 22:14:53 2010	(r46220)
@@ -68,6 +68,7 @@
 
 PERL             = @perl@
 CP               = @cp@
+MV               = @mv@
 CHMOD            = @chmod@
 MKPATH           = @mkpath@
 RM_F             = @rm_f@
@@ -114,6 +115,7 @@
 # generated by config/init/headers.pm
 NONGEN_HEADERS   = @TEMP_nongen_headers@
 
+include src/dynpmc/Defines.mak
 include src/dynoplibs/Defines.mak
 include compilers/imcc/Defines.mak
 include compilers/pirc/Defines.mak
@@ -142,7 +144,8 @@
     ext/Makefile \
     src/dynoplibs/Rules.mak \
     src/dynoplibs/Defines.mak \
-    src/dynpmc/Makefile \
+    src/dynpmc/Rules.mak \
+    src/dynpmc/Defines.mak \
     compilers/imcc/Rules.mak
 
 GEN_CONFIGS = \
@@ -243,12 +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)/CGI/QueryHash.pbc \
     $(LIBRARY_DIR)/Crow.pbc \
     $(LIBRARY_DIR)/config.pbc \
@@ -615,7 +620,7 @@
     runtime/parrot/include/parrotlib.pbc \
     runtime/parrot/include/config.fpmc \
     $(LIBRARY_DIR)/Test/More.pbc \
-    dynpmc \
+    $(DYNPMC_TARGETS) \
     $(DYNOPLIBS_TARGETS)
 
 $(GEN_LIBRARY) : $(PARROT) $(GEN_PASM_INCLUDES)
@@ -665,6 +670,7 @@
 H2INC = $(BUILD_TOOLS_DIR)/h2inc.pl
 
 # classes PMC build utils and rules
+PMC2C  = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl @no_lines_flag@
 PMC2CD = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --dump @no_lines_flag@
 PMC2CC = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --c @no_lines_flag@
 PMC2CV = $(PERL) $(BUILD_TOOLS_DIR)/pmc2c.pl --vtable @no_lines_flag@
@@ -753,11 +759,6 @@
 	@echo "  svnclobber:        *Dangerous*: remove everything not in svn."
 	@echo "  reconfig:          'clean' and redo configuration."
 	@echo ""
-	@echo "Dynamic PMCs:"
-	@echo "  dynpmc:            Proxy for default target of src/dynpmc/Makefile"
-	@echo "  dynpmc-test:       Proxy for target 'test' of src/dynpmc/Makefile"
-	@echo "  dynpmc-clean:      Proxy for target 'clean' of src/dynpmc/Makefile"
-	@echo ""
 	@echo "Fetch from source repository:"
 	@echo "  update:            svn update."
 	@echo "  status:            svn status."
@@ -1515,12 +1516,6 @@
 src/io/filehandle$(O) : $(PARROT_H_HEADERS) include/pmc/pmc_filehandle.h \
     src/io/io_private.h src/io/filehandle.c
 
-src/dynpmc/subproxy$(O) : $(PARROT_H_HEADERS) $(INC_DIR)/extend.h \
-  $(INC_DIR)/dynext.h include/pmc/pmc_subproxy.h \
-  include/pmc/pmc_sub.h include/pmc_default.h \
-  include/pmc/pmc_continuation.h include/pmc/pmc_callcontext.h \
-  include/pmc/pmc_default.h
-
 src/gc/malloc_trace$(O) : src/gc/malloc.c src/gc/malloc_trace.c
 
 src/packfile/pf_items$(O) : $(PARROT_H_HEADERS) src/packfile/pf_items.c
@@ -1610,24 +1605,6 @@
 
 ###############################################################################
 #
-# dynamic PMC targets:
-#
-###############################################################################
-
-dynpmc : dynpmc.dummy
-
-# XXX this dependancy is too broad, and should be narrowed down
-dynpmc.dummy : $(PARROT) $(INC_DIR)/parrot.h $(INC_DIR)/extend.h $(INC_DIR)/dynext.h $(PMC2C_FILES)
-	$(MAKE) src/dynpmc
-
-dynpmc-test : $(PARROT) $(INC_DIR)/parrot.h $(INC_DIR)/extend.h $(INC_DIR)/dynext.h
-	$(MAKE) src/dynpmc test
-
-dynpmc-clean :
-	$(MAKE) src/dynpmc clean
-
-###############################################################################
-#
 # compiler implementation targets:
 #
 ###############################################################################
@@ -1834,7 +1811,6 @@
     dynext-clean \
 #IF(has_perldoc):    docs-clean \
 #IF(has_perldoc):    html-clean \
-    dynpmc-clean \
     examples-clean \
     ext-clean \
 #UNLESS(win32):    cover-clean \
@@ -1844,9 +1820,11 @@
 	$(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) $(GEN_PASM_INCLUDES) $(GEN_PM_INCLUDES) $(DYNOPLIBS_CLEANUPS)
+	$(RM_F) $(DYNOPLIBS_CLEANUPS) $(DYNPMC_CLEANUPS)
+	$(RM_F) $(GEN_PASM_INCLUDES) $(GEN_PM_INCLUDES)
 
 prog-clean :
 	$(RM_F) \
@@ -1892,7 +1870,7 @@
     src/string/private_cstring.h "src/pmc/*.c" "include/pmc/pmc_*.h" \
     "src/pmc/*.dump" vtable.dump "*.def" "*.lib" "*.exp"
 
-archclean: dynpmc-clean dynext-clean
+archclean: dynext-clean
 	$(RM_F) \
     $(O_FILES) \
     $(GEN_CONFIGS) \
@@ -2548,6 +2526,7 @@
 malloclist: src/core_pmcs.c
 	$(PERL) $(BUILD_TOOLS_DIR)/headerizer.pl --macro=PARROT_MALLOC $(HEADERIZER_O_FILES)
 
+include src/dynpmc/Rules.mak
 include src/dynoplibs/Rules.mak
 include runtime/parrot/library/Rules.mak
 include compilers/imcc/Rules.mak

Modified: branches/pbc_frozen_strings1/docs/book/pir/ch04_variables.pod
==============================================================================
--- branches/pbc_frozen_strings1/docs/book/pir/ch04_variables.pod	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/docs/book/pir/ch04_variables.pod	Sun May  2 22:14:53 2010	(r46220)
@@ -489,34 +489,35 @@
 When the offset position is negative, it counts backward from the end of the
 string. Thus an offset of -1 starts at the last character of the string.
 
-C<substr> also has a four-argument form, where the fourth argument is a string
-used to replace the substring. This variant modifies the source string and
-returns the removed substring.
+C<substr> no longer has a four-argument form, as in-place string operations
+have been removed.  There is a C<replace> operator which will perform the
+replacement and return a new_string without modifying the old_string.
+The arguments are new_string, old_string, offset, count and
+replacement_string.  The old_string is copied to the new_string with the
+replacement_string inserted from offset replacing the content for count
+characters.
 
-This example above replaces the substring "bc" in C<$S1> with the string "XYZ",
-and returns "bc" in C<$S0>:
+This example replaces the substring "bc" in C<$S1> with the string "XYZ",
+and returns "aXYZde" in C<$S0>, C<$S1> is not changed:
 
 =begin PIR_FRAGMENT
 
   $S1 = "abcde"
-  $S0 = substr $S1, 1, 2, "XYZ"
-  say $S0                        # prints "bc"
-  say $S1                        # prints "aXYZde"
+  $S0 = replace $S1, 1, 2, "XYZ"
+  say $S0                        # prints "aXYZde"
+  say $S1                        # prints "abcde"
 
 =end PIR_FRAGMENT
 
-When the offset position in a replacing C<substr> is one character beyond the
-original string length, C<substr> appends the replacement string just like the
+When the offset position in a C<replace> is one character beyond the original
+string length, C<replace> appends the replacement string just like the
 concatenation operator. If the replacement string is an empty string, the
-opcode removes the characters from the original string.
-
-If you don't need to capture the replaced string, an optimized version of
-C<substr> performs a replace without returning the removed substring:
+opcode removes the characters from the original string in the new string.
 
 =begin PIR_FRAGMENT
 
   $S1 = "abcde"
-  $S1 = substr 1, 2, "XYZ"
+  $S1 = replace $S1, 1, 2, "XYZ"
   say $S1                        # prints "aXYZde"
 
 =end PIR_FRAGMENT
@@ -897,10 +898,11 @@
 C<bors>X<bors opcode>, C<bands>X<bands opcode>, and C<bxors>X<bxors opcode>.
 These take string or string-like PMC arguments and perform the logical
 operation on each byte of the strings to produce the result string.
+Remember that in-place string operations are no longer available.
 
 =begin PIR_FRAGMENT
 
-  $S0 = bors $S1
+  $P0 = bors $P1
   $P0 = bands $P1
   $S0 = bors $S1, $S2
   $P0 = bxors $P1, $S2
@@ -970,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/pbc_frozen_strings1/docs/embed.pod
==============================================================================
--- branches/pbc_frozen_strings1/docs/embed.pod	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/docs/embed.pod	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/docs/project/metacommitter_guide.pod
==============================================================================
--- branches/pbc_frozen_strings1/docs/project/metacommitter_guide.pod	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/docs/project/metacommitter_guide.pod	Sun May  2 22:14:53 2010	(r46220)
@@ -66,11 +66,13 @@
 Congratulate the new member publicly by sending an email to
 parrot-dev at lists.parrot.org, and copying the new committer.
 
-
 The steps for the "languages" repository and Trac instance are the same,
 except the URLs are L<https://trac.parrot.org/languages/...> and the
 committer group is "languages_committers".
 
+Note that commit messages from the new member will be automatically held
+pending list-admin approval.
+
 =head2 To manage the list of Metacommitters
 
 Only existing Metacommitters can perform this activity.

Modified: branches/pbc_frozen_strings1/editor/pir-mode.el
==============================================================================
--- branches/pbc_frozen_strings1/editor/pir-mode.el	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/editor/pir-mode.el	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/examples/pir/befunge/debug.pir
==============================================================================
--- branches/pbc_frozen_strings1/examples/pir/befunge/debug.pir	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/examples/pir/befunge/debug.pir	Sun May  2 22:14:53 2010	(r46220)
@@ -181,7 +181,7 @@
     print "bef> "
     $P0 = getstdin
     $S0 = readline $P0
-    chopn $S0, 1
+    $S0 = chopn $S0, 1
     $I0 = length $S0
 
     if $I0 == 0 goto DEBUG__INTERACT__NEXT
@@ -205,7 +205,7 @@
     goto DEBUG__INTERACT__LOOP
 
   DEBUG__INTERACT__BREAK:
-    substr $S0, 0, 6, ""
+    $S0 = replace $S0, 0, 6, ""
     $P0 = get_global "breakpoints"
     $P0[$S0] = 1
     set_global "breakpoints", $P0
@@ -218,7 +218,7 @@
     goto DEBUG__INTERACT__END
 
   DEBUG__INTERACT__DELETE:
-    substr $S0, 0, 7, ""
+    $S0 = replace $S0, 0, 7, ""
     $P0 = get_global "breakpoints"
     delete $P0[$S0]
     set_global "breakpoints", $P0

Modified: branches/pbc_frozen_strings1/examples/pir/befunge/io.pir
==============================================================================
--- branches/pbc_frozen_strings1/examples/pir/befunge/io.pir	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/examples/pir/befunge/io.pir	Sun May  2 22:14:53 2010	(r46220)
@@ -41,10 +41,10 @@
 
     $P1 = getstdin
     $S0 = readline $P1
-    chopn $S0, 1
+    $S0 = chopn $S0, 1
 
   _IO__INPUT_CHAR__SUBSTR:
-    $S1 = substr $S0, 0, 1, ""
+    $S1 = replace $S0, 0, 1, ""
     $P0 = $S0
     set_global "user_input", $P0
 
@@ -73,7 +73,7 @@
 
     $P1 = getstdin
     $S0 = readline $P1
-    chopn $S0, 1
+    $S0 = chopn $S0, 1
     len = length $S0
 
   _IO__INPUT_INT__PARSE_INPUT:
@@ -90,7 +90,7 @@
     if i < len goto _IO__INPUT_INT__NEXT_CHAR
 
   _IO__INPUT_INT__NAN:
-    substr $S0, 0, i, ""
+    $S0 = replace $S0, 0, i, ""
     $P0 = $S0
     set_global "user_input", $P0
 

Modified: branches/pbc_frozen_strings1/examples/pir/befunge/load.pir
==============================================================================
--- branches/pbc_frozen_strings1/examples/pir/befunge/load.pir	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/examples/pir/befunge/load.pir	Sun May  2 22:14:53 2010	(r46220)
@@ -34,7 +34,7 @@
 
     newline = index line, "\n"
     if newline < 0 goto LOAD__SKIP_CHOP
-    chopn line, 1
+    line = chopn line, 1
     LOAD__SKIP_CHOP:
     line     = _load__fit_str_to_80(line)
     playline = _load__str_to_array(line)
@@ -86,7 +86,7 @@
     concat str, $S0
 
     # truncate to 80 chars
-    substr str, 80, -1, ''
+    str = replace str, 80, -1, ''
 
     .return(str)
 .end

Modified: branches/pbc_frozen_strings1/examples/pir/quine_ord.pir
==============================================================================
--- branches/pbc_frozen_strings1/examples/pir/quine_ord.pir	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/examples/pir/quine_ord.pir	Sun May  2 22:14:53 2010	(r46220)
@@ -1,4 +1,4 @@
-# Copyright (C) 2006-2008, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
 # ATT no autoexpanding svn markers please
 
 .sub quine :main
@@ -838,8 +838,8 @@
 push code_as_data, 45
 push code_as_data, 50
 push code_as_data, 48
+push code_as_data, 49
 push code_as_data, 48
-push code_as_data, 56
 push code_as_data, 44
 push code_as_data, 32
 push code_as_data, 80
@@ -1712,12 +1712,20 @@
 push code_as_data, 32
 push code_as_data, 32
 push code_as_data, 32
-push code_as_data, 115
-push code_as_data, 117
-push code_as_data, 98
-push code_as_data, 115
-push code_as_data, 116
+push code_as_data, 99
+push code_as_data, 111
+push code_as_data, 100
+push code_as_data, 101
+push code_as_data, 32
+push code_as_data, 61
+push code_as_data, 32
 push code_as_data, 114
+push code_as_data, 101
+push code_as_data, 112
+push code_as_data, 108
+push code_as_data, 97
+push code_as_data, 99
+push code_as_data, 101
 push code_as_data, 32
 push code_as_data, 99
 push code_as_data, 111
@@ -1906,6 +1914,40 @@
 push code_as_data, 44
 push code_as_data, 32
 push code_as_data, 49
+push code_as_data, 10
+push code_as_data, 32
+push code_as_data, 32
+push code_as_data, 32
+push code_as_data, 32
+push code_as_data, 32
+push code_as_data, 32
+push code_as_data, 32
+push code_as_data, 32
+push code_as_data, 99
+push code_as_data, 111
+push code_as_data, 100
+push code_as_data, 101
+push code_as_data, 32
+push code_as_data, 61
+push code_as_data, 32
+push code_as_data, 114
+push code_as_data, 101
+push code_as_data, 112
+push code_as_data, 108
+push code_as_data, 97
+push code_as_data, 99
+push code_as_data, 101
+push code_as_data, 32
+push code_as_data, 99
+push code_as_data, 111
+push code_as_data, 100
+push code_as_data, 101
+push code_as_data, 44
+push code_as_data, 32
+push code_as_data, 48
+push code_as_data, 44
+push code_as_data, 32
+push code_as_data, 49
 push code_as_data, 44
 push code_as_data, 32
 push code_as_data, 39
@@ -3530,7 +3572,7 @@
 
 DO_QUINE:
     # First print the stuff data section
-    print "# Copyright (C) 2006-2008, Parrot Foundation.\n"
+    print "# Copyright (C) 2006-2010, Parrot Foundation.\n"
     print "# ATT no autoexpanding svn markers please\n"
     print "\n"
     print ".sub quine :main\n"
@@ -3562,13 +3604,14 @@
     # Ignore everything up to end of data section
     .local int end_of_data_pos
     end_of_data_pos = index code, "# ------ End of data section ------"
-    substr code, 0, end_of_data_pos, ''
+    code = replace code, 0, end_of_data_pos, ''
 
     .local string char_string
     .local int    char_int
     SHIFT_NEXT_CHAR:
     unless code goto FINISH_SHIFT_CHARS
-        char_string = substr code, 0, 1, ''
+        char_string = substr code, 0, 1
+        code = replace code, 0, 1, ''
         char_int = ord char_string
         print 'push code_as_data, '
         print char_int

Modified: branches/pbc_frozen_strings1/examples/pir/substr.pir
==============================================================================
--- branches/pbc_frozen_strings1/examples/pir/substr.pir	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/examples/pir/substr.pir	Sun May  2 22:14:53 2010	(r46220)
@@ -31,7 +31,7 @@
 WANE:   $I1 = length $S1
         print  $S1
         print  "\n"
-        chopn  $S1, $S1, 1
+        $S1 = chopn $S1, 1
         unless $I1 == $I3 goto WANE
 DONE:
 .end

Modified: branches/pbc_frozen_strings1/examples/tutorial/23_string_ops_substr.pir
==============================================================================
--- branches/pbc_frozen_strings1/examples/tutorial/23_string_ops_substr.pir	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/examples/tutorial/23_string_ops_substr.pir	Sun May  2 22:14:53 2010	(r46220)
@@ -1,4 +1,4 @@
-# Copyright (C) 2007-2009, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 
 =head1 String Operations (continued)
@@ -10,25 +10,28 @@
 position is left out, C<substr> returns all the characters until the
 end of the string.
 
-An optional fourth argument is a string that will be used to
-replace the characters between the start and end positions.
+C<substr> no longer provides an in-place replace, however there is a
+C<replace> operator that allows this type of operation to be performed,
+although not in-place.  The C<replace> operator assigns a new_srting,
+taking as arguments, the old_string, a start and end position, and a
+string to be inserted in between the start and end positions.
 
 =cut
 
 .sub main :main
 
-    $S0 = substr "abcde", 1, 2    # "bc"
-    say $S0
+    $S0 = substr "abcde", 1, 2
+    say $S0                         # "bc"
 
     set $S1, "abcde"
     $S0 = substr $S1, 1, 2
-    say $S0                   # "bc"
-    say $S1                   # "abcde"
+    say $S0                         # "bc"
+    say $S1                         # "abcde"
 
     set $S1, "abcde"
-    $S0 = substr $S1, 1, 2, "XYZ"
-    say $S0                       # "bc"
-    say $S1                       # "aXYZde"
+    $S0 = replace $S1, 1, 2, "XYZ"
+    say $S0                         # "aXYZde"
+    say $S1                         # "abcde"
 
 .end
 
@@ -37,4 +40,3 @@
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4 ft=pir:
-

Modified: branches/pbc_frozen_strings1/ext/nqp-rx/src/stage0/HLL-s0.pir
==============================================================================
--- branches/pbc_frozen_strings1/ext/nqp-rx/src/stage0/HLL-s0.pir	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/ext/nqp-rx/src/stage0/HLL-s0.pir	Sun May  2 22:14:53 2010	(r46220)
@@ -468,7 +468,7 @@
 .end
 
 
-.sub 'quotemod_check' :method
+.sub 'quotemod_check' :method :nsentry
     .param string mod
 
     $P0 = find_dynamic_lex '%*QUOTEMOD'
@@ -854,7 +854,7 @@
 ### .include 'gen/hllgrammar-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1271948647.57035")
+.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_1271948647.57035")
+.sub "" :load :init :subid("post103") :outer("10_1272816829.8573")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1271948647.57035" 
+    .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_1271948647.57035") :outer("10_1271948647.57035")
+.sub "_block13"  :subid("11_1272816829.8573") :outer("10_1272816829.8573")
 .annotate "line", 5
-    .const 'Sub' $P329 = "101_1271948647.57035" 
+    .const 'Sub' $P329 = "101_1272816829.8573" 
     capture_lex $P329
-    .const 'Sub' $P322 = "99_1271948647.57035" 
+    .const 'Sub' $P322 = "99_1272816829.8573" 
     capture_lex $P322
-    .const 'Sub' $P309 = "96_1271948647.57035" 
+    .const 'Sub' $P309 = "96_1272816829.8573" 
     capture_lex $P309
-    .const 'Sub' $P277 = "91_1271948647.57035" 
+    .const 'Sub' $P277 = "91_1272816829.8573" 
     capture_lex $P277
-    .const 'Sub' $P271 = "89_1271948647.57035" 
+    .const 'Sub' $P271 = "89_1272816829.8573" 
     capture_lex $P271
-    .const 'Sub' $P266 = "87_1271948647.57035" 
+    .const 'Sub' $P266 = "87_1272816829.8573" 
     capture_lex $P266
-    .const 'Sub' $P260 = "85_1271948647.57035" 
+    .const 'Sub' $P260 = "85_1272816829.8573" 
     capture_lex $P260
-    .const 'Sub' $P254 = "83_1271948647.57035" 
+    .const 'Sub' $P254 = "83_1272816829.8573" 
     capture_lex $P254
-    .const 'Sub' $P249 = "81_1271948647.57035" 
+    .const 'Sub' $P249 = "81_1272816829.8573" 
     capture_lex $P249
-    .const 'Sub' $P244 = "79_1271948647.57035" 
+    .const 'Sub' $P244 = "79_1272816829.8573" 
     capture_lex $P244
-    .const 'Sub' $P239 = "77_1271948647.57035" 
+    .const 'Sub' $P239 = "77_1272816829.8573" 
     capture_lex $P239
-    .const 'Sub' $P234 = "75_1271948647.57035" 
+    .const 'Sub' $P234 = "75_1272816829.8573" 
     capture_lex $P234
-    .const 'Sub' $P229 = "73_1271948647.57035" 
+    .const 'Sub' $P229 = "73_1272816829.8573" 
     capture_lex $P229
-    .const 'Sub' $P224 = "71_1271948647.57035" 
+    .const 'Sub' $P224 = "71_1272816829.8573" 
     capture_lex $P224
-    .const 'Sub' $P219 = "69_1271948647.57035" 
+    .const 'Sub' $P219 = "69_1272816829.8573" 
     capture_lex $P219
-    .const 'Sub' $P208 = "65_1271948647.57035" 
+    .const 'Sub' $P208 = "65_1272816829.8573" 
     capture_lex $P208
-    .const 'Sub' $P195 = "63_1271948647.57035" 
+    .const 'Sub' $P195 = "63_1272816829.8573" 
     capture_lex $P195
-    .const 'Sub' $P183 = "61_1271948647.57035" 
+    .const 'Sub' $P183 = "61_1272816829.8573" 
     capture_lex $P183
-    .const 'Sub' $P176 = "59_1271948647.57035" 
+    .const 'Sub' $P176 = "59_1272816829.8573" 
     capture_lex $P176
-    .const 'Sub' $P167 = "57_1271948647.57035" 
+    .const 'Sub' $P167 = "57_1272816829.8573" 
     capture_lex $P167
-    .const 'Sub' $P160 = "55_1271948647.57035" 
+    .const 'Sub' $P160 = "55_1272816829.8573" 
     capture_lex $P160
-    .const 'Sub' $P151 = "53_1271948647.57035" 
+    .const 'Sub' $P151 = "53_1272816829.8573" 
     capture_lex $P151
-    .const 'Sub' $P144 = "51_1271948647.57035" 
+    .const 'Sub' $P144 = "51_1272816829.8573" 
     capture_lex $P144
-    .const 'Sub' $P135 = "49_1271948647.57035" 
+    .const 'Sub' $P135 = "49_1272816829.8573" 
     capture_lex $P135
-    .const 'Sub' $P128 = "47_1271948647.57035" 
+    .const 'Sub' $P128 = "47_1272816829.8573" 
     capture_lex $P128
-    .const 'Sub' $P121 = "45_1271948647.57035" 
+    .const 'Sub' $P121 = "45_1272816829.8573" 
     capture_lex $P121
-    .const 'Sub' $P111 = "43_1271948647.57035" 
+    .const 'Sub' $P111 = "43_1272816829.8573" 
     capture_lex $P111
-    .const 'Sub' $P103 = "41_1271948647.57035" 
+    .const 'Sub' $P103 = "41_1272816829.8573" 
     capture_lex $P103
-    .const 'Sub' $P93 = "40_1271948647.57035" 
+    .const 'Sub' $P93 = "40_1272816829.8573" 
     capture_lex $P93
-    .const 'Sub' $P87 = "38_1271948647.57035" 
+    .const 'Sub' $P87 = "38_1272816829.8573" 
     capture_lex $P87
-    .const 'Sub' $P82 = "36_1271948647.57035" 
+    .const 'Sub' $P82 = "36_1272816829.8573" 
     capture_lex $P82
-    .const 'Sub' $P74 = "34_1271948647.57035" 
+    .const 'Sub' $P74 = "34_1272816829.8573" 
     capture_lex $P74
-    .const 'Sub' $P68 = "32_1271948647.57035" 
+    .const 'Sub' $P68 = "32_1272816829.8573" 
     capture_lex $P68
-    .const 'Sub' $P62 = "30_1271948647.57035" 
+    .const 'Sub' $P62 = "30_1272816829.8573" 
     capture_lex $P62
-    .const 'Sub' $P56 = "28_1271948647.57035" 
+    .const 'Sub' $P56 = "28_1272816829.8573" 
     capture_lex $P56
-    .const 'Sub' $P23 = "14_1271948647.57035" 
+    .const 'Sub' $P23 = "14_1272816829.8573" 
     capture_lex $P23
-    .const 'Sub' $P15 = "12_1271948647.57035" 
+    .const 'Sub' $P15 = "12_1272816829.8573" 
     capture_lex $P15
 .annotate "line", 33
-    .const 'Sub' $P329 = "101_1271948647.57035" 
+    .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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.sub "termish"  :subid("14_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 5
     .local string rx24_tgt
     .local int rx24_pos
@@ -1149,7 +1149,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__termish"  :subid("15_1271948647.57035") :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_1271948647.57035") :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_1271948647.57035") :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_1271948647.57035") :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_1271948647.57035") :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_1271948647.57035") :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_1271948647.57035") :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_1271948647.57035") :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_1271948647.57035") :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_1271948647.57035") :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_1271948647.57035") :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_1271948647.57035") :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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :method
+.sub "!PREFIX__nullterm_alt"  :subid("39_1272816829.8573") :method
 .annotate "line", 5
     $P90 = self."!PREFIX__!subrule"("term", "")
     new $P91, "ResizablePMCArray"
@@ -1677,11 +1677,11 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nulltermish"  :subid("40_1271948647.57035") :method :outer("11_1271948647.57035")
+.sub "nulltermish"  :subid("40_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
     new $P95, 'ExceptionHandler'
     set_addr $P95, control_94
-    $P95."handle_types"(58)
+    $P95."handle_types"(57)
     push_eh $P95
     .lex "self", self
     find_lex $P98, "self"
@@ -1704,7 +1704,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_delimited"  :subid("41_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.sub "quote_escape:sym<misc>"  :subid("91_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
-    .const 'Sub' $P297 = "95_1271948647.57035" 
+    .const 'Sub' $P297 = "95_1272816829.8573" 
     capture_lex $P297
-    .const 'Sub' $P290 = "94_1271948647.57035" 
+    .const 'Sub' $P290 = "94_1272816829.8573" 
     capture_lex $P290
-    .const 'Sub' $P285 = "93_1271948647.57035" 
+    .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_1271948647.57035" 
+    .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_1271948647.57035" 
+    .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_1271948647.57035" 
+    .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_1271948647.57035") :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_1271948647.57035") :outer("91_1271948647.57035")
+.sub "_block284"  :anon :subid("93_1272816829.8573") :outer("91_1272816829.8573")
 .annotate "line", 99
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block289"  :anon :subid("94_1271948647.57035") :method :outer("91_1271948647.57035")
+.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_1271948647.57035") :outer("91_1271948647.57035")
+.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_1271948647.57035") :method :outer("11_1271948647.57035")
+.sub "charname"  :subid("96_1272816829.8573") :method :outer("11_1272816829.8573")
 .annotate "line", 33
-    .const 'Sub' $P319 = "98_1271948647.57035" 
+    .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_1271948647.57035" 
+    .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_1271948647.57035") :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_1271948647.57035") :method :outer("96_1271948647.57035")
+.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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948647.57035") :method :outer("11_1271948647.57035")
+.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_1271948647.57035") :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_1271948650.1622")
+.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_1271948650.1622")
+.sub "" :load :init :subid("post49") :outer("10_1272816831.39278")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1271948650.1622" 
+    .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_1271948650.1622") :outer("10_1271948650.1622")
+.sub "_block13"  :subid("11_1272816831.39278") :outer("10_1272816831.39278")
 .annotate "line", 3
-    .const 'Sub' $P554 = "48_1271948650.1622" 
+    .const 'Sub' $P554 = "48_1272816831.39278" 
     capture_lex $P554
-    .const 'Sub' $P529 = "46_1271948650.1622" 
+    .const 'Sub' $P529 = "46_1272816831.39278" 
     capture_lex $P529
-    .const 'Sub' $P498 = "45_1271948650.1622" 
+    .const 'Sub' $P498 = "45_1272816831.39278" 
     capture_lex $P498
-    .const 'Sub' $P479 = "44_1271948650.1622" 
+    .const 'Sub' $P479 = "44_1272816831.39278" 
     capture_lex $P479
-    .const 'Sub' $P472 = "43_1271948650.1622" 
+    .const 'Sub' $P472 = "43_1272816831.39278" 
     capture_lex $P472
-    .const 'Sub' $P462 = "42_1271948650.1622" 
+    .const 'Sub' $P462 = "42_1272816831.39278" 
     capture_lex $P462
-    .const 'Sub' $P445 = "41_1271948650.1622" 
+    .const 'Sub' $P445 = "41_1272816831.39278" 
     capture_lex $P445
-    .const 'Sub' $P428 = "40_1271948650.1622" 
+    .const 'Sub' $P428 = "40_1272816831.39278" 
     capture_lex $P428
-    .const 'Sub' $P421 = "39_1271948650.1622" 
+    .const 'Sub' $P421 = "39_1272816831.39278" 
     capture_lex $P421
-    .const 'Sub' $P414 = "38_1271948650.1622" 
+    .const 'Sub' $P414 = "38_1272816831.39278" 
     capture_lex $P414
-    .const 'Sub' $P407 = "37_1271948650.1622" 
+    .const 'Sub' $P407 = "37_1272816831.39278" 
     capture_lex $P407
-    .const 'Sub' $P400 = "36_1271948650.1622" 
+    .const 'Sub' $P400 = "36_1272816831.39278" 
     capture_lex $P400
-    .const 'Sub' $P393 = "35_1271948650.1622" 
+    .const 'Sub' $P393 = "35_1272816831.39278" 
     capture_lex $P393
-    .const 'Sub' $P383 = "34_1271948650.1622" 
+    .const 'Sub' $P383 = "34_1272816831.39278" 
     capture_lex $P383
-    .const 'Sub' $P376 = "33_1271948650.1622" 
+    .const 'Sub' $P376 = "33_1272816831.39278" 
     capture_lex $P376
-    .const 'Sub' $P360 = "32_1271948650.1622" 
+    .const 'Sub' $P360 = "32_1272816831.39278" 
     capture_lex $P360
-    .const 'Sub' $P285 = "30_1271948650.1622" 
+    .const 'Sub' $P285 = "30_1272816831.39278" 
     capture_lex $P285
-    .const 'Sub' $P222 = "27_1271948650.1622" 
+    .const 'Sub' $P222 = "27_1272816831.39278" 
     capture_lex $P222
-    .const 'Sub' $P213 = "26_1271948650.1622" 
+    .const 'Sub' $P213 = "26_1272816831.39278" 
     capture_lex $P213
-    .const 'Sub' $P204 = "25_1271948650.1622" 
+    .const 'Sub' $P204 = "25_1272816831.39278" 
     capture_lex $P204
-    .const 'Sub' $P195 = "24_1271948650.1622" 
+    .const 'Sub' $P195 = "24_1272816831.39278" 
     capture_lex $P195
-    .const 'Sub' $P186 = "23_1271948650.1622" 
+    .const 'Sub' $P186 = "23_1272816831.39278" 
     capture_lex $P186
-    .const 'Sub' $P177 = "22_1271948650.1622" 
+    .const 'Sub' $P177 = "22_1272816831.39278" 
     capture_lex $P177
-    .const 'Sub' $P167 = "21_1271948650.1622" 
+    .const 'Sub' $P167 = "21_1272816831.39278" 
     capture_lex $P167
-    .const 'Sub' $P157 = "20_1271948650.1622" 
+    .const 'Sub' $P157 = "20_1272816831.39278" 
     capture_lex $P157
-    .const 'Sub' $P149 = "19_1271948650.1622" 
+    .const 'Sub' $P149 = "19_1272816831.39278" 
     capture_lex $P149
-    .const 'Sub' $P139 = "18_1271948650.1622" 
+    .const 'Sub' $P139 = "18_1272816831.39278" 
     capture_lex $P139
-    .const 'Sub' $P129 = "17_1271948650.1622" 
+    .const 'Sub' $P129 = "17_1272816831.39278" 
     capture_lex $P129
-    .const 'Sub' $P28 = "14_1271948650.1622" 
+    .const 'Sub' $P28 = "14_1272816831.39278" 
     capture_lex $P28
-    .const 'Sub' $P22 = "13_1271948650.1622" 
+    .const 'Sub' $P22 = "13_1272816831.39278" 
     capture_lex $P22
-    .const 'Sub' $P15 = "12_1271948650.1622" 
+    .const 'Sub' $P15 = "12_1272816831.39278" 
     capture_lex $P15
 .annotate "line", 197
-    .const 'Sub' $P554 = "48_1271948650.1622" 
+    .const 'Sub' $P554 = "48_1272816831.39278" 
     capture_lex $P554
 .annotate "line", 3
     .return ($P554)
@@ -4799,13 +4799,13 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "string_to_int"  :subid("12_1271948650.1622") :outer("11_1271948650.1622")
+.sub "string_to_int"  :subid("12_1272816831.39278") :outer("11_1272816831.39278")
     .param pmc param_18
     .param pmc param_19
 .annotate "line", 3
     new $P17, 'ExceptionHandler'
     set_addr $P17, control_16
-    $P17."handle_types"(58)
+    $P17."handle_types"(57)
     push_eh $P17
     .lex "$src", param_18
     .lex "$base", param_19
@@ -4852,12 +4852,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "ints_to_string"  :subid("13_1271948650.1622") :outer("11_1271948650.1622")
+.sub "ints_to_string"  :subid("13_1272816831.39278") :outer("11_1272816831.39278")
     .param pmc param_25
 .annotate "line", 37
     new $P24, 'ExceptionHandler'
     set_addr $P24, control_23
-    $P24."handle_types"(58)
+    $P24."handle_types"(57)
     push_eh $P24
     .lex "$ints", param_25
 .annotate "line", 38
@@ -4893,18 +4893,18 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "EXPR"  :subid("14_1271948650.1622") :method :outer("11_1271948650.1622")
+.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_1271948650.1622" 
+    .const 'Sub' $P111 = "16_1272816831.39278" 
     capture_lex $P111
-    .const 'Sub' $P78 = "15_1271948650.1622" 
+    .const 'Sub' $P78 = "15_1272816831.39278" 
     capture_lex $P78
     new $P30, 'ExceptionHandler'
     set_addr $P30, control_29
-    $P30."handle_types"(58)
+    $P30."handle_types"(57)
     push_eh $P30
     .lex "self", self
     .lex "$/", param_31
@@ -4920,7 +4920,7 @@
     find_lex $P36, "$key"
     if $P36, unless_35_end
     new $P37, "Exception"
-    set $P37['type'], 58
+    set $P37['type'], 57
     new $P38, "Integer"
     assign $P38, 0
     setattribute $P37, 'payload', $P38
@@ -5035,7 +5035,7 @@
     find_lex $P75, "$past"
     $P76 = $P75."name"()
     if $P76, unless_74_end
-    .const 'Sub' $P78 = "15_1271948650.1622" 
+    .const 'Sub' $P78 = "15_1272816831.39278" 
     capture_lex $P78
     $P78()
   unless_74_end:
@@ -5053,13 +5053,13 @@
     iter $P105, $P107
     new $P123, 'ExceptionHandler'
     set_addr $P123, loop122_handler
-    $P123."handle_types"(65, 67, 66)
+    $P123."handle_types"(64, 66, 65)
     push_eh $P123
   loop122_test:
     unless $P105, loop122_done
     shift $P109, $P105
   loop122_redo:
-    .const 'Sub' $P111 = "16_1271948650.1622" 
+    .const 'Sub' $P111 = "16_1272816831.39278" 
     capture_lex $P111
     $P111($P109)
   loop122_next:
@@ -5068,8 +5068,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P124, exception, 'type'
-    eq $P124, 65, loop122_next
-    eq $P124, 67, loop122_redo
+    eq $P124, 64, loop122_next
+    eq $P124, 66, loop122_redo
   loop122_done:
     pop_eh 
   for_undef_72:
@@ -5104,7 +5104,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block77"  :anon :subid("15_1271948650.1622") :outer("14_1271948650.1622")
+.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_1271948650.1622") :outer("14_1271948650.1622")
+.sub "_block110"  :anon :subid("16_1272816831.39278") :outer("14_1272816831.39278")
     .param pmc param_112
 .annotate "line", 82
     .lex "$_", param_112
@@ -5177,12 +5177,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "term:sym<circumfix>"  :subid("17_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "term:sym<circumfix>"  :subid("17_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_132
 .annotate "line", 87
     new $P131, 'ExceptionHandler'
     set_addr $P131, control_130
-    $P131."handle_types"(58)
+    $P131."handle_types"(57)
     push_eh $P131
     .lex "self", self
     .lex "$/", param_132
@@ -5207,12 +5207,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "termish"  :subid("18_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "termish"  :subid("18_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_142
 .annotate "line", 89
     new $P141, 'ExceptionHandler'
     set_addr $P141, control_140
-    $P141."handle_types"(58)
+    $P141."handle_types"(57)
     push_eh $P141
     .lex "self", self
     .lex "$/", param_142
@@ -5237,12 +5237,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "nullterm"  :subid("19_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "nullterm"  :subid("19_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_152
 .annotate "line", 90
     new $P151, 'ExceptionHandler'
     set_addr $P151, control_150
-    $P151."handle_types"(58)
+    $P151."handle_types"(57)
     push_eh $P151
     .lex "self", self
     .lex "$/", param_152
@@ -5259,12 +5259,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "nullterm_alt"  :subid("20_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "nullterm_alt"  :subid("20_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_160
 .annotate "line", 91
     new $P159, 'ExceptionHandler'
     set_addr $P159, control_158
-    $P159."handle_types"(58)
+    $P159."handle_types"(57)
     push_eh $P159
     .lex "self", self
     .lex "$/", param_160
@@ -5289,12 +5289,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "integer"  :subid("21_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "integer"  :subid("21_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_170
 .annotate "line", 93
     new $P169, 'ExceptionHandler'
     set_addr $P169, control_168
-    $P169."handle_types"(58)
+    $P169."handle_types"(57)
     push_eh $P169
     .lex "self", self
     .lex "$/", param_170
@@ -5319,12 +5319,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "dec_number"  :subid("22_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "dec_number"  :subid("22_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_180
 .annotate "line", 95
     new $P179, 'ExceptionHandler'
     set_addr $P179, control_178
-    $P179."handle_types"(58)
+    $P179."handle_types"(57)
     push_eh $P179
     .lex "self", self
     .lex "$/", param_180
@@ -5342,12 +5342,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "decint"  :subid("23_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "decint"  :subid("23_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_189
 .annotate "line", 97
     new $P188, 'ExceptionHandler'
     set_addr $P188, control_187
-    $P188."handle_types"(58)
+    $P188."handle_types"(57)
     push_eh $P188
     .lex "self", self
     .lex "$/", param_189
@@ -5365,12 +5365,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "hexint"  :subid("24_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "hexint"  :subid("24_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_198
 .annotate "line", 98
     new $P197, 'ExceptionHandler'
     set_addr $P197, control_196
-    $P197."handle_types"(58)
+    $P197."handle_types"(57)
     push_eh $P197
     .lex "self", self
     .lex "$/", param_198
@@ -5388,12 +5388,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "octint"  :subid("25_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "octint"  :subid("25_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_207
 .annotate "line", 99
     new $P206, 'ExceptionHandler'
     set_addr $P206, control_205
-    $P206."handle_types"(58)
+    $P206."handle_types"(57)
     push_eh $P206
     .lex "self", self
     .lex "$/", param_207
@@ -5411,12 +5411,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "binint"  :subid("26_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "binint"  :subid("26_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_216
 .annotate "line", 100
     new $P215, 'ExceptionHandler'
     set_addr $P215, control_214
-    $P215."handle_types"(58)
+    $P215."handle_types"(57)
     push_eh $P215
     .lex "self", self
     .lex "$/", param_216
@@ -5434,14 +5434,14 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_EXPR"  :subid("27_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "quote_EXPR"  :subid("27_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_225
 .annotate "line", 102
-    .const 'Sub' $P241 = "28_1271948650.1622" 
+    .const 'Sub' $P241 = "28_1272816831.39278" 
     capture_lex $P241
     new $P224, 'ExceptionHandler'
     set_addr $P224, control_223
-    $P224."handle_types"(58)
+    $P224."handle_types"(57)
     push_eh $P224
     .lex "self", self
     .lex "$/", param_225
@@ -5469,7 +5469,7 @@
     $P237 = $P235."ACCEPTS"($P236)
     if $P237, if_234
 .annotate "line", 108
-    .const 'Sub' $P241 = "28_1271948650.1622" 
+    .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_1271948650.1622") :outer("27_1271948650.1622")
+.sub "_block240"  :anon :subid("28_1272816831.39278") :outer("27_1272816831.39278")
 .annotate "line", 108
-    .const 'Sub' $P260 = "29_1271948650.1622" 
+    .const 'Sub' $P260 = "29_1272816831.39278" 
     capture_lex $P260
 .annotate "line", 109
     $P242 = root_new ['parrot';'ResizablePMCArray']
@@ -5555,13 +5555,13 @@
     iter $P255, $P256
     new $P266, 'ExceptionHandler'
     set_addr $P266, loop265_handler
-    $P266."handle_types"(65, 67, 66)
+    $P266."handle_types"(64, 66, 65)
     push_eh $P266
   loop265_test:
     unless $P255, loop265_done
     shift $P258, $P255
   loop265_redo:
-    .const 'Sub' $P260 = "29_1271948650.1622" 
+    .const 'Sub' $P260 = "29_1272816831.39278" 
     capture_lex $P260
     $P260($P258)
   loop265_next:
@@ -5570,8 +5570,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P267, exception, 'type'
-    eq $P267, 65, loop265_next
-    eq $P267, 67, loop265_redo
+    eq $P267, 64, loop265_next
+    eq $P267, 66, loop265_redo
   loop265_done:
     pop_eh 
   for_undef_87:
@@ -5584,7 +5584,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block259"  :anon :subid("29_1271948650.1622") :outer("28_1271948650.1622")
+.sub "_block259"  :anon :subid("29_1272816831.39278") :outer("28_1272816831.39278")
     .param pmc param_261
 .annotate "line", 112
     .lex "$_", param_261
@@ -5596,14 +5596,14 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_delimited"  :subid("30_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "quote_delimited"  :subid("30_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_288
 .annotate "line", 125
-    .const 'Sub' $P300 = "31_1271948650.1622" 
+    .const 'Sub' $P300 = "31_1272816831.39278" 
     capture_lex $P300
     new $P287, 'ExceptionHandler'
     set_addr $P287, control_286
-    $P287."handle_types"(58)
+    $P287."handle_types"(57)
     push_eh $P287
     .lex "self", self
     .lex "$/", param_288
@@ -5636,13 +5636,13 @@
     iter $P294, $P296
     new $P333, 'ExceptionHandler'
     set_addr $P333, loop332_handler
-    $P333."handle_types"(65, 67, 66)
+    $P333."handle_types"(64, 66, 65)
     push_eh $P333
   loop332_test:
     unless $P294, loop332_done
     shift $P298, $P294
   loop332_redo:
-    .const 'Sub' $P300 = "31_1271948650.1622" 
+    .const 'Sub' $P300 = "31_1272816831.39278" 
     capture_lex $P300
     $P300($P298)
   loop332_next:
@@ -5651,8 +5651,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P334, exception, 'type'
-    eq $P334, 65, loop332_next
-    eq $P334, 67, loop332_redo
+    eq $P334, 64, loop332_next
+    eq $P334, 66, loop332_redo
   loop332_done:
     pop_eh 
   for_undef_90:
@@ -5681,7 +5681,7 @@
 .annotate "line", 144
     new $P354, 'ExceptionHandler'
     set_addr $P354, loop353_handler
-    $P354."handle_types"(65, 67, 66)
+    $P354."handle_types"(64, 66, 65)
     push_eh $P354
   loop353_test:
     find_lex $P347, "@parts"
@@ -5701,8 +5701,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P355, exception, 'type'
-    eq $P355, 65, loop353_next
-    eq $P355, 67, loop353_redo
+    eq $P355, 64, loop353_next
+    eq $P355, 66, loop353_redo
   loop353_done:
     pop_eh 
 .annotate "line", 147
@@ -5720,7 +5720,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block299"  :anon :subid("31_1271948650.1622") :outer("30_1271948650.1622")
+.sub "_block299"  :anon :subid("31_1272816831.39278") :outer("30_1272816831.39278")
     .param pmc param_302
 .annotate "line", 129
     new $P301, "Undef"
@@ -5789,12 +5789,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_atom"  :subid("32_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "quote_atom"  :subid("32_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_363
 .annotate "line", 150
     new $P362, 'ExceptionHandler'
     set_addr $P362, control_361
-    $P362."handle_types"(58)
+    $P362."handle_types"(57)
     push_eh $P362
     .lex "self", self
     .lex "$/", param_363
@@ -5838,12 +5838,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<backslash>"  :subid("33_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "quote_escape:sym<backslash>"  :subid("33_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_379
 .annotate "line", 154
     new $P378, 'ExceptionHandler'
     set_addr $P378, control_377
-    $P378."handle_types"(58)
+    $P378."handle_types"(57)
     push_eh $P378
     .lex "self", self
     .lex "$/", param_379
@@ -5859,12 +5859,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<stopper>"  :subid("34_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "quote_escape:sym<stopper>"  :subid("34_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_386
 .annotate "line", 155
     new $P385, 'ExceptionHandler'
     set_addr $P385, control_384
-    $P385."handle_types"(58)
+    $P385."handle_types"(57)
     push_eh $P385
     .lex "self", self
     .lex "$/", param_386
@@ -5889,12 +5889,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<bs>"  :subid("35_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "quote_escape:sym<bs>"  :subid("35_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_396
 .annotate "line", 157
     new $P395, 'ExceptionHandler'
     set_addr $P395, control_394
-    $P395."handle_types"(58)
+    $P395."handle_types"(57)
     push_eh $P395
     .lex "self", self
     .lex "$/", param_396
@@ -5910,12 +5910,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<nl>"  :subid("36_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "quote_escape:sym<nl>"  :subid("36_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_403
 .annotate "line", 158
     new $P402, 'ExceptionHandler'
     set_addr $P402, control_401
-    $P402."handle_types"(58)
+    $P402."handle_types"(57)
     push_eh $P402
     .lex "self", self
     .lex "$/", param_403
@@ -5931,12 +5931,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<cr>"  :subid("37_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "quote_escape:sym<cr>"  :subid("37_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_410
 .annotate "line", 159
     new $P409, 'ExceptionHandler'
     set_addr $P409, control_408
-    $P409."handle_types"(58)
+    $P409."handle_types"(57)
     push_eh $P409
     .lex "self", self
     .lex "$/", param_410
@@ -5952,12 +5952,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<tab>"  :subid("38_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "quote_escape:sym<tab>"  :subid("38_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_417
 .annotate "line", 160
     new $P416, 'ExceptionHandler'
     set_addr $P416, control_415
-    $P416."handle_types"(58)
+    $P416."handle_types"(57)
     push_eh $P416
     .lex "self", self
     .lex "$/", param_417
@@ -5973,12 +5973,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<ff>"  :subid("39_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "quote_escape:sym<ff>"  :subid("39_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_424
 .annotate "line", 161
     new $P423, 'ExceptionHandler'
     set_addr $P423, control_422
-    $P423."handle_types"(58)
+    $P423."handle_types"(57)
     push_eh $P423
     .lex "self", self
     .lex "$/", param_424
@@ -5994,12 +5994,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<hex>"  :subid("40_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "quote_escape:sym<hex>"  :subid("40_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_431
 .annotate "line", 163
     new $P430, 'ExceptionHandler'
     set_addr $P430, control_429
-    $P430."handle_types"(58)
+    $P430."handle_types"(57)
     push_eh $P430
     .lex "self", self
     .lex "$/", param_431
@@ -6052,12 +6052,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<oct>"  :subid("41_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "quote_escape:sym<oct>"  :subid("41_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_448
 .annotate "line", 167
     new $P447, 'ExceptionHandler'
     set_addr $P447, control_446
-    $P447."handle_types"(58)
+    $P447."handle_types"(57)
     push_eh $P447
     .lex "self", self
     .lex "$/", param_448
@@ -6110,12 +6110,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<chr>"  :subid("42_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "quote_escape:sym<chr>"  :subid("42_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_465
 .annotate "line", 171
     new $P464, 'ExceptionHandler'
     set_addr $P464, control_463
-    $P464."handle_types"(58)
+    $P464."handle_types"(57)
     push_eh $P464
     .lex "self", self
     .lex "$/", param_465
@@ -6142,12 +6142,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<0>"  :subid("43_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "quote_escape:sym<0>"  :subid("43_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_475
 .annotate "line", 175
     new $P474, 'ExceptionHandler'
     set_addr $P474, control_473
-    $P474."handle_types"(58)
+    $P474."handle_types"(57)
     push_eh $P474
     .lex "self", self
     .lex "$/", param_475
@@ -6165,12 +6165,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<misc>"  :subid("44_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "quote_escape:sym<misc>"  :subid("44_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_482
 .annotate "line", 179
     new $P481, 'ExceptionHandler'
     set_addr $P481, control_480
-    $P481."handle_types"(58)
+    $P481."handle_types"(57)
     push_eh $P481
     .lex "self", self
     .lex "$/", param_482
@@ -6223,12 +6223,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "charname"  :subid("45_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "charname"  :subid("45_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_501
 .annotate "line", 183
     new $P500, 'ExceptionHandler'
     set_addr $P500, control_499
-    $P500."handle_types"(58)
+    $P500."handle_types"(57)
     push_eh $P500
     .lex "self", self
     .lex "$/", param_501
@@ -6296,14 +6296,14 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "charnames"  :subid("46_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "charnames"  :subid("46_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_532
 .annotate "line", 191
-    .const 'Sub' $P541 = "47_1271948650.1622" 
+    .const 'Sub' $P541 = "47_1272816831.39278" 
     capture_lex $P541
     new $P531, 'ExceptionHandler'
     set_addr $P531, control_530
-    $P531."handle_types"(58)
+    $P531."handle_types"(57)
     push_eh $P531
     .lex "self", self
     .lex "$/", param_532
@@ -6327,13 +6327,13 @@
     iter $P535, $P537
     new $P548, 'ExceptionHandler'
     set_addr $P548, loop547_handler
-    $P548."handle_types"(65, 67, 66)
+    $P548."handle_types"(64, 66, 65)
     push_eh $P548
   loop547_test:
     unless $P535, loop547_done
     shift $P539, $P535
   loop547_redo:
-    .const 'Sub' $P541 = "47_1271948650.1622" 
+    .const 'Sub' $P541 = "47_1272816831.39278" 
     capture_lex $P541
     $P541($P539)
   loop547_next:
@@ -6342,8 +6342,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P549, exception, 'type'
-    eq $P549, 65, loop547_next
-    eq $P549, 67, loop547_redo
+    eq $P549, 64, loop547_next
+    eq $P549, 66, loop547_redo
   loop547_done:
     pop_eh 
   for_undef_125:
@@ -6362,7 +6362,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block540"  :anon :subid("47_1271948650.1622") :outer("46_1271948650.1622")
+.sub "_block540"  :anon :subid("47_1272816831.39278") :outer("46_1272816831.39278")
     .param pmc param_542
 .annotate "line", 193
     .lex "$_", param_542
@@ -6376,12 +6376,12 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "charspec"  :subid("48_1271948650.1622") :method :outer("11_1271948650.1622")
+.sub "charspec"  :subid("48_1272816831.39278") :method :outer("11_1272816831.39278")
     .param pmc param_557
 .annotate "line", 197
     new $P556, 'ExceptionHandler'
     set_addr $P556, control_555
-    $P556."handle_types"(58)
+    $P556."handle_types"(57)
     push_eh $P556
     .lex "self", self
     .lex "$/", param_557
@@ -6427,7 +6427,7 @@
 ### .include 'gen/hllcompiler.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1271948651.35295")
+.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_1271948651.35295")
+.sub "" :load :init :subid("post25") :outer("10_1272816832.1082")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1271948651.35295" 
+    .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_1271948651.35295") :outer("10_1271948651.35295")
+.sub "_block13"  :subid("11_1272816832.1082") :outer("10_1272816832.1082")
 .annotate "line", 6
-    .const 'Sub' $P187 = "20_1271948651.35295" 
+    .const 'Sub' $P187 = "20_1272816832.1082" 
     capture_lex $P187
-    .const 'Sub' $P152 = "18_1271948651.35295" 
+    .const 'Sub' $P152 = "18_1272816832.1082" 
     capture_lex $P152
-    .const 'Sub' $P137 = "17_1271948651.35295" 
+    .const 'Sub' $P137 = "17_1272816832.1082" 
     capture_lex $P137
-    .const 'Sub' $P121 = "16_1271948651.35295" 
+    .const 'Sub' $P121 = "16_1272816832.1082" 
     capture_lex $P121
-    .const 'Sub' $P32 = "13_1271948651.35295" 
+    .const 'Sub' $P32 = "13_1272816832.1082" 
     capture_lex $P32
-    .const 'Sub' $P15 = "12_1271948651.35295" 
+    .const 'Sub' $P15 = "12_1272816832.1082" 
     capture_lex $P15
 .annotate "line", 14
-    .const 'Sub' $P15 = "12_1271948651.35295" 
+    .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_1271948651.35295" 
+    .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_1271948651.35295")
+.sub "" :load :init :subid("post26") :outer("11_1272816832.1082")
 .annotate "line", 6
     get_hll_global $P14, ["HLL";"Compiler"], "_block13" 
     .local pmc block
@@ -6498,12 +6498,12 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "value_type"  :subid("12_1271948651.35295") :outer("11_1271948651.35295")
+.sub "value_type"  :subid("12_1272816832.1082") :outer("11_1272816832.1082")
     .param pmc param_18
 .annotate "line", 14
     new $P17, 'ExceptionHandler'
     set_addr $P17, control_16
-    $P17."handle_types"(58)
+    $P17."handle_types"(57)
     push_eh $P17
     .lex "$value", param_18
 .annotate "line", 15
@@ -6542,19 +6542,19 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "get_exports"  :subid("13_1271948651.35295") :method :outer("11_1271948651.35295")
+.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_1271948651.35295" 
+    .const 'Sub' $P104 = "15_1272816832.1082" 
     capture_lex $P104
-    .const 'Sub' $P83 = "14_1271948651.35295" 
+    .const 'Sub' $P83 = "14_1272816832.1082" 
     capture_lex $P83
     new $P34, 'ExceptionHandler'
     set_addr $P34, control_33
-    $P34."handle_types"(58)
+    $P34."handle_types"(57)
     push_eh $P34
     .lex "self", self
     .lex "$module", param_35
@@ -6650,13 +6650,13 @@
     iter $P99, $P100
     new $P117, 'ExceptionHandler'
     set_addr $P117, loop116_handler
-    $P117."handle_types"(65, 67, 66)
+    $P117."handle_types"(64, 66, 65)
     push_eh $P117
   loop116_test:
     unless $P99, loop116_done
     shift $P102, $P99
   loop116_redo:
-    .const 'Sub' $P104 = "15_1271948651.35295" 
+    .const 'Sub' $P104 = "15_1272816832.1082" 
     capture_lex $P104
     $P104($P102)
   loop116_next:
@@ -6665,8 +6665,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P118, exception, 'type'
-    eq $P118, 65, loop116_next
-    eq $P118, 67, loop116_redo
+    eq $P118, 64, loop116_next
+    eq $P118, 66, loop116_redo
   loop116_done:
     pop_eh 
   for_undef_31:
@@ -6680,13 +6680,13 @@
     iter $P78, $P79
     new $P97, 'ExceptionHandler'
     set_addr $P97, loop96_handler
-    $P97."handle_types"(65, 67, 66)
+    $P97."handle_types"(64, 66, 65)
     push_eh $P97
   loop96_test:
     unless $P78, loop96_done
     shift $P81, $P78
   loop96_redo:
-    .const 'Sub' $P83 = "14_1271948651.35295" 
+    .const 'Sub' $P83 = "14_1272816832.1082" 
     capture_lex $P83
     $P83($P81)
   loop96_next:
@@ -6695,8 +6695,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P98, exception, 'type'
-    eq $P98, 65, loop96_next
-    eq $P98, 67, loop96_redo
+    eq $P98, 64, loop96_next
+    eq $P98, 66, loop96_redo
   loop96_done:
     pop_eh 
   for_undef_34:
@@ -6714,7 +6714,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block103"  :anon :subid("15_1271948651.35295") :outer("13_1271948651.35295")
+.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_1271948651.35295") :outer("13_1271948651.35295")
+.sub "_block82"  :anon :subid("14_1272816832.1082") :outer("13_1272816832.1082")
     .param pmc param_85
 .annotate "line", 34
     new $P84, "Undef"
@@ -6785,12 +6785,12 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "get_module"  :subid("16_1271948651.35295") :method :outer("11_1271948651.35295")
+.sub "get_module"  :subid("16_1272816832.1082") :method :outer("11_1272816832.1082")
     .param pmc param_124
 .annotate "line", 47
     new $P123, 'ExceptionHandler'
     set_addr $P123, control_122
-    $P123."handle_types"(58)
+    $P123."handle_types"(57)
     push_eh $P123
     .lex "self", self
     .lex "$name", param_124
@@ -6825,13 +6825,13 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "language"  :subid("17_1271948651.35295") :method :outer("11_1271948651.35295")
+.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
     new $P139, 'ExceptionHandler'
     set_addr $P139, control_138
-    $P139."handle_types"(58)
+    $P139."handle_types"(57)
     push_eh $P139
     .lex "self", self
     if has_param_140, optparam_40
@@ -6869,14 +6869,14 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "load_module"  :subid("18_1271948651.35295") :method :outer("11_1271948651.35295")
+.sub "load_module"  :subid("18_1272816832.1082") :method :outer("11_1272816832.1082")
     .param pmc param_155
 .annotate "line", 61
-    .const 'Sub' $P165 = "19_1271948651.35295" 
+    .const 'Sub' $P165 = "19_1272816832.1082" 
     capture_lex $P165
     new $P154, 'ExceptionHandler'
     set_addr $P154, control_153
-    $P154."handle_types"(58)
+    $P154."handle_types"(57)
     push_eh $P154
     .lex "self", self
     .lex "$name", param_155
@@ -6899,7 +6899,7 @@
     assign $P163, 0
     store_lex "$loaded", $P163
 .annotate "line", 64
-    .const 'Sub' $P165 = "19_1271948651.35295" 
+    .const 'Sub' $P165 = "19_1272816832.1082" 
     capture_lex $P165
     $P165()
 .annotate "line", 65
@@ -6928,11 +6928,11 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block164"  :anon :subid("19_1271948651.35295") :outer("18_1271948651.35295")
+.sub "_block164"  :anon :subid("19_1272816832.1082") :outer("18_1272816832.1082")
 .annotate "line", 64
     new $P172, 'ExceptionHandler'
     set_addr $P172, control_171
-    $P172."handle_types_except"(58, 59, 60, 61, 63, 64, 65, 66, 67)
+    $P172."handle_types_except"(57, 58, 59, 60, 62, 63, 64, 65, 66)
     push_eh $P172
     find_lex $P166, "$base"
     concat $P167, $P166, ".pbc"
@@ -6961,15 +6961,15 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "import"  :subid("20_1271948651.35295") :method :outer("11_1271948651.35295")
+.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_1271948651.35295" 
+    .const 'Sub' $P197 = "21_1272816832.1082" 
     capture_lex $P197
     new $P189, 'ExceptionHandler'
     set_addr $P189, control_188
-    $P189."handle_types"(58)
+    $P189."handle_types"(57)
     push_eh $P189
     .lex "self", self
     .lex "$target", param_190
@@ -6981,13 +6981,13 @@
     iter $P192, $P193
     new $P279, 'ExceptionHandler'
     set_addr $P279, loop278_handler
-    $P279."handle_types"(65, 67, 66)
+    $P279."handle_types"(64, 66, 65)
     push_eh $P279
   loop278_test:
     unless $P192, loop278_done
     shift $P195, $P192
   loop278_redo:
-    .const 'Sub' $P197 = "21_1271948651.35295" 
+    .const 'Sub' $P197 = "21_1272816832.1082" 
     capture_lex $P197
     $P197($P195)
   loop278_next:
@@ -6996,8 +6996,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P280, exception, 'type'
-    eq $P280, 65, loop278_next
-    eq $P280, 67, loop278_redo
+    eq $P280, 64, loop278_next
+    eq $P280, 66, loop278_redo
   loop278_done:
     pop_eh 
   for_undef_42:
@@ -7012,14 +7012,14 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block196"  :anon :subid("21_1271948651.35295") :outer("20_1271948651.35295")
+.sub "_block196"  :anon :subid("21_1272816832.1082") :outer("20_1272816832.1082")
     .param pmc param_200
 .annotate "line", 70
-    .const 'Sub' $P267 = "24_1271948651.35295" 
+    .const 'Sub' $P267 = "24_1272816832.1082" 
     capture_lex $P267
-    .const 'Sub' $P247 = "23_1271948651.35295" 
+    .const 'Sub' $P247 = "23_1272816832.1082" 
     capture_lex $P247
-    .const 'Sub' $P218 = "22_1271948651.35295" 
+    .const 'Sub' $P218 = "22_1272816832.1082" 
     capture_lex $P218
 .annotate "line", 71
     new $P198, "Undef"
@@ -7061,13 +7061,13 @@
     iter $P262, $P263
     new $P276, 'ExceptionHandler'
     set_addr $P276, loop275_handler
-    $P276."handle_types"(65, 67, 66)
+    $P276."handle_types"(64, 66, 65)
     push_eh $P276
   loop275_test:
     unless $P262, loop275_done
     shift $P265, $P262
   loop275_redo:
-    .const 'Sub' $P267 = "24_1271948651.35295" 
+    .const 'Sub' $P267 = "24_1272816832.1082" 
     capture_lex $P267
     $P267($P265)
   loop275_next:
@@ -7076,8 +7076,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P277, exception, 'type'
-    eq $P277, 65, loop275_next
-    eq $P277, 67, loop275_redo
+    eq $P277, 64, loop275_next
+    eq $P277, 66, loop275_redo
   loop275_done:
     pop_eh 
   for_undef_43:
@@ -7093,13 +7093,13 @@
     iter $P242, $P243
     new $P260, 'ExceptionHandler'
     set_addr $P260, loop259_handler
-    $P260."handle_types"(65, 67, 66)
+    $P260."handle_types"(64, 66, 65)
     push_eh $P260
   loop259_test:
     unless $P242, loop259_done
     shift $P245, $P242
   loop259_redo:
-    .const 'Sub' $P247 = "23_1271948651.35295" 
+    .const 'Sub' $P247 = "23_1272816832.1082" 
     capture_lex $P247
     $P247($P245)
   loop259_next:
@@ -7108,8 +7108,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P261, exception, 'type'
-    eq $P261, 65, loop259_next
-    eq $P261, 67, loop259_redo
+    eq $P261, 64, loop259_next
+    eq $P261, 66, loop259_redo
   loop259_done:
     pop_eh 
   for_undef_45:
@@ -7127,13 +7127,13 @@
     iter $P213, $P214
     new $P232, 'ExceptionHandler'
     set_addr $P232, loop231_handler
-    $P232."handle_types"(65, 67, 66)
+    $P232."handle_types"(64, 66, 65)
     push_eh $P232
   loop231_test:
     unless $P213, loop231_done
     shift $P216, $P213
   loop231_redo:
-    .const 'Sub' $P218 = "22_1271948651.35295" 
+    .const 'Sub' $P218 = "22_1272816832.1082" 
     capture_lex $P218
     $P218($P216)
   loop231_next:
@@ -7142,8 +7142,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P233, exception, 'type'
-    eq $P233, 65, loop231_next
-    eq $P233, 67, loop231_redo
+    eq $P233, 64, loop231_next
+    eq $P233, 66, loop231_redo
   loop231_done:
     pop_eh 
   for_undef_46:
@@ -7156,7 +7156,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block266"  :anon :subid("24_1271948651.35295") :outer("21_1271948651.35295")
+.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_1271948651.35295") :outer("21_1271948651.35295")
+.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_1271948651.35295") :outer("21_1271948651.35295")
+.sub "_block217"  :anon :subid("22_1272816832.1082") :outer("21_1272816832.1082")
     .param pmc param_219
 .annotate "line", 74
     .lex "$_", param_219

Modified: branches/pbc_frozen_strings1/ext/nqp-rx/src/stage0/NQP-s0.pir
==============================================================================
--- branches/pbc_frozen_strings1/ext/nqp-rx/src/stage0/NQP-s0.pir	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/ext/nqp-rx/src/stage0/NQP-s0.pir	Sun May  2 22:14:53 2010	(r46220)
@@ -15,7 +15,7 @@
 ### .include 'gen/nqp-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1271948667.92136")
+.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_1271948667.92136")
+.sub "" :load :init :subid("post333") :outer("10_1272816833.94956")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1271948667.92136" 
+    .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_1271948667.92136") :outer("10_1271948667.92136")
+.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_1271948667.92136" 
+    .const 'Sub' $P1234 = "319_1272816833.94956" 
     capture_lex $P1234
-    .const 'Sub' $P1228 = "317_1271948667.92136" 
+    .const 'Sub' $P1228 = "317_1272816833.94956" 
     capture_lex $P1228
-    .const 'Sub' $P1222 = "315_1271948667.92136" 
+    .const 'Sub' $P1222 = "315_1272816833.94956" 
     capture_lex $P1222
-    .const 'Sub' $P1215 = "313_1271948667.92136" 
+    .const 'Sub' $P1215 = "313_1272816833.94956" 
     capture_lex $P1215
-    .const 'Sub' $P1208 = "311_1271948667.92136" 
+    .const 'Sub' $P1208 = "311_1272816833.94956" 
     capture_lex $P1208
-    .const 'Sub' $P1201 = "309_1271948667.92136" 
+    .const 'Sub' $P1201 = "309_1272816833.94956" 
     capture_lex $P1201
-    .const 'Sub' $P1194 = "307_1271948667.92136" 
+    .const 'Sub' $P1194 = "307_1272816833.94956" 
     capture_lex $P1194
-    .const 'Sub' $P1188 = "305_1271948667.92136" 
+    .const 'Sub' $P1188 = "305_1272816833.94956" 
     capture_lex $P1188
-    .const 'Sub' $P1181 = "303_1271948667.92136" 
+    .const 'Sub' $P1181 = "303_1272816833.94956" 
     capture_lex $P1181
-    .const 'Sub' $P1174 = "301_1271948667.92136" 
+    .const 'Sub' $P1174 = "301_1272816833.94956" 
     capture_lex $P1174
-    .const 'Sub' $P1167 = "299_1271948667.92136" 
+    .const 'Sub' $P1167 = "299_1272816833.94956" 
     capture_lex $P1167
-    .const 'Sub' $P1160 = "297_1271948667.92136" 
+    .const 'Sub' $P1160 = "297_1272816833.94956" 
     capture_lex $P1160
-    .const 'Sub' $P1153 = "295_1271948667.92136" 
+    .const 'Sub' $P1153 = "295_1272816833.94956" 
     capture_lex $P1153
-    .const 'Sub' $P1146 = "293_1271948667.92136" 
+    .const 'Sub' $P1146 = "293_1272816833.94956" 
     capture_lex $P1146
-    .const 'Sub' $P1139 = "291_1271948667.92136" 
+    .const 'Sub' $P1139 = "291_1272816833.94956" 
     capture_lex $P1139
-    .const 'Sub' $P1132 = "289_1271948667.92136" 
+    .const 'Sub' $P1132 = "289_1272816833.94956" 
     capture_lex $P1132
-    .const 'Sub' $P1125 = "287_1271948667.92136" 
+    .const 'Sub' $P1125 = "287_1272816833.94956" 
     capture_lex $P1125
-    .const 'Sub' $P1118 = "285_1271948667.92136" 
+    .const 'Sub' $P1118 = "285_1272816833.94956" 
     capture_lex $P1118
-    .const 'Sub' $P1111 = "283_1271948667.92136" 
+    .const 'Sub' $P1111 = "283_1272816833.94956" 
     capture_lex $P1111
-    .const 'Sub' $P1104 = "281_1271948667.92136" 
+    .const 'Sub' $P1104 = "281_1272816833.94956" 
     capture_lex $P1104
-    .const 'Sub' $P1097 = "279_1271948667.92136" 
+    .const 'Sub' $P1097 = "279_1272816833.94956" 
     capture_lex $P1097
-    .const 'Sub' $P1090 = "277_1271948667.92136" 
+    .const 'Sub' $P1090 = "277_1272816833.94956" 
     capture_lex $P1090
-    .const 'Sub' $P1083 = "275_1271948667.92136" 
+    .const 'Sub' $P1083 = "275_1272816833.94956" 
     capture_lex $P1083
-    .const 'Sub' $P1076 = "273_1271948667.92136" 
+    .const 'Sub' $P1076 = "273_1272816833.94956" 
     capture_lex $P1076
-    .const 'Sub' $P1069 = "271_1271948667.92136" 
+    .const 'Sub' $P1069 = "271_1272816833.94956" 
     capture_lex $P1069
-    .const 'Sub' $P1062 = "269_1271948667.92136" 
+    .const 'Sub' $P1062 = "269_1272816833.94956" 
     capture_lex $P1062
-    .const 'Sub' $P1055 = "267_1271948667.92136" 
+    .const 'Sub' $P1055 = "267_1272816833.94956" 
     capture_lex $P1055
-    .const 'Sub' $P1048 = "265_1271948667.92136" 
+    .const 'Sub' $P1048 = "265_1272816833.94956" 
     capture_lex $P1048
-    .const 'Sub' $P1041 = "263_1271948667.92136" 
+    .const 'Sub' $P1041 = "263_1272816833.94956" 
     capture_lex $P1041
-    .const 'Sub' $P1034 = "261_1271948667.92136" 
+    .const 'Sub' $P1034 = "261_1272816833.94956" 
     capture_lex $P1034
-    .const 'Sub' $P1027 = "259_1271948667.92136" 
+    .const 'Sub' $P1027 = "259_1272816833.94956" 
     capture_lex $P1027
-    .const 'Sub' $P1020 = "257_1271948667.92136" 
+    .const 'Sub' $P1020 = "257_1272816833.94956" 
     capture_lex $P1020
-    .const 'Sub' $P1013 = "255_1271948667.92136" 
+    .const 'Sub' $P1013 = "255_1272816833.94956" 
     capture_lex $P1013
-    .const 'Sub' $P1006 = "253_1271948667.92136" 
+    .const 'Sub' $P1006 = "253_1272816833.94956" 
     capture_lex $P1006
-    .const 'Sub' $P1000 = "251_1271948667.92136" 
+    .const 'Sub' $P1000 = "251_1272816833.94956" 
     capture_lex $P1000
-    .const 'Sub' $P993 = "249_1271948667.92136" 
+    .const 'Sub' $P993 = "249_1272816833.94956" 
     capture_lex $P993
-    .const 'Sub' $P986 = "247_1271948667.92136" 
+    .const 'Sub' $P986 = "247_1272816833.94956" 
     capture_lex $P986
-    .const 'Sub' $P979 = "245_1271948667.92136" 
+    .const 'Sub' $P979 = "245_1272816833.94956" 
     capture_lex $P979
-    .const 'Sub' $P972 = "243_1271948667.92136" 
+    .const 'Sub' $P972 = "243_1272816833.94956" 
     capture_lex $P972
-    .const 'Sub' $P965 = "241_1271948667.92136" 
+    .const 'Sub' $P965 = "241_1272816833.94956" 
     capture_lex $P965
-    .const 'Sub' $P958 = "239_1271948667.92136" 
+    .const 'Sub' $P958 = "239_1272816833.94956" 
     capture_lex $P958
-    .const 'Sub' $P951 = "237_1271948667.92136" 
+    .const 'Sub' $P951 = "237_1272816833.94956" 
     capture_lex $P951
-    .const 'Sub' $P945 = "235_1271948667.92136" 
+    .const 'Sub' $P945 = "235_1272816833.94956" 
     capture_lex $P945
-    .const 'Sub' $P939 = "233_1271948667.92136" 
+    .const 'Sub' $P939 = "233_1272816833.94956" 
     capture_lex $P939
-    .const 'Sub' $P934 = "231_1271948667.92136" 
+    .const 'Sub' $P934 = "231_1272816833.94956" 
     capture_lex $P934
-    .const 'Sub' $P928 = "229_1271948667.92136" 
+    .const 'Sub' $P928 = "229_1272816833.94956" 
     capture_lex $P928
-    .const 'Sub' $P922 = "227_1271948667.92136" 
+    .const 'Sub' $P922 = "227_1272816833.94956" 
     capture_lex $P922
-    .const 'Sub' $P917 = "225_1271948667.92136" 
+    .const 'Sub' $P917 = "225_1272816833.94956" 
     capture_lex $P917
-    .const 'Sub' $P912 = "223_1271948667.92136" 
+    .const 'Sub' $P912 = "223_1272816833.94956" 
     capture_lex $P912
-    .const 'Sub' $P905 = "221_1271948667.92136" 
+    .const 'Sub' $P905 = "221_1272816833.94956" 
     capture_lex $P905
-    .const 'Sub' $P897 = "219_1271948667.92136" 
+    .const 'Sub' $P897 = "219_1272816833.94956" 
     capture_lex $P897
-    .const 'Sub' $P892 = "217_1271948667.92136" 
+    .const 'Sub' $P892 = "217_1272816833.94956" 
     capture_lex $P892
-    .const 'Sub' $P887 = "215_1271948667.92136" 
+    .const 'Sub' $P887 = "215_1272816833.94956" 
     capture_lex $P887
-    .const 'Sub' $P882 = "213_1271948667.92136" 
+    .const 'Sub' $P882 = "213_1272816833.94956" 
     capture_lex $P882
-    .const 'Sub' $P874 = "211_1271948667.92136" 
+    .const 'Sub' $P874 = "211_1272816833.94956" 
     capture_lex $P874
-    .const 'Sub' $P866 = "209_1271948667.92136" 
+    .const 'Sub' $P866 = "209_1272816833.94956" 
     capture_lex $P866
-    .const 'Sub' $P861 = "207_1271948667.92136" 
+    .const 'Sub' $P861 = "207_1272816833.94956" 
     capture_lex $P861
-    .const 'Sub' $P856 = "205_1271948667.92136" 
+    .const 'Sub' $P856 = "205_1272816833.94956" 
     capture_lex $P856
-    .const 'Sub' $P851 = "203_1271948667.92136" 
+    .const 'Sub' $P851 = "203_1272816833.94956" 
     capture_lex $P851
-    .const 'Sub' $P845 = "201_1271948667.92136" 
+    .const 'Sub' $P845 = "201_1272816833.94956" 
     capture_lex $P845
-    .const 'Sub' $P839 = "199_1271948667.92136" 
+    .const 'Sub' $P839 = "199_1272816833.94956" 
     capture_lex $P839
-    .const 'Sub' $P833 = "197_1271948667.92136" 
+    .const 'Sub' $P833 = "197_1272816833.94956" 
     capture_lex $P833
-    .const 'Sub' $P827 = "195_1271948667.92136" 
+    .const 'Sub' $P827 = "195_1272816833.94956" 
     capture_lex $P827
-    .const 'Sub' $P821 = "193_1271948667.92136" 
+    .const 'Sub' $P821 = "193_1272816833.94956" 
     capture_lex $P821
-    .const 'Sub' $P816 = "191_1271948667.92136" 
+    .const 'Sub' $P816 = "191_1272816833.94956" 
     capture_lex $P816
-    .const 'Sub' $P811 = "189_1271948667.92136" 
+    .const 'Sub' $P811 = "189_1272816833.94956" 
     capture_lex $P811
-    .const 'Sub' $P798 = "185_1271948667.92136" 
+    .const 'Sub' $P798 = "185_1272816833.94956" 
     capture_lex $P798
-    .const 'Sub' $P790 = "183_1271948667.92136" 
+    .const 'Sub' $P790 = "183_1272816833.94956" 
     capture_lex $P790
-    .const 'Sub' $P784 = "181_1271948667.92136" 
+    .const 'Sub' $P784 = "181_1272816833.94956" 
     capture_lex $P784
-    .const 'Sub' $P777 = "179_1271948667.92136" 
+    .const 'Sub' $P777 = "179_1272816833.94956" 
     capture_lex $P777
-    .const 'Sub' $P771 = "177_1271948667.92136" 
+    .const 'Sub' $P771 = "177_1272816833.94956" 
     capture_lex $P771
-    .const 'Sub' $P763 = "175_1271948667.92136" 
+    .const 'Sub' $P763 = "175_1272816833.94956" 
     capture_lex $P763
-    .const 'Sub' $P755 = "173_1271948667.92136" 
+    .const 'Sub' $P755 = "173_1272816833.94956" 
     capture_lex $P755
-    .const 'Sub' $P749 = "171_1271948667.92136" 
+    .const 'Sub' $P749 = "171_1272816833.94956" 
     capture_lex $P749
-    .const 'Sub' $P743 = "169_1271948667.92136" 
+    .const 'Sub' $P743 = "169_1272816833.94956" 
     capture_lex $P743
-    .const 'Sub' $P728 = "165_1271948667.92136" 
+    .const 'Sub' $P728 = "165_1272816833.94956" 
     capture_lex $P728
-    .const 'Sub' $P691 = "163_1271948667.92136" 
+    .const 'Sub' $P691 = "163_1272816833.94956" 
     capture_lex $P691
-    .const 'Sub' $P683 = "161_1271948667.92136" 
+    .const 'Sub' $P683 = "161_1272816833.94956" 
     capture_lex $P683
-    .const 'Sub' $P677 = "159_1271948667.92136" 
+    .const 'Sub' $P677 = "159_1272816833.94956" 
     capture_lex $P677
-    .const 'Sub' $P667 = "157_1271948667.92136" 
+    .const 'Sub' $P667 = "157_1272816833.94956" 
     capture_lex $P667
-    .const 'Sub' $P652 = "155_1271948667.92136" 
+    .const 'Sub' $P652 = "155_1272816833.94956" 
     capture_lex $P652
-    .const 'Sub' $P643 = "153_1271948667.92136" 
+    .const 'Sub' $P643 = "153_1272816833.94956" 
     capture_lex $P643
-    .const 'Sub' $P624 = "151_1271948667.92136" 
+    .const 'Sub' $P624 = "151_1272816833.94956" 
     capture_lex $P624
-    .const 'Sub' $P600 = "149_1271948667.92136" 
+    .const 'Sub' $P600 = "149_1272816833.94956" 
     capture_lex $P600
-    .const 'Sub' $P593 = "147_1271948667.92136" 
+    .const 'Sub' $P593 = "147_1272816833.94956" 
     capture_lex $P593
-    .const 'Sub' $P586 = "145_1271948667.92136" 
+    .const 'Sub' $P586 = "145_1272816833.94956" 
     capture_lex $P586
-    .const 'Sub' $P576 = "141_1271948667.92136" 
+    .const 'Sub' $P576 = "141_1272816833.94956" 
     capture_lex $P576
-    .const 'Sub' $P565 = "139_1271948667.92136" 
+    .const 'Sub' $P565 = "139_1272816833.94956" 
     capture_lex $P565
-    .const 'Sub' $P558 = "137_1271948667.92136" 
+    .const 'Sub' $P558 = "137_1272816833.94956" 
     capture_lex $P558
-    .const 'Sub' $P551 = "135_1271948667.92136" 
+    .const 'Sub' $P551 = "135_1272816833.94956" 
     capture_lex $P551
-    .const 'Sub' $P544 = "133_1271948667.92136" 
+    .const 'Sub' $P544 = "133_1272816833.94956" 
     capture_lex $P544
-    .const 'Sub' $P517 = "129_1271948667.92136" 
+    .const 'Sub' $P517 = "129_1272816833.94956" 
     capture_lex $P517
-    .const 'Sub' $P508 = "127_1271948667.92136" 
+    .const 'Sub' $P508 = "127_1272816833.94956" 
     capture_lex $P508
-    .const 'Sub' $P501 = "125_1271948667.92136" 
+    .const 'Sub' $P501 = "125_1272816833.94956" 
     capture_lex $P501
-    .const 'Sub' $P492 = "121_1271948667.92136" 
+    .const 'Sub' $P492 = "121_1272816833.94956" 
     capture_lex $P492
-    .const 'Sub' $P487 = "119_1271948667.92136" 
+    .const 'Sub' $P487 = "119_1272816833.94956" 
     capture_lex $P487
-    .const 'Sub' $P475 = "117_1271948667.92136" 
+    .const 'Sub' $P475 = "117_1272816833.94956" 
     capture_lex $P475
-    .const 'Sub' $P463 = "115_1271948667.92136" 
+    .const 'Sub' $P463 = "115_1272816833.94956" 
     capture_lex $P463
-    .const 'Sub' $P455 = "113_1271948667.92136" 
+    .const 'Sub' $P455 = "113_1272816833.94956" 
     capture_lex $P455
-    .const 'Sub' $P450 = "111_1271948667.92136" 
+    .const 'Sub' $P450 = "111_1272816833.94956" 
     capture_lex $P450
-    .const 'Sub' $P444 = "109_1271948667.92136" 
+    .const 'Sub' $P444 = "109_1272816833.94956" 
     capture_lex $P444
-    .const 'Sub' $P438 = "107_1271948667.92136" 
+    .const 'Sub' $P438 = "107_1272816833.94956" 
     capture_lex $P438
-    .const 'Sub' $P432 = "105_1271948667.92136" 
+    .const 'Sub' $P432 = "105_1272816833.94956" 
     capture_lex $P432
-    .const 'Sub' $P426 = "103_1271948667.92136" 
+    .const 'Sub' $P426 = "103_1272816833.94956" 
     capture_lex $P426
-    .const 'Sub' $P420 = "101_1271948667.92136" 
+    .const 'Sub' $P420 = "101_1272816833.94956" 
     capture_lex $P420
-    .const 'Sub' $P414 = "99_1271948667.92136" 
+    .const 'Sub' $P414 = "99_1272816833.94956" 
     capture_lex $P414
-    .const 'Sub' $P408 = "97_1271948667.92136" 
+    .const 'Sub' $P408 = "97_1272816833.94956" 
     capture_lex $P408
-    .const 'Sub' $P402 = "95_1271948667.92136" 
+    .const 'Sub' $P402 = "95_1272816833.94956" 
     capture_lex $P402
-    .const 'Sub' $P394 = "93_1271948667.92136" 
+    .const 'Sub' $P394 = "93_1272816833.94956" 
     capture_lex $P394
-    .const 'Sub' $P386 = "91_1271948667.92136" 
+    .const 'Sub' $P386 = "91_1272816833.94956" 
     capture_lex $P386
-    .const 'Sub' $P374 = "87_1271948667.92136" 
+    .const 'Sub' $P374 = "87_1272816833.94956" 
     capture_lex $P374
-    .const 'Sub' $P366 = "85_1271948667.92136" 
+    .const 'Sub' $P366 = "85_1272816833.94956" 
     capture_lex $P366
-    .const 'Sub' $P356 = "81_1271948667.92136" 
+    .const 'Sub' $P356 = "81_1272816833.94956" 
     capture_lex $P356
-    .const 'Sub' $P349 = "79_1271948667.92136" 
+    .const 'Sub' $P349 = "79_1272816833.94956" 
     capture_lex $P349
-    .const 'Sub' $P342 = "77_1271948667.92136" 
+    .const 'Sub' $P342 = "77_1272816833.94956" 
     capture_lex $P342
-    .const 'Sub' $P330 = "73_1271948667.92136" 
+    .const 'Sub' $P330 = "73_1272816833.94956" 
     capture_lex $P330
-    .const 'Sub' $P322 = "71_1271948667.92136" 
+    .const 'Sub' $P322 = "71_1272816833.94956" 
     capture_lex $P322
-    .const 'Sub' $P314 = "69_1271948667.92136" 
+    .const 'Sub' $P314 = "69_1272816833.94956" 
     capture_lex $P314
-    .const 'Sub' $P294 = "67_1271948667.92136" 
+    .const 'Sub' $P294 = "67_1272816833.94956" 
     capture_lex $P294
-    .const 'Sub' $P285 = "65_1271948667.92136" 
+    .const 'Sub' $P285 = "65_1272816833.94956" 
     capture_lex $P285
-    .const 'Sub' $P267 = "62_1271948667.92136" 
+    .const 'Sub' $P267 = "62_1272816833.94956" 
     capture_lex $P267
-    .const 'Sub' $P247 = "60_1271948667.92136" 
+    .const 'Sub' $P247 = "60_1272816833.94956" 
     capture_lex $P247
-    .const 'Sub' $P238 = "56_1271948667.92136" 
+    .const 'Sub' $P238 = "56_1272816833.94956" 
     capture_lex $P238
-    .const 'Sub' $P233 = "54_1271948667.92136" 
+    .const 'Sub' $P233 = "54_1272816833.94956" 
     capture_lex $P233
-    .const 'Sub' $P224 = "50_1271948667.92136" 
+    .const 'Sub' $P224 = "50_1272816833.94956" 
     capture_lex $P224
-    .const 'Sub' $P219 = "48_1271948667.92136" 
+    .const 'Sub' $P219 = "48_1272816833.94956" 
     capture_lex $P219
-    .const 'Sub' $P211 = "46_1271948667.92136" 
+    .const 'Sub' $P211 = "46_1272816833.94956" 
     capture_lex $P211
-    .const 'Sub' $P204 = "44_1271948667.92136" 
+    .const 'Sub' $P204 = "44_1272816833.94956" 
     capture_lex $P204
-    .const 'Sub' $P198 = "42_1271948667.92136" 
+    .const 'Sub' $P198 = "42_1272816833.94956" 
     capture_lex $P198
-    .const 'Sub' $P190 = "40_1271948667.92136" 
+    .const 'Sub' $P190 = "40_1272816833.94956" 
     capture_lex $P190
-    .const 'Sub' $P184 = "38_1271948667.92136" 
+    .const 'Sub' $P184 = "38_1272816833.94956" 
     capture_lex $P184
-    .const 'Sub' $P178 = "36_1271948667.92136" 
+    .const 'Sub' $P178 = "36_1272816833.94956" 
     capture_lex $P178
-    .const 'Sub' $P162 = "33_1271948667.92136" 
+    .const 'Sub' $P162 = "33_1272816833.94956" 
     capture_lex $P162
-    .const 'Sub' $P149 = "31_1271948667.92136" 
+    .const 'Sub' $P149 = "31_1272816833.94956" 
     capture_lex $P149
-    .const 'Sub' $P142 = "29_1271948667.92136" 
+    .const 'Sub' $P142 = "29_1272816833.94956" 
     capture_lex $P142
-    .const 'Sub' $P96 = "26_1271948667.92136" 
+    .const 'Sub' $P96 = "26_1272816833.94956" 
     capture_lex $P96
-    .const 'Sub' $P78 = "23_1271948667.92136" 
+    .const 'Sub' $P78 = "23_1272816833.94956" 
     capture_lex $P78
-    .const 'Sub' $P68 = "21_1271948667.92136" 
+    .const 'Sub' $P68 = "21_1272816833.94956" 
     capture_lex $P68
-    .const 'Sub' $P54 = "19_1271948667.92136" 
+    .const 'Sub' $P54 = "19_1272816833.94956" 
     capture_lex $P54
-    .const 'Sub' $P46 = "17_1271948667.92136" 
+    .const 'Sub' $P46 = "17_1272816833.94956" 
     capture_lex $P46
-    .const 'Sub' $P39 = "15_1271948667.92136" 
+    .const 'Sub' $P39 = "15_1272816833.94956" 
     capture_lex $P39
-    .const 'Sub' $P33 = "13_1271948667.92136" 
+    .const 'Sub' $P33 = "13_1272816833.94956" 
     capture_lex $P33
-    .const 'Sub' $P15 = "12_1271948667.92136" 
+    .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_1271948667.92136")
+.sub "" :load :init :subid("post334") :outer("11_1272816833.94956")
 .annotate "line", 4
     get_hll_global $P14, ["NQP";"Grammar"], "_block13" 
     .local pmc block
@@ -397,11 +397,11 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "TOP"  :subid("12_1271948667.92136") :method :outer("11_1271948667.92136")
+.sub "TOP"  :subid("12_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     new $P17, 'ExceptionHandler'
     set_addr $P17, control_16
-    $P17."handle_types"(58)
+    $P17."handle_types"(57)
     push_eh $P17
     .lex "self", self
 .annotate "line", 5
@@ -480,7 +480,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "identifier"  :subid("13_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.sub "unv"  :subid("23_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
-    .const 'Sub' $P86 = "25_1271948667.92136" 
+    .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_1271948667.92136" 
+    .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_1271948667.92136") :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_1271948667.92136") :method :outer("23_1271948667.92136")
+.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_1271948667.92136") :method :outer("11_1271948667.92136")
+.sub "pod_comment"  :subid("26_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
-    .const 'Sub' $P133 = "28_1271948667.92136" 
+    .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_1271948667.92136" 
+    .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_1271948667.92136") :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_1271948667.92136") :method :outer("26_1271948667.92136")
+.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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.sub "statement"  :subid("33_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
-    .const 'Sub' $P168 = "35_1271948667.92136" 
+    .const 'Sub' $P168 = "35_1272816833.94956" 
     capture_lex $P168
     .local string rx163_tgt
     .local int rx163_pos
@@ -2075,7 +2075,7 @@
     .local pmc rx163_cur
     (rx163_cur, rx163_pos, rx163_tgt) = self."!cursor_start"()
     rx163_cur."!cursor_debug"("START ", "statement")
-    rx163_cur."!cursor_caparray"("statement_mod_cond", "statement_mod_loop")
+    rx163_cur."!cursor_caparray"("statement_mod_loop", "statement_mod_cond")
     .lex unicode:"$\x{a2}", rx163_cur
     .local pmc match
     .lex "$/", match
@@ -2100,7 +2100,7 @@
 .annotate "line", 93
   # rx subrule "before" subtype=zerowidth negate=1
     rx163_cur."!cursor_pos"(rx163_pos)
-    .const 'Sub' $P168 = "35_1271948667.92136" 
+    .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_1271948667.92136") :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_1271948667.92136") :method :outer("33_1271948667.92136")
+.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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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
@@ -3164,7 +3164,7 @@
     .local pmc rx248_cur
     (rx248_cur, rx248_pos, rx248_tgt) = self."!cursor_start"()
     rx248_cur."!cursor_debug"("START ", "statement_control:sym<if>")
-    rx248_cur."!cursor_caparray"("else", "xblock")
+    rx248_cur."!cursor_caparray"("xblock", "else")
     .lex unicode:"$\x{a2}", rx248_cur
     .local pmc match
     .lex "$/", match
@@ -3348,7 +3348,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<if>"  :subid("61_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.sub "statement_control:sym<unless>"  :subid("62_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
-    .const 'Sub' $P278 = "64_1271948667.92136" 
+    .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_1271948667.92136" 
+    .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_1271948667.92136") :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_1271948667.92136") :method :outer("62_1271948667.92136")
+.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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.sub "routine_def"  :subid("149_1272816833.94956") :method :outer("11_1272816833.94956")
 .annotate "line", 4
     .local string rx601_tgt
     .local int rx601_pos
@@ -7218,7 +7218,7 @@
     .local pmc rx601_cur
     (rx601_cur, rx601_pos, rx601_tgt) = self."!cursor_start"()
     rx601_cur."!cursor_debug"("START ", "routine_def")
-    rx601_cur."!cursor_caparray"("deflongname", "sigil")
+    rx601_cur."!cursor_caparray"("sigil", "deflongname")
     .lex unicode:"$\x{a2}", rx601_cur
     .local pmc match
     .lex "$/", match
@@ -7415,7 +7415,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_def"  :subid("150_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("11_1271948667.92136")
+.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_1271948667.92136") :method
+.sub "!PREFIX__prefix:sym<make>"  :subid("318_1272816833.94956") :method
 .annotate "line", 422
     new $P1231, "ResizablePMCArray"
     push $P1231, "make"
@@ -15198,12 +15222,12 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "smartmatch"  :subid("319_1271948667.92136") :method :outer("11_1271948667.92136")
+.sub "smartmatch"  :subid("319_1272816833.94956") :method :outer("11_1272816833.94956")
     .param pmc param_1237
 .annotate "line", 530
     new $P1236, 'ExceptionHandler'
     set_addr $P1236, control_1235
-    $P1236."handle_types"(58)
+    $P1236."handle_types"(57)
     push_eh $P1236
     .lex "self", self
     .lex "$/", param_1237
@@ -15251,28 +15275,28 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1247"  :subid("320_1271948667.92136") :outer("11_1271948667.92136")
+.sub "_block1247"  :subid("320_1272816833.94956") :outer("11_1272816833.94956")
 .annotate "line", 536
-    .const 'Sub' $P1281 = "331_1271948667.92136" 
+    .const 'Sub' $P1281 = "331_1272816833.94956" 
     capture_lex $P1281
-    .const 'Sub' $P1268 = "328_1271948667.92136" 
+    .const 'Sub' $P1268 = "328_1272816833.94956" 
     capture_lex $P1268
-    .const 'Sub' $P1263 = "326_1271948667.92136" 
+    .const 'Sub' $P1263 = "326_1272816833.94956" 
     capture_lex $P1263
-    .const 'Sub' $P1258 = "324_1271948667.92136" 
+    .const 'Sub' $P1258 = "324_1272816833.94956" 
     capture_lex $P1258
-    .const 'Sub' $P1249 = "321_1271948667.92136" 
+    .const 'Sub' $P1249 = "321_1272816833.94956" 
     capture_lex $P1249
-    .const 'Sub' $P1281 = "331_1271948667.92136" 
+    .const 'Sub' $P1281 = "331_1272816833.94956" 
     capture_lex $P1281
     .return ($P1281)
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "metachar:sym<:my>"  :subid("321_1271948667.92136") :method :outer("320_1271948667.92136")
+.sub "metachar:sym<:my>"  :subid("321_1272816833.94956") :method :outer("320_1272816833.94956")
 .annotate "line", 536
-    .const 'Sub' $P1255 = "323_1271948667.92136" 
+    .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_1271948667.92136" 
+    .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_1271948667.92136") :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_1271948667.92136") :method :outer("321_1271948667.92136")
+.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_1271948667.92136") :method :outer("320_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("320_1271948667.92136")
+.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_1271948667.92136") :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_1271948667.92136") :method :outer("320_1271948667.92136")
+.sub "assertion:sym<name>"  :subid("328_1272816833.94956") :method :outer("320_1272816833.94956")
 .annotate "line", 536
-    .const 'Sub' $P1277 = "330_1271948667.92136" 
+    .const 'Sub' $P1277 = "330_1272816833.94956" 
     capture_lex $P1277
     .local string rx1269_tgt
     .local int rx1269_pos
@@ -15636,7 +15660,7 @@
 .annotate "line", 552
   # rx subrule "before" subtype=zerowidth negate=
     rx1269_cur."!cursor_pos"(rx1269_pos)
-    .const 'Sub' $P1277 = "330_1271948667.92136" 
+    .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_1271948667.92136") :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_1271948667.92136") :method :outer("328_1271948667.92136")
+.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_1271948667.92136") :method :outer("320_1271948667.92136")
+.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_1271948667.92136") :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_1271948680.36754")
+.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_1271948680.36754")
+.sub "" :load :init :subid("post127") :outer("10_1272816841.80681")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1271948680.36754" 
+    .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_1271948680.36754") :outer("10_1271948680.36754")
+.sub "_block13"  :subid("11_1272816841.80681") :outer("10_1272816841.80681")
 .annotate "line", 3
-    .const 'Sub' $P2171 = "126_1271948680.36754" 
+    .const 'Sub' $P2171 = "126_1272816841.80681" 
     capture_lex $P2171
     get_hll_global $P2107, ["NQP";"RegexActions"], "_block2106" 
     capture_lex $P2107
-    .const 'Sub' $P2096 = "120_1271948680.36754" 
+    .const 'Sub' $P2096 = "120_1272816841.80681" 
     capture_lex $P2096
-    .const 'Sub' $P2084 = "119_1271948680.36754" 
+    .const 'Sub' $P2084 = "119_1272816841.80681" 
     capture_lex $P2084
-    .const 'Sub' $P2074 = "118_1271948680.36754" 
+    .const 'Sub' $P2074 = "118_1272816841.80681" 
     capture_lex $P2074
-    .const 'Sub' $P2064 = "117_1271948680.36754" 
+    .const 'Sub' $P2064 = "117_1272816841.80681" 
     capture_lex $P2064
-    .const 'Sub' $P2054 = "116_1271948680.36754" 
+    .const 'Sub' $P2054 = "116_1272816841.80681" 
     capture_lex $P2054
-    .const 'Sub' $P2047 = "115_1271948680.36754" 
+    .const 'Sub' $P2047 = "115_1272816841.80681" 
     capture_lex $P2047
-    .const 'Sub' $P2033 = "114_1271948680.36754" 
+    .const 'Sub' $P2033 = "114_1272816841.80681" 
     capture_lex $P2033
-    .const 'Sub' $P2023 = "113_1271948680.36754" 
+    .const 'Sub' $P2023 = "113_1272816841.80681" 
     capture_lex $P2023
-    .const 'Sub' $P1986 = "112_1271948680.36754" 
+    .const 'Sub' $P1986 = "112_1272816841.80681" 
     capture_lex $P1986
-    .const 'Sub' $P1972 = "111_1271948680.36754" 
+    .const 'Sub' $P1972 = "111_1272816841.80681" 
     capture_lex $P1972
-    .const 'Sub' $P1962 = "110_1271948680.36754" 
+    .const 'Sub' $P1962 = "110_1272816841.80681" 
     capture_lex $P1962
-    .const 'Sub' $P1952 = "109_1271948680.36754" 
+    .const 'Sub' $P1952 = "109_1272816841.80681" 
     capture_lex $P1952
-    .const 'Sub' $P1942 = "108_1271948680.36754" 
+    .const 'Sub' $P1942 = "108_1272816841.80681" 
     capture_lex $P1942
-    .const 'Sub' $P1932 = "107_1271948680.36754" 
+    .const 'Sub' $P1932 = "107_1272816841.80681" 
     capture_lex $P1932
-    .const 'Sub' $P1922 = "106_1271948680.36754" 
+    .const 'Sub' $P1922 = "106_1272816841.80681" 
     capture_lex $P1922
-    .const 'Sub' $P1894 = "105_1271948680.36754" 
+    .const 'Sub' $P1894 = "105_1272816841.80681" 
     capture_lex $P1894
-    .const 'Sub' $P1877 = "104_1271948680.36754" 
+    .const 'Sub' $P1877 = "104_1272816841.80681" 
     capture_lex $P1877
-    .const 'Sub' $P1867 = "103_1271948680.36754" 
+    .const 'Sub' $P1867 = "103_1272816841.80681" 
     capture_lex $P1867
-    .const 'Sub' $P1854 = "102_1271948680.36754" 
+    .const 'Sub' $P1854 = "102_1272816841.80681" 
     capture_lex $P1854
-    .const 'Sub' $P1841 = "101_1271948680.36754" 
+    .const 'Sub' $P1841 = "101_1272816841.80681" 
     capture_lex $P1841
-    .const 'Sub' $P1828 = "100_1271948680.36754" 
+    .const 'Sub' $P1828 = "100_1272816841.80681" 
     capture_lex $P1828
-    .const 'Sub' $P1818 = "99_1271948680.36754" 
+    .const 'Sub' $P1818 = "99_1272816841.80681" 
     capture_lex $P1818
-    .const 'Sub' $P1789 = "98_1271948680.36754" 
+    .const 'Sub' $P1789 = "98_1272816841.80681" 
     capture_lex $P1789
-    .const 'Sub' $P1769 = "97_1271948680.36754" 
+    .const 'Sub' $P1769 = "97_1272816841.80681" 
     capture_lex $P1769
-    .const 'Sub' $P1759 = "96_1271948680.36754" 
+    .const 'Sub' $P1759 = "96_1272816841.80681" 
     capture_lex $P1759
-    .const 'Sub' $P1749 = "95_1271948680.36754" 
+    .const 'Sub' $P1749 = "95_1272816841.80681" 
     capture_lex $P1749
-    .const 'Sub' $P1722 = "94_1271948680.36754" 
+    .const 'Sub' $P1722 = "94_1272816841.80681" 
     capture_lex $P1722
-    .const 'Sub' $P1704 = "93_1271948680.36754" 
+    .const 'Sub' $P1704 = "93_1272816841.80681" 
     capture_lex $P1704
-    .const 'Sub' $P1694 = "92_1271948680.36754" 
+    .const 'Sub' $P1694 = "92_1272816841.80681" 
     capture_lex $P1694
-    .const 'Sub' $P1610 = "89_1271948680.36754" 
+    .const 'Sub' $P1610 = "89_1272816841.80681" 
     capture_lex $P1610
-    .const 'Sub' $P1600 = "88_1271948680.36754" 
+    .const 'Sub' $P1600 = "88_1272816841.80681" 
     capture_lex $P1600
-    .const 'Sub' $P1571 = "87_1271948680.36754" 
+    .const 'Sub' $P1571 = "87_1272816841.80681" 
     capture_lex $P1571
-    .const 'Sub' $P1529 = "86_1271948680.36754" 
+    .const 'Sub' $P1529 = "86_1272816841.80681" 
     capture_lex $P1529
-    .const 'Sub' $P1513 = "85_1271948680.36754" 
+    .const 'Sub' $P1513 = "85_1272816841.80681" 
     capture_lex $P1513
-    .const 'Sub' $P1504 = "84_1271948680.36754" 
+    .const 'Sub' $P1504 = "84_1272816841.80681" 
     capture_lex $P1504
-    .const 'Sub' $P1472 = "83_1271948680.36754" 
+    .const 'Sub' $P1472 = "83_1272816841.80681" 
     capture_lex $P1472
-    .const 'Sub' $P1373 = "80_1271948680.36754" 
+    .const 'Sub' $P1373 = "80_1272816841.80681" 
     capture_lex $P1373
-    .const 'Sub' $P1356 = "79_1271948680.36754" 
+    .const 'Sub' $P1356 = "79_1272816841.80681" 
     capture_lex $P1356
-    .const 'Sub' $P1336 = "78_1271948680.36754" 
+    .const 'Sub' $P1336 = "78_1272816841.80681" 
     capture_lex $P1336
-    .const 'Sub' $P1252 = "77_1271948680.36754" 
+    .const 'Sub' $P1252 = "77_1272816841.80681" 
     capture_lex $P1252
-    .const 'Sub' $P1228 = "75_1271948680.36754" 
+    .const 'Sub' $P1228 = "75_1272816841.80681" 
     capture_lex $P1228
-    .const 'Sub' $P1194 = "73_1271948680.36754" 
+    .const 'Sub' $P1194 = "73_1272816841.80681" 
     capture_lex $P1194
-    .const 'Sub' $P1144 = "71_1271948680.36754" 
+    .const 'Sub' $P1144 = "71_1272816841.80681" 
     capture_lex $P1144
-    .const 'Sub' $P1134 = "70_1271948680.36754" 
+    .const 'Sub' $P1134 = "70_1272816841.80681" 
     capture_lex $P1134
-    .const 'Sub' $P1124 = "69_1271948680.36754" 
+    .const 'Sub' $P1124 = "69_1272816841.80681" 
     capture_lex $P1124
-    .const 'Sub' $P1053 = "67_1271948680.36754" 
+    .const 'Sub' $P1053 = "67_1272816841.80681" 
     capture_lex $P1053
-    .const 'Sub' $P1036 = "66_1271948680.36754" 
+    .const 'Sub' $P1036 = "66_1272816841.80681" 
     capture_lex $P1036
-    .const 'Sub' $P1026 = "65_1271948680.36754" 
+    .const 'Sub' $P1026 = "65_1272816841.80681" 
     capture_lex $P1026
-    .const 'Sub' $P1016 = "64_1271948680.36754" 
+    .const 'Sub' $P1016 = "64_1272816841.80681" 
     capture_lex $P1016
-    .const 'Sub' $P1006 = "63_1271948680.36754" 
+    .const 'Sub' $P1006 = "63_1272816841.80681" 
     capture_lex $P1006
-    .const 'Sub' $P982 = "62_1271948680.36754" 
+    .const 'Sub' $P982 = "62_1272816841.80681" 
     capture_lex $P982
-    .const 'Sub' $P929 = "61_1271948680.36754" 
+    .const 'Sub' $P929 = "61_1272816841.80681" 
     capture_lex $P929
-    .const 'Sub' $P919 = "60_1271948680.36754" 
+    .const 'Sub' $P919 = "60_1272816841.80681" 
     capture_lex $P919
-    .const 'Sub' $P830 = "58_1271948680.36754" 
+    .const 'Sub' $P830 = "58_1272816841.80681" 
     capture_lex $P830
-    .const 'Sub' $P804 = "57_1271948680.36754" 
+    .const 'Sub' $P804 = "57_1272816841.80681" 
     capture_lex $P804
-    .const 'Sub' $P788 = "56_1271948680.36754" 
+    .const 'Sub' $P788 = "56_1272816841.80681" 
     capture_lex $P788
-    .const 'Sub' $P778 = "55_1271948680.36754" 
+    .const 'Sub' $P778 = "55_1272816841.80681" 
     capture_lex $P778
-    .const 'Sub' $P768 = "54_1271948680.36754" 
+    .const 'Sub' $P768 = "54_1272816841.80681" 
     capture_lex $P768
-    .const 'Sub' $P758 = "53_1271948680.36754" 
+    .const 'Sub' $P758 = "53_1272816841.80681" 
     capture_lex $P758
-    .const 'Sub' $P748 = "52_1271948680.36754" 
+    .const 'Sub' $P748 = "52_1272816841.80681" 
     capture_lex $P748
-    .const 'Sub' $P738 = "51_1271948680.36754" 
+    .const 'Sub' $P738 = "51_1272816841.80681" 
     capture_lex $P738
-    .const 'Sub' $P728 = "50_1271948680.36754" 
+    .const 'Sub' $P728 = "50_1272816841.80681" 
     capture_lex $P728
-    .const 'Sub' $P718 = "49_1271948680.36754" 
+    .const 'Sub' $P718 = "49_1272816841.80681" 
     capture_lex $P718
-    .const 'Sub' $P708 = "48_1271948680.36754" 
+    .const 'Sub' $P708 = "48_1272816841.80681" 
     capture_lex $P708
-    .const 'Sub' $P698 = "47_1271948680.36754" 
+    .const 'Sub' $P698 = "47_1272816841.80681" 
     capture_lex $P698
-    .const 'Sub' $P688 = "46_1271948680.36754" 
+    .const 'Sub' $P688 = "46_1272816841.80681" 
     capture_lex $P688
-    .const 'Sub' $P678 = "45_1271948680.36754" 
+    .const 'Sub' $P678 = "45_1272816841.80681" 
     capture_lex $P678
-    .const 'Sub' $P668 = "44_1271948680.36754" 
+    .const 'Sub' $P668 = "44_1272816841.80681" 
     capture_lex $P668
-    .const 'Sub' $P658 = "43_1271948680.36754" 
+    .const 'Sub' $P658 = "43_1272816841.80681" 
     capture_lex $P658
-    .const 'Sub' $P640 = "42_1271948680.36754" 
+    .const 'Sub' $P640 = "42_1272816841.80681" 
     capture_lex $P640
-    .const 'Sub' $P605 = "41_1271948680.36754" 
+    .const 'Sub' $P605 = "41_1272816841.80681" 
     capture_lex $P605
-    .const 'Sub' $P589 = "40_1271948680.36754" 
+    .const 'Sub' $P589 = "40_1272816841.80681" 
     capture_lex $P589
-    .const 'Sub' $P568 = "39_1271948680.36754" 
+    .const 'Sub' $P568 = "39_1272816841.80681" 
     capture_lex $P568
-    .const 'Sub' $P548 = "38_1271948680.36754" 
+    .const 'Sub' $P548 = "38_1272816841.80681" 
     capture_lex $P548
-    .const 'Sub' $P535 = "37_1271948680.36754" 
+    .const 'Sub' $P535 = "37_1272816841.80681" 
     capture_lex $P535
-    .const 'Sub' $P509 = "36_1271948680.36754" 
+    .const 'Sub' $P509 = "36_1272816841.80681" 
     capture_lex $P509
-    .const 'Sub' $P473 = "35_1271948680.36754" 
+    .const 'Sub' $P473 = "35_1272816841.80681" 
     capture_lex $P473
-    .const 'Sub' $P456 = "34_1271948680.36754" 
+    .const 'Sub' $P456 = "34_1272816841.80681" 
     capture_lex $P456
-    .const 'Sub' $P442 = "33_1271948680.36754" 
+    .const 'Sub' $P442 = "33_1272816841.80681" 
     capture_lex $P442
-    .const 'Sub' $P389 = "31_1271948680.36754" 
+    .const 'Sub' $P389 = "31_1272816841.80681" 
     capture_lex $P389
-    .const 'Sub' $P376 = "30_1271948680.36754" 
+    .const 'Sub' $P376 = "30_1272816841.80681" 
     capture_lex $P376
-    .const 'Sub' $P357 = "29_1271948680.36754" 
+    .const 'Sub' $P357 = "29_1272816841.80681" 
     capture_lex $P357
-    .const 'Sub' $P347 = "28_1271948680.36754" 
+    .const 'Sub' $P347 = "28_1272816841.80681" 
     capture_lex $P347
-    .const 'Sub' $P337 = "27_1271948680.36754" 
+    .const 'Sub' $P337 = "27_1272816841.80681" 
     capture_lex $P337
-    .const 'Sub' $P321 = "26_1271948680.36754" 
+    .const 'Sub' $P321 = "26_1272816841.80681" 
     capture_lex $P321
-    .const 'Sub' $P261 = "24_1271948680.36754" 
+    .const 'Sub' $P261 = "24_1272816841.80681" 
     capture_lex $P261
-    .const 'Sub' $P212 = "22_1271948680.36754" 
+    .const 'Sub' $P212 = "22_1272816841.80681" 
     capture_lex $P212
-    .const 'Sub' $P193 = "21_1271948680.36754" 
+    .const 'Sub' $P193 = "21_1272816841.80681" 
     capture_lex $P193
-    .const 'Sub' $P160 = "20_1271948680.36754" 
+    .const 'Sub' $P160 = "20_1272816841.80681" 
     capture_lex $P160
-    .const 'Sub' $P150 = "19_1271948680.36754" 
+    .const 'Sub' $P150 = "19_1272816841.80681" 
     capture_lex $P150
-    .const 'Sub' $P96 = "18_1271948680.36754" 
+    .const 'Sub' $P96 = "18_1272816841.80681" 
     capture_lex $P96
-    .const 'Sub' $P81 = "17_1271948680.36754" 
+    .const 'Sub' $P81 = "17_1272816841.80681" 
     capture_lex $P81
-    .const 'Sub' $P61 = "16_1271948680.36754" 
+    .const 'Sub' $P61 = "16_1272816841.80681" 
     capture_lex $P61
-    .const 'Sub' $P26 = "13_1271948680.36754" 
+    .const 'Sub' $P26 = "13_1272816841.80681" 
     capture_lex $P26
-    .const 'Sub' $P16 = "12_1271948680.36754" 
+    .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_1271948680.36754" 
+    .const 'Sub' $P16 = "12_1272816841.80681" 
     capture_lex $P16
     .lex "xblock_immediate", $P16
 .annotate "line", 14
-    .const 'Sub' $P26 = "13_1271948680.36754" 
+    .const 'Sub' $P26 = "13_1272816841.80681" 
     capture_lex $P26
     .lex "block_immediate", $P26
 .annotate "line", 24
-    .const 'Sub' $P61 = "16_1271948680.36754" 
+    .const 'Sub' $P61 = "16_1272816841.80681" 
     capture_lex $P61
     .lex "vivitype", $P61
 .annotate "line", 43
-    .const 'Sub' $P81 = "17_1271948680.36754" 
+    .const 'Sub' $P81 = "17_1272816841.80681" 
     capture_lex $P81
     .lex "colonpair_str", $P81
 .annotate "line", 190
-    .const 'Sub' $P96 = "18_1271948680.36754" 
+    .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_1271948680.36754")
+.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_1271948680.36754" 
+    .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_1271948680.36754") :outer("11_1271948680.36754")
+.sub "_block2170"  :anon :subid("126_1272816841.80681") :outer("11_1272816841.80681")
 .annotate "line", 6
     get_global $P2172, "@BLOCK"
     unless_null $P2172, vivify_129
@@ -16174,12 +16198,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "xblock_immediate"  :subid("12_1271948680.36754") :outer("11_1271948680.36754")
+.sub "xblock_immediate"  :subid("12_1272816841.80681") :outer("11_1272816841.80681")
     .param pmc param_19
 .annotate "line", 9
     new $P18, 'ExceptionHandler'
     set_addr $P18, control_17
-    $P18."handle_types"(58)
+    $P18."handle_types"(57)
     push_eh $P18
     .lex "$xblock", param_19
 .annotate "line", 10
@@ -16210,14 +16234,14 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "block_immediate"  :subid("13_1271948680.36754") :outer("11_1271948680.36754")
+.sub "block_immediate"  :subid("13_1272816841.80681") :outer("11_1272816841.80681")
     .param pmc param_29
 .annotate "line", 14
-    .const 'Sub' $P39 = "14_1271948680.36754" 
+    .const 'Sub' $P39 = "14_1272816841.80681" 
     capture_lex $P39
     new $P28, 'ExceptionHandler'
     set_addr $P28, control_27
-    $P28."handle_types"(58)
+    $P28."handle_types"(57)
     push_eh $P28
     .lex "$block", param_29
 .annotate "line", 15
@@ -16235,7 +16259,7 @@
     set $P32, $P37
   unless_33_end:
     if $P32, unless_31_end
-    .const 'Sub' $P39 = "14_1271948680.36754" 
+    .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_1271948680.36754") :outer("13_1271948680.36754")
+.sub "_block38"  :anon :subid("14_1272816841.80681") :outer("13_1272816841.80681")
 .annotate "line", 16
-    .const 'Sub' $P50 = "15_1271948680.36754" 
+    .const 'Sub' $P50 = "15_1272816841.80681" 
     capture_lex $P50
 .annotate "line", 17
     new $P40, "Undef"
@@ -16270,13 +16294,13 @@
     iter $P44, $P46
     new $P56, 'ExceptionHandler'
     set_addr $P56, loop55_handler
-    $P56."handle_types"(65, 67, 66)
+    $P56."handle_types"(64, 66, 65)
     push_eh $P56
   loop55_test:
     unless $P44, loop55_done
     shift $P48, $P44
   loop55_redo:
-    .const 'Sub' $P50 = "15_1271948680.36754" 
+    .const 'Sub' $P50 = "15_1272816841.80681" 
     capture_lex $P50
     $P50($P48)
   loop55_next:
@@ -16285,8 +16309,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P57, exception, 'type'
-    eq $P57, 65, loop55_next
-    eq $P57, 67, loop55_redo
+    eq $P57, 64, loop55_next
+    eq $P57, 66, loop55_redo
   loop55_done:
     pop_eh 
   for_undef_134:
@@ -16299,7 +16323,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block49"  :anon :subid("15_1271948680.36754") :outer("14_1271948680.36754")
+.sub "_block49"  :anon :subid("15_1272816841.80681") :outer("14_1272816841.80681")
     .param pmc param_51
 .annotate "line", 18
     .lex "$_", param_51
@@ -16311,12 +16335,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "vivitype"  :subid("16_1271948680.36754") :outer("11_1271948680.36754")
+.sub "vivitype"  :subid("16_1272816841.80681") :outer("11_1272816841.80681")
     .param pmc param_64
 .annotate "line", 24
     new $P63, 'ExceptionHandler'
     set_addr $P63, control_62
-    $P63."handle_types"(58)
+    $P63."handle_types"(57)
     push_eh $P63
     .lex "$sigil", param_64
 .annotate "line", 25
@@ -16359,12 +16383,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "colonpair_str"  :subid("17_1271948680.36754") :outer("11_1271948680.36754")
+.sub "colonpair_str"  :subid("17_1272816841.80681") :outer("11_1272816841.80681")
     .param pmc param_84
 .annotate "line", 43
     new $P83, 'ExceptionHandler'
     set_addr $P83, control_82
-    $P83."handle_types"(58)
+    $P83."handle_types"(57)
     push_eh $P83
     .lex "$ast", param_84
 .annotate "line", 44
@@ -16397,13 +16421,13 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "push_block_handler"  :subid("18_1271948680.36754") :outer("11_1271948680.36754")
+.sub "push_block_handler"  :subid("18_1272816841.80681") :outer("11_1272816841.80681")
     .param pmc param_99
     .param pmc param_100
 .annotate "line", 190
     new $P98, 'ExceptionHandler'
     set_addr $P98, control_97
-    $P98."handle_types"(58)
+    $P98."handle_types"(57)
     push_eh $P98
     .lex "$/", param_99
     .lex "$block", param_100
@@ -16514,12 +16538,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "TOP"  :subid("19_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "TOP"  :subid("19_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_153
 .annotate "line", 33
     new $P152, 'ExceptionHandler'
     set_addr $P152, control_151
-    $P152."handle_types"(58)
+    $P152."handle_types"(57)
     push_eh $P152
     .lex "self", self
     .lex "$/", param_153
@@ -16544,12 +16568,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "deflongname"  :subid("20_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "deflongname"  :subid("20_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_163
 .annotate "line", 35
     new $P162, 'ExceptionHandler'
     set_addr $P162, control_161
-    $P162."handle_types"(58)
+    $P162."handle_types"(57)
     push_eh $P162
     .lex "self", self
     .lex "$/", param_163
@@ -16633,12 +16657,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "comp_unit"  :subid("21_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "comp_unit"  :subid("21_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_196
 .annotate "line", 49
     new $P195, 'ExceptionHandler'
     set_addr $P195, control_194
-    $P195."handle_types"(58)
+    $P195."handle_types"(57)
     push_eh $P195
     .lex "self", self
     .lex "$/", param_196
@@ -16686,14 +16710,14 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statementlist"  :subid("22_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "statementlist"  :subid("22_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_215
 .annotate "line", 57
-    .const 'Sub' $P229 = "23_1271948680.36754" 
+    .const 'Sub' $P229 = "23_1272816841.80681" 
     capture_lex $P229
     new $P214, 'ExceptionHandler'
     set_addr $P214, control_213
-    $P214."handle_types"(58)
+    $P214."handle_types"(57)
     push_eh $P214
     .lex "self", self
     .lex "$/", param_215
@@ -16728,13 +16752,13 @@
     iter $P223, $P225
     new $P255, 'ExceptionHandler'
     set_addr $P255, loop254_handler
-    $P255."handle_types"(65, 67, 66)
+    $P255."handle_types"(64, 66, 65)
     push_eh $P255
   loop254_test:
     unless $P223, loop254_done
     shift $P227, $P223
   loop254_redo:
-    .const 'Sub' $P229 = "23_1271948680.36754" 
+    .const 'Sub' $P229 = "23_1272816841.80681" 
     capture_lex $P229
     $P229($P227)
   loop254_next:
@@ -16743,8 +16767,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P256, exception, 'type'
-    eq $P256, 65, loop254_next
-    eq $P256, 67, loop254_redo
+    eq $P256, 64, loop254_next
+    eq $P256, 66, loop254_redo
   loop254_done:
     pop_eh 
   for_undef_159:
@@ -16764,7 +16788,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block228"  :anon :subid("23_1271948680.36754") :outer("22_1271948680.36754")
+.sub "_block228"  :anon :subid("23_1272816841.80681") :outer("22_1272816841.80681")
     .param pmc param_231
 .annotate "line", 61
     new $P230, "Undef"
@@ -16824,16 +16848,16 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement"  :subid("24_1271948680.36754") :method :outer("11_1271948680.36754")
+.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_1271948680.36754" 
+    .const 'Sub' $P273 = "25_1272816841.80681" 
     capture_lex $P273
     new $P263, 'ExceptionHandler'
     set_addr $P263, control_262
-    $P263."handle_types"(58)
+    $P263."handle_types"(57)
     push_eh $P263
     .lex "self", self
     .lex "$/", param_264
@@ -16888,7 +16912,7 @@
     goto if_269_end
   if_269:
 .annotate "line", 74
-    .const 'Sub' $P273 = "25_1271948680.36754" 
+    .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_1271948680.36754") :outer("24_1271948680.36754")
+.sub "_block272"  :anon :subid("25_1272816841.80681") :outer("24_1272816841.80681")
 .annotate "line", 75
     new $P274, "Undef"
     .lex "$mc", $P274
@@ -17020,12 +17044,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "xblock"  :subid("26_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "xblock"  :subid("26_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_324
 .annotate "line", 90
     new $P323, 'ExceptionHandler'
     set_addr $P323, control_322
-    $P323."handle_types"(58)
+    $P323."handle_types"(57)
     push_eh $P323
     .lex "self", self
     .lex "$/", param_324
@@ -17064,12 +17088,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "pblock"  :subid("27_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "pblock"  :subid("27_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_340
 .annotate "line", 94
     new $P339, 'ExceptionHandler'
     set_addr $P339, control_338
-    $P339."handle_types"(58)
+    $P339."handle_types"(57)
     push_eh $P339
     .lex "self", self
     .lex "$/", param_340
@@ -17096,12 +17120,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "block"  :subid("28_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "block"  :subid("28_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_350
 .annotate "line", 98
     new $P349, 'ExceptionHandler'
     set_addr $P349, control_348
-    $P349."handle_types"(58)
+    $P349."handle_types"(57)
     push_eh $P349
     .lex "self", self
     .lex "$/", param_350
@@ -17128,12 +17152,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "blockoid"  :subid("29_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "blockoid"  :subid("29_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_360
 .annotate "line", 102
     new $P359, 'ExceptionHandler'
     set_addr $P359, control_358
-    $P359."handle_types"(58)
+    $P359."handle_types"(57)
     push_eh $P359
     .lex "self", self
     .lex "$/", param_360
@@ -17181,12 +17205,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "newpad"  :subid("30_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "newpad"  :subid("30_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_379
 .annotate "line", 110
     new $P378, 'ExceptionHandler'
     set_addr $P378, control_377
-    $P378."handle_types"(58)
+    $P378."handle_types"(57)
     push_eh $P378
     .lex "self", self
     .lex "$/", param_379
@@ -17216,14 +17240,14 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<if>"  :subid("31_1271948680.36754") :method :outer("11_1271948680.36754")
+.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_1271948680.36754" 
+    .const 'Sub' $P420 = "32_1272816841.80681" 
     capture_lex $P420
     new $P391, 'ExceptionHandler'
     set_addr $P391, control_390
-    $P391."handle_types"(58)
+    $P391."handle_types"(57)
     push_eh $P391
     .lex "self", self
     .lex "$/", param_392
@@ -17296,7 +17320,7 @@
 .annotate "line", 124
     new $P436, 'ExceptionHandler'
     set_addr $P436, loop435_handler
-    $P436."handle_types"(65, 67, 66)
+    $P436."handle_types"(64, 66, 65)
     push_eh $P436
   loop435_test:
     find_lex $P416, "$count"
@@ -17304,7 +17328,7 @@
     isgt $I418, $N417, 0.0
     unless $I418, loop435_done
   loop435_redo:
-    .const 'Sub' $P420 = "32_1271948680.36754" 
+    .const 'Sub' $P420 = "32_1272816841.80681" 
     capture_lex $P420
     $P420()
   loop435_next:
@@ -17313,8 +17337,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P437, exception, 'type'
-    eq $P437, 65, loop435_next
-    eq $P437, 67, loop435_redo
+    eq $P437, 64, loop435_next
+    eq $P437, 66, loop435_redo
   loop435_done:
     pop_eh 
 .annotate "line", 130
@@ -17332,7 +17356,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block419"  :anon :subid("32_1271948680.36754") :outer("31_1271948680.36754")
+.sub "_block419"  :anon :subid("32_1272816841.80681") :outer("31_1272816841.80681")
 .annotate "line", 126
     new $P421, "Undef"
     .lex "$else", $P421
@@ -17371,12 +17395,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<unless>"  :subid("33_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "statement_control:sym<unless>"  :subid("33_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_445
 .annotate "line", 133
     new $P444, 'ExceptionHandler'
     set_addr $P444, control_443
-    $P444."handle_types"(58)
+    $P444."handle_types"(57)
     push_eh $P444
     .lex "self", self
     .lex "$/", param_445
@@ -17412,12 +17436,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<while>"  :subid("34_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "statement_control:sym<while>"  :subid("34_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_459
 .annotate "line", 139
     new $P458, 'ExceptionHandler'
     set_addr $P458, control_457
-    $P458."handle_types"(58)
+    $P458."handle_types"(57)
     push_eh $P458
     .lex "self", self
     .lex "$/", param_459
@@ -17462,12 +17486,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<repeat>"  :subid("35_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "statement_control:sym<repeat>"  :subid("35_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_476
 .annotate "line", 145
     new $P475, 'ExceptionHandler'
     set_addr $P475, control_474
-    $P475."handle_types"(58)
+    $P475."handle_types"(57)
     push_eh $P475
     .lex "self", self
     .lex "$/", param_476
@@ -17562,12 +17586,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<for>"  :subid("36_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "statement_control:sym<for>"  :subid("36_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_512
 .annotate "line", 159
     new $P511, 'ExceptionHandler'
     set_addr $P511, control_510
-    $P511."handle_types"(58)
+    $P511."handle_types"(57)
     push_eh $P511
     .lex "self", self
     .lex "$/", param_512
@@ -17642,12 +17666,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<return>"  :subid("37_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "statement_control:sym<return>"  :subid("37_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_538
 .annotate "line", 172
     new $P537, 'ExceptionHandler'
     set_addr $P537, control_536
-    $P537."handle_types"(58)
+    $P537."handle_types"(57)
     push_eh $P537
     .lex "self", self
     .lex "$/", param_538
@@ -17677,12 +17701,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<CATCH>"  :subid("38_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "statement_control:sym<CATCH>"  :subid("38_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_551
 .annotate "line", 176
     new $P550, 'ExceptionHandler'
     set_addr $P550, control_549
-    $P550."handle_types"(58)
+    $P550."handle_types"(57)
     push_eh $P550
     .lex "self", self
     .lex "$/", param_551
@@ -17735,12 +17759,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<CONTROL>"  :subid("39_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "statement_control:sym<CONTROL>"  :subid("39_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_571
 .annotate "line", 183
     new $P570, 'ExceptionHandler'
     set_addr $P570, control_569
-    $P570."handle_types"(58)
+    $P570."handle_types"(57)
     push_eh $P570
     .lex "self", self
     .lex "$/", param_571
@@ -17793,12 +17817,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_prefix:sym<INIT>"  :subid("40_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "statement_prefix:sym<INIT>"  :subid("40_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_592
 .annotate "line", 227
     new $P591, 'ExceptionHandler'
     set_addr $P591, control_590
-    $P591."handle_types"(58)
+    $P591."handle_types"(57)
     push_eh $P591
     .lex "self", self
     .lex "$/", param_592
@@ -17839,12 +17863,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_prefix:sym<try>"  :subid("41_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "statement_prefix:sym<try>"  :subid("41_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_608
 .annotate "line", 232
     new $P607, 'ExceptionHandler'
     set_addr $P607, control_606
-    $P607."handle_types"(58)
+    $P607."handle_types"(57)
     push_eh $P607
     .lex "self", self
     .lex "$/", param_608
@@ -17916,12 +17940,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "blorst"  :subid("42_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "blorst"  :subid("42_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_643
 .annotate "line", 255
     new $P642, 'ExceptionHandler'
     set_addr $P642, control_641
-    $P642."handle_types"(58)
+    $P642."handle_types"(57)
     push_eh $P642
     .lex "self", self
     .lex "$/", param_643
@@ -17975,12 +17999,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_cond:sym<if>"  :subid("43_1271948680.36754") :method :outer("11_1271948680.36754")
+.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'
     set_addr $P660, control_659
-    $P660."handle_types"(58)
+    $P660."handle_types"(57)
     push_eh $P660
     .lex "self", self
     .lex "$/", param_661
@@ -18005,12 +18029,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_cond:sym<unless>"  :subid("44_1271948680.36754") :method :outer("11_1271948680.36754")
+.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'
     set_addr $P670, control_669
-    $P670."handle_types"(58)
+    $P670."handle_types"(57)
     push_eh $P670
     .lex "self", self
     .lex "$/", param_671
@@ -18035,12 +18059,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_loop:sym<while>"  :subid("45_1271948680.36754") :method :outer("11_1271948680.36754")
+.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'
     set_addr $P680, control_679
-    $P680."handle_types"(58)
+    $P680."handle_types"(57)
     push_eh $P680
     .lex "self", self
     .lex "$/", param_681
@@ -18065,12 +18089,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_loop:sym<until>"  :subid("46_1271948680.36754") :method :outer("11_1271948680.36754")
+.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'
     set_addr $P690, control_689
-    $P690."handle_types"(58)
+    $P690."handle_types"(57)
     push_eh $P690
     .lex "self", self
     .lex "$/", param_691
@@ -18095,12 +18119,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<fatarrow>"  :subid("47_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "term:sym<fatarrow>"  :subid("47_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_701
 .annotate "line", 271
     new $P700, 'ExceptionHandler'
     set_addr $P700, control_699
-    $P700."handle_types"(58)
+    $P700."handle_types"(57)
     push_eh $P700
     .lex "self", self
     .lex "$/", param_701
@@ -18125,12 +18149,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<colonpair>"  :subid("48_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "term:sym<colonpair>"  :subid("48_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_711
 .annotate "line", 272
     new $P710, 'ExceptionHandler'
     set_addr $P710, control_709
-    $P710."handle_types"(58)
+    $P710."handle_types"(57)
     push_eh $P710
     .lex "self", self
     .lex "$/", param_711
@@ -18155,12 +18179,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<variable>"  :subid("49_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "term:sym<variable>"  :subid("49_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_721
 .annotate "line", 273
     new $P720, 'ExceptionHandler'
     set_addr $P720, control_719
-    $P720."handle_types"(58)
+    $P720."handle_types"(57)
     push_eh $P720
     .lex "self", self
     .lex "$/", param_721
@@ -18185,12 +18209,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<package_declarator>"  :subid("50_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "term:sym<package_declarator>"  :subid("50_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_731
 .annotate "line", 274
     new $P730, 'ExceptionHandler'
     set_addr $P730, control_729
-    $P730."handle_types"(58)
+    $P730."handle_types"(57)
     push_eh $P730
     .lex "self", self
     .lex "$/", param_731
@@ -18215,12 +18239,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<scope_declarator>"  :subid("51_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "term:sym<scope_declarator>"  :subid("51_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_741
 .annotate "line", 275
     new $P740, 'ExceptionHandler'
     set_addr $P740, control_739
-    $P740."handle_types"(58)
+    $P740."handle_types"(57)
     push_eh $P740
     .lex "self", self
     .lex "$/", param_741
@@ -18245,12 +18269,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<routine_declarator>"  :subid("52_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "term:sym<routine_declarator>"  :subid("52_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_751
 .annotate "line", 276
     new $P750, 'ExceptionHandler'
     set_addr $P750, control_749
-    $P750."handle_types"(58)
+    $P750."handle_types"(57)
     push_eh $P750
     .lex "self", self
     .lex "$/", param_751
@@ -18275,12 +18299,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<regex_declarator>"  :subid("53_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "term:sym<regex_declarator>"  :subid("53_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_761
 .annotate "line", 277
     new $P760, 'ExceptionHandler'
     set_addr $P760, control_759
-    $P760."handle_types"(58)
+    $P760."handle_types"(57)
     push_eh $P760
     .lex "self", self
     .lex "$/", param_761
@@ -18305,12 +18329,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<statement_prefix>"  :subid("54_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "term:sym<statement_prefix>"  :subid("54_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_771
 .annotate "line", 278
     new $P770, 'ExceptionHandler'
     set_addr $P770, control_769
-    $P770."handle_types"(58)
+    $P770."handle_types"(57)
     push_eh $P770
     .lex "self", self
     .lex "$/", param_771
@@ -18335,12 +18359,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<lambda>"  :subid("55_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "term:sym<lambda>"  :subid("55_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_781
 .annotate "line", 279
     new $P780, 'ExceptionHandler'
     set_addr $P780, control_779
-    $P780."handle_types"(58)
+    $P780."handle_types"(57)
     push_eh $P780
     .lex "self", self
     .lex "$/", param_781
@@ -18365,12 +18389,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "fatarrow"  :subid("56_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "fatarrow"  :subid("56_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_791
 .annotate "line", 281
     new $P790, 'ExceptionHandler'
     set_addr $P790, control_789
-    $P790."handle_types"(58)
+    $P790."handle_types"(57)
     push_eh $P790
     .lex "self", self
     .lex "$/", param_791
@@ -18414,12 +18438,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "colonpair"  :subid("57_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "colonpair"  :subid("57_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_807
 .annotate "line", 287
     new $P806, 'ExceptionHandler'
     set_addr $P806, control_805
-    $P806."handle_types"(58)
+    $P806."handle_types"(57)
     push_eh $P806
     .lex "self", self
     .lex "$/", param_807
@@ -18495,14 +18519,14 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "variable"  :subid("58_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "variable"  :subid("58_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_833
 .annotate "line", 295
-    .const 'Sub' $P846 = "59_1271948680.36754" 
+    .const 'Sub' $P846 = "59_1272816841.80681" 
     capture_lex $P846
     new $P832, 'ExceptionHandler'
     set_addr $P832, control_831
-    $P832."handle_types"(58)
+    $P832."handle_types"(57)
     push_eh $P832
     .lex "self", self
     .lex "$/", param_833
@@ -18522,7 +18546,7 @@
   vivify_297:
     if $P838, if_836
 .annotate "line", 301
-    .const 'Sub' $P846 = "59_1271948680.36754" 
+    .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_1271948680.36754") :outer("58_1271948680.36754")
+.sub "_block845"  :anon :subid("59_1272816841.80681") :outer("58_1272816841.80681")
 .annotate "line", 302
     $P847 = root_new ['parrot';'ResizablePMCArray']
     .lex "@name", $P847
@@ -18728,12 +18752,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "package_declarator:sym<module>"  :subid("60_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "package_declarator:sym<module>"  :subid("60_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_922
 .annotate "line", 333
     new $P921, 'ExceptionHandler'
     set_addr $P921, control_920
-    $P921."handle_types"(58)
+    $P921."handle_types"(57)
     push_eh $P921
     .lex "self", self
     .lex "$/", param_922
@@ -18758,12 +18782,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "package_declarator:sym<class>"  :subid("61_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "package_declarator:sym<class>"  :subid("61_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_932
 .annotate "line", 334
     new $P931, 'ExceptionHandler'
     set_addr $P931, control_930
-    $P931."handle_types"(58)
+    $P931."handle_types"(57)
     push_eh $P931
     .lex "self", self
     .lex "$/", param_932
@@ -18915,12 +18939,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "package_def"  :subid("62_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "package_def"  :subid("62_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_985
 .annotate "line", 357
     new $P984, 'ExceptionHandler'
     set_addr $P984, control_983
-    $P984."handle_types"(58)
+    $P984."handle_types"(57)
     push_eh $P984
     .lex "self", self
     .lex "$/", param_985
@@ -18993,12 +19017,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<my>"  :subid("63_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "scope_declarator:sym<my>"  :subid("63_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1009
 .annotate "line", 364
     new $P1008, 'ExceptionHandler'
     set_addr $P1008, control_1007
-    $P1008."handle_types"(58)
+    $P1008."handle_types"(57)
     push_eh $P1008
     .lex "self", self
     .lex "$/", param_1009
@@ -19023,12 +19047,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<our>"  :subid("64_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "scope_declarator:sym<our>"  :subid("64_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1019
 .annotate "line", 365
     new $P1018, 'ExceptionHandler'
     set_addr $P1018, control_1017
-    $P1018."handle_types"(58)
+    $P1018."handle_types"(57)
     push_eh $P1018
     .lex "self", self
     .lex "$/", param_1019
@@ -19053,12 +19077,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<has>"  :subid("65_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "scope_declarator:sym<has>"  :subid("65_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1029
 .annotate "line", 366
     new $P1028, 'ExceptionHandler'
     set_addr $P1028, control_1027
-    $P1028."handle_types"(58)
+    $P1028."handle_types"(57)
     push_eh $P1028
     .lex "self", self
     .lex "$/", param_1029
@@ -19083,12 +19107,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "scoped"  :subid("66_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "scoped"  :subid("66_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1039
 .annotate "line", 368
     new $P1038, 'ExceptionHandler'
     set_addr $P1038, control_1037
-    $P1038."handle_types"(58)
+    $P1038."handle_types"(57)
     push_eh $P1038
     .lex "self", self
     .lex "$/", param_1039
@@ -19141,14 +19165,14 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "variable_declarator"  :subid("67_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "variable_declarator"  :subid("67_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1056
 .annotate "line", 374
-    .const 'Sub' $P1096 = "68_1271948680.36754" 
+    .const 'Sub' $P1096 = "68_1272816841.80681" 
     capture_lex $P1096
     new $P1055, 'ExceptionHandler'
     set_addr $P1055, control_1054
-    $P1055."handle_types"(58)
+    $P1055."handle_types"(57)
     push_eh $P1055
     .lex "self", self
     .lex "$/", param_1056
@@ -19226,7 +19250,7 @@
     iseq $I1081, $S1080, "has"
     if $I1081, if_1078
 .annotate "line", 391
-    .const 'Sub' $P1096 = "68_1271948680.36754" 
+    .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_1271948680.36754") :outer("67_1271948680.36754")
+.sub "_block1095"  :anon :subid("68_1272816841.80681") :outer("67_1272816841.80681")
 .annotate "line", 392
     new $P1097, "Undef"
     .lex "$scope", $P1097
@@ -19347,12 +19371,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "routine_declarator:sym<sub>"  :subid("69_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "routine_declarator:sym<sub>"  :subid("69_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1127
 .annotate "line", 402
     new $P1126, 'ExceptionHandler'
     set_addr $P1126, control_1125
-    $P1126."handle_types"(58)
+    $P1126."handle_types"(57)
     push_eh $P1126
     .lex "self", self
     .lex "$/", param_1127
@@ -19377,12 +19401,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "routine_declarator:sym<method>"  :subid("70_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "routine_declarator:sym<method>"  :subid("70_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1137
 .annotate "line", 403
     new $P1136, 'ExceptionHandler'
     set_addr $P1136, control_1135
-    $P1136."handle_types"(58)
+    $P1136."handle_types"(57)
     push_eh $P1136
     .lex "self", self
     .lex "$/", param_1137
@@ -19407,14 +19431,14 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "routine_def"  :subid("71_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "routine_def"  :subid("71_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1147
 .annotate "line", 405
-    .const 'Sub' $P1158 = "72_1271948680.36754" 
+    .const 'Sub' $P1158 = "72_1272816841.80681" 
     capture_lex $P1158
     new $P1146, 'ExceptionHandler'
     set_addr $P1146, control_1145
-    $P1146."handle_types"(58)
+    $P1146."handle_types"(57)
     push_eh $P1146
     .lex "self", self
     .lex "$/", param_1147
@@ -19447,7 +19471,7 @@
     new $P1156, "Undef"
   vivify_381:
     unless $P1156, if_1154_end
-    .const 'Sub' $P1158 = "72_1271948680.36754" 
+    .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_1271948680.36754") :outer("71_1271948680.36754")
+.sub "_block1157"  :anon :subid("72_1272816841.80681") :outer("71_1272816841.80681")
 .annotate "line", 410
     new $P1159, "Undef"
     .lex "$name", $P1159
@@ -19562,14 +19586,14 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "method_def"  :subid("73_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "method_def"  :subid("73_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1197
 .annotate "line", 423
-    .const 'Sub' $P1213 = "74_1271948680.36754" 
+    .const 'Sub' $P1213 = "74_1272816841.80681" 
     capture_lex $P1213
     new $P1196, 'ExceptionHandler'
     set_addr $P1196, control_1195
-    $P1196."handle_types"(58)
+    $P1196."handle_types"(57)
     push_eh $P1196
     .lex "self", self
     .lex "$/", param_1197
@@ -19617,7 +19641,7 @@
     new $P1211, "Undef"
   vivify_400:
     unless $P1211, if_1209_end
-    .const 'Sub' $P1213 = "74_1271948680.36754" 
+    .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_1271948680.36754") :outer("73_1271948680.36754")
+.sub "_block1212"  :anon :subid("74_1272816841.80681") :outer("73_1272816841.80681")
 .annotate "line", 430
     new $P1214, "Undef"
     .lex "$name", $P1214
@@ -19667,14 +19691,14 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "signature"  :subid("75_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "signature"  :subid("75_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1231
 .annotate "line", 437
-    .const 'Sub' $P1242 = "76_1271948680.36754" 
+    .const 'Sub' $P1242 = "76_1272816841.80681" 
     capture_lex $P1242
     new $P1230, 'ExceptionHandler'
     set_addr $P1230, control_1229
-    $P1230."handle_types"(58)
+    $P1230."handle_types"(57)
     push_eh $P1230
     .lex "self", self
     .lex "$/", param_1231
@@ -19708,13 +19732,13 @@
     iter $P1236, $P1238
     new $P1249, 'ExceptionHandler'
     set_addr $P1249, loop1248_handler
-    $P1249."handle_types"(65, 67, 66)
+    $P1249."handle_types"(64, 66, 65)
     push_eh $P1249
   loop1248_test:
     unless $P1236, loop1248_done
     shift $P1240, $P1236
   loop1248_redo:
-    .const 'Sub' $P1242 = "76_1271948680.36754" 
+    .const 'Sub' $P1242 = "76_1272816841.80681" 
     capture_lex $P1242
     $P1242($P1240)
   loop1248_next:
@@ -19723,8 +19747,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P1250, exception, 'type'
-    eq $P1250, 65, loop1248_next
-    eq $P1250, 67, loop1248_redo
+    eq $P1250, 64, loop1248_next
+    eq $P1250, 66, loop1248_redo
   loop1248_done:
     pop_eh 
   for_undef_409:
@@ -19739,7 +19763,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1241"  :anon :subid("76_1271948680.36754") :outer("75_1271948680.36754")
+.sub "_block1241"  :anon :subid("76_1272816841.80681") :outer("75_1272816841.80681")
     .param pmc param_1243
 .annotate "line", 439
     .lex "$_", param_1243
@@ -19752,12 +19776,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "parameter"  :subid("77_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "parameter"  :subid("77_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1255
 .annotate "line", 442
     new $P1254, 'ExceptionHandler'
     set_addr $P1254, control_1253
-    $P1254."handle_types"(58)
+    $P1254."handle_types"(57)
     push_eh $P1254
     .lex "self", self
     .lex "$/", param_1255
@@ -19984,12 +20008,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "param_var"  :subid("78_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "param_var"  :subid("78_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1339
 .annotate "line", 474
     new $P1338, 'ExceptionHandler'
     set_addr $P1338, control_1337
-    $P1338."handle_types"(58)
+    $P1338."handle_types"(57)
     push_eh $P1338
     .lex "self", self
     .lex "$/", param_1339
@@ -20037,12 +20061,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "named_param"  :subid("79_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "named_param"  :subid("79_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1359
 .annotate "line", 482
     new $P1358, 'ExceptionHandler'
     set_addr $P1358, control_1357
-    $P1358."handle_types"(58)
+    $P1358."handle_types"(57)
     push_eh $P1358
     .lex "self", self
     .lex "$/", param_1359
@@ -20090,18 +20114,18 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "regex_declarator"  :subid("80_1271948680.36754") :method :outer("11_1271948680.36754")
+.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_1271948680.36754" 
+    .const 'Sub' $P1447 = "82_1272816841.80681" 
     capture_lex $P1447
-    .const 'Sub' $P1419 = "81_1271948680.36754" 
+    .const 'Sub' $P1419 = "81_1272816841.80681" 
     capture_lex $P1419
     new $P1375, 'ExceptionHandler'
     set_addr $P1375, control_1374
-    $P1375."handle_types"(58)
+    $P1375."handle_types"(57)
     push_eh $P1375
     .lex "self", self
     .lex "$/", param_1376
@@ -20155,13 +20179,13 @@
     iseq $I1417, $S1416, "open"
     if $I1417, if_1414
 .annotate "line", 534
-    .const 'Sub' $P1447 = "82_1271948680.36754" 
+    .const 'Sub' $P1447 = "82_1272816841.80681" 
     capture_lex $P1447
     $P1447()
     goto if_1414_end
   if_1414:
 .annotate "line", 521
-    .const 'Sub' $P1419 = "81_1271948680.36754" 
+    .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_1271948680.36754") :outer("80_1271948680.36754")
+.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_1271948680.36754") :outer("80_1271948680.36754")
+.sub "_block1418"  :anon :subid("81_1272816841.80681") :outer("80_1272816841.80681")
 .annotate "line", 522
     $P1420 = root_new ['parrot';'Hash']
     .lex "%h", $P1420
@@ -20356,7 +20380,7 @@
     $P1443."symbol"("$/", "lexical" :named("scope"))
 .annotate "line", 532
     new $P1444, "Exception"
-    set $P1444['type'], 58
+    set $P1444['type'], 57
     new $P1445, "Integer"
     assign $P1445, 0
     setattribute $P1444, 'payload', $P1445
@@ -20367,12 +20391,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "dotty"  :subid("83_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "dotty"  :subid("83_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1475
 .annotate "line", 552
     new $P1474, 'ExceptionHandler'
     set_addr $P1474, control_1473
-    $P1474."handle_types"(58)
+    $P1474."handle_types"(57)
     push_eh $P1474
     .lex "self", self
     .lex "$/", param_1475
@@ -20464,12 +20488,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<self>"  :subid("84_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "term:sym<self>"  :subid("84_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1507
 .annotate "line", 561
     new $P1506, 'ExceptionHandler'
     set_addr $P1506, control_1505
-    $P1506."handle_types"(58)
+    $P1506."handle_types"(57)
     push_eh $P1506
     .lex "self", self
     .lex "$/", param_1507
@@ -20489,12 +20513,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<identifier>"  :subid("85_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "term:sym<identifier>"  :subid("85_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1516
 .annotate "line", 565
     new $P1515, 'ExceptionHandler'
     set_addr $P1515, control_1514
-    $P1515."handle_types"(58)
+    $P1515."handle_types"(57)
     push_eh $P1515
     .lex "self", self
     .lex "$/", param_1516
@@ -20538,12 +20562,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<name>"  :subid("86_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "term:sym<name>"  :subid("86_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1532
 .annotate "line", 571
     new $P1531, 'ExceptionHandler'
     set_addr $P1531, control_1530
-    $P1531."handle_types"(58)
+    $P1531."handle_types"(57)
     push_eh $P1531
     .lex "self", self
     .lex "$/", param_1532
@@ -20656,12 +20680,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<pir::op>"  :subid("87_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "term:sym<pir::op>"  :subid("87_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1574
 .annotate "line", 585
     new $P1573, 'ExceptionHandler'
     set_addr $P1573, control_1572
-    $P1573."handle_types"(58)
+    $P1573."handle_types"(57)
     push_eh $P1573
     .lex "self", self
     .lex "$/", param_1574
@@ -20747,12 +20771,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "args"  :subid("88_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "args"  :subid("88_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1603
 .annotate "line", 600
     new $P1602, 'ExceptionHandler'
     set_addr $P1602, control_1601
-    $P1602."handle_types"(58)
+    $P1602."handle_types"(57)
     push_eh $P1602
     .lex "self", self
     .lex "$/", param_1603
@@ -20777,14 +20801,14 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "arglist"  :subid("89_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "arglist"  :subid("89_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1613
 .annotate "line", 602
-    .const 'Sub' $P1624 = "90_1271948680.36754" 
+    .const 'Sub' $P1624 = "90_1272816841.80681" 
     capture_lex $P1624
     new $P1612, 'ExceptionHandler'
     set_addr $P1612, control_1611
-    $P1612."handle_types"(58)
+    $P1612."handle_types"(57)
     push_eh $P1612
     .lex "self", self
     .lex "$/", param_1613
@@ -20812,7 +20836,7 @@
     new $P1622, "Undef"
   vivify_499:
     unless $P1622, if_1620_end
-    .const 'Sub' $P1624 = "90_1271948680.36754" 
+    .const 'Sub' $P1624 = "90_1272816841.80681" 
     capture_lex $P1624
     $P1624()
   if_1620_end:
@@ -20830,7 +20854,7 @@
 .annotate "line", 613
     new $P1688, 'ExceptionHandler'
     set_addr $P1688, loop1687_handler
-    $P1688."handle_types"(65, 67, 66)
+    $P1688."handle_types"(64, 66, 65)
     push_eh $P1688
   loop1687_test:
     find_lex $P1661, "$i"
@@ -20901,8 +20925,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P1689, exception, 'type'
-    eq $P1689, 65, loop1687_next
-    eq $P1689, 67, loop1687_redo
+    eq $P1689, 64, loop1687_next
+    eq $P1689, 66, loop1687_redo
   loop1687_done:
     pop_eh 
 .annotate "line", 620
@@ -20920,9 +20944,9 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1623"  :anon :subid("90_1271948680.36754") :outer("89_1271948680.36754")
+.sub "_block1623"  :anon :subid("90_1272816841.80681") :outer("89_1272816841.80681")
 .annotate "line", 604
-    .const 'Sub' $P1645 = "91_1271948680.36754" 
+    .const 'Sub' $P1645 = "91_1272816841.80681" 
     capture_lex $P1645
 .annotate "line", 605
     new $P1625, "Undef"
@@ -20969,13 +20993,13 @@
     iter $P1639, $P1641
     new $P1651, 'ExceptionHandler'
     set_addr $P1651, loop1650_handler
-    $P1651."handle_types"(65, 67, 66)
+    $P1651."handle_types"(64, 66, 65)
     push_eh $P1651
   loop1650_test:
     unless $P1639, loop1650_done
     shift $P1643, $P1639
   loop1650_redo:
-    .const 'Sub' $P1645 = "91_1271948680.36754" 
+    .const 'Sub' $P1645 = "91_1272816841.80681" 
     capture_lex $P1645
     $P1645($P1643)
   loop1650_next:
@@ -20984,8 +21008,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P1652, exception, 'type'
-    eq $P1652, 65, loop1650_next
-    eq $P1652, 67, loop1650_redo
+    eq $P1652, 64, loop1650_next
+    eq $P1652, 66, loop1650_redo
   loop1650_done:
     pop_eh 
   for_undef_502:
@@ -20998,7 +21022,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1644"  :anon :subid("91_1271948680.36754") :outer("90_1271948680.36754")
+.sub "_block1644"  :anon :subid("91_1272816841.80681") :outer("90_1272816841.80681")
     .param pmc param_1646
 .annotate "line", 607
     .lex "$_", param_1646
@@ -21010,12 +21034,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<value>"  :subid("92_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "term:sym<value>"  :subid("92_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1697
 .annotate "line", 624
     new $P1696, 'ExceptionHandler'
     set_addr $P1696, control_1695
-    $P1696."handle_types"(58)
+    $P1696."handle_types"(57)
     push_eh $P1696
     .lex "self", self
     .lex "$/", param_1697
@@ -21040,12 +21064,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<( )>"  :subid("93_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "circumfix:sym<( )>"  :subid("93_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1707
 .annotate "line", 626
     new $P1706, 'ExceptionHandler'
     set_addr $P1706, control_1705
-    $P1706."handle_types"(58)
+    $P1706."handle_types"(57)
     push_eh $P1706
     .lex "self", self
     .lex "$/", param_1707
@@ -21096,12 +21120,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<[ ]>"  :subid("94_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "circumfix:sym<[ ]>"  :subid("94_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1725
 .annotate "line", 632
     new $P1724, 'ExceptionHandler'
     set_addr $P1724, control_1723
-    $P1724."handle_types"(58)
+    $P1724."handle_types"(57)
     push_eh $P1724
     .lex "self", self
     .lex "$/", param_1725
@@ -21172,12 +21196,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<ang>"  :subid("95_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "circumfix:sym<ang>"  :subid("95_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1752
 .annotate "line", 647
     new $P1751, 'ExceptionHandler'
     set_addr $P1751, control_1750
-    $P1751."handle_types"(58)
+    $P1751."handle_types"(57)
     push_eh $P1751
     .lex "self", self
     .lex "$/", param_1752
@@ -21202,12 +21226,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("96_1271948680.36754") :method :outer("11_1271948680.36754")
+.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'
     set_addr $P1761, control_1760
-    $P1761."handle_types"(58)
+    $P1761."handle_types"(57)
     push_eh $P1761
     .lex "self", self
     .lex "$/", param_1762
@@ -21232,12 +21256,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<{ }>"  :subid("97_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "circumfix:sym<{ }>"  :subid("97_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1772
 .annotate "line", 650
     new $P1771, 'ExceptionHandler'
     set_addr $P1771, control_1770
-    $P1771."handle_types"(58)
+    $P1771."handle_types"(57)
     push_eh $P1771
     .lex "self", self
     .lex "$/", param_1772
@@ -21296,12 +21320,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<sigil>"  :subid("98_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "circumfix:sym<sigil>"  :subid("98_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1792
 .annotate "line", 656
     new $P1791, 'ExceptionHandler'
     set_addr $P1791, control_1790
-    $P1791."handle_types"(58)
+    $P1791."handle_types"(57)
     push_eh $P1791
     .lex "self", self
     .lex "$/", param_1792
@@ -21375,12 +21399,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "semilist"  :subid("99_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "semilist"  :subid("99_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1821
 .annotate "line", 663
     new $P1820, 'ExceptionHandler'
     set_addr $P1820, control_1819
-    $P1820."handle_types"(58)
+    $P1820."handle_types"(57)
     push_eh $P1820
     .lex "self", self
     .lex "$/", param_1821
@@ -21405,12 +21429,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<[ ]>"  :subid("100_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "postcircumfix:sym<[ ]>"  :subid("100_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1831
 .annotate "line", 665
     new $P1830, 'ExceptionHandler'
     set_addr $P1830, control_1829
-    $P1830."handle_types"(58)
+    $P1830."handle_types"(57)
     push_eh $P1830
     .lex "self", self
     .lex "$/", param_1831
@@ -21442,12 +21466,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<{ }>"  :subid("101_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "postcircumfix:sym<{ }>"  :subid("101_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1844
 .annotate "line", 671
     new $P1843, 'ExceptionHandler'
     set_addr $P1843, control_1842
-    $P1843."handle_types"(58)
+    $P1843."handle_types"(57)
     push_eh $P1843
     .lex "self", self
     .lex "$/", param_1844
@@ -21479,12 +21503,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<ang>"  :subid("102_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "postcircumfix:sym<ang>"  :subid("102_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1857
 .annotate "line", 677
     new $P1856, 'ExceptionHandler'
     set_addr $P1856, control_1855
-    $P1856."handle_types"(58)
+    $P1856."handle_types"(57)
     push_eh $P1856
     .lex "self", self
     .lex "$/", param_1857
@@ -21516,12 +21540,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<( )>"  :subid("103_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "postcircumfix:sym<( )>"  :subid("103_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1870
 .annotate "line", 683
     new $P1869, 'ExceptionHandler'
     set_addr $P1869, control_1868
-    $P1869."handle_types"(58)
+    $P1869."handle_types"(57)
     push_eh $P1869
     .lex "self", self
     .lex "$/", param_1870
@@ -21548,12 +21572,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "value"  :subid("104_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "value"  :subid("104_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1880
 .annotate "line", 687
     new $P1879, 'ExceptionHandler'
     set_addr $P1879, control_1878
-    $P1879."handle_types"(58)
+    $P1879."handle_types"(57)
     push_eh $P1879
     .lex "self", self
     .lex "$/", param_1880
@@ -21603,12 +21627,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "number"  :subid("105_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "number"  :subid("105_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1897
 .annotate "line", 691
     new $P1896, 'ExceptionHandler'
     set_addr $P1896, control_1895
-    $P1896."handle_types"(58)
+    $P1896."handle_types"(57)
     push_eh $P1896
     .lex "self", self
     .lex "$/", param_1897
@@ -21681,12 +21705,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<apos>"  :subid("106_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "quote:sym<apos>"  :subid("106_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1925
 .annotate "line", 697
     new $P1924, 'ExceptionHandler'
     set_addr $P1924, control_1923
-    $P1924."handle_types"(58)
+    $P1924."handle_types"(57)
     push_eh $P1924
     .lex "self", self
     .lex "$/", param_1925
@@ -21711,12 +21735,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<dblq>"  :subid("107_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "quote:sym<dblq>"  :subid("107_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1935
 .annotate "line", 698
     new $P1934, 'ExceptionHandler'
     set_addr $P1934, control_1933
-    $P1934."handle_types"(58)
+    $P1934."handle_types"(57)
     push_eh $P1934
     .lex "self", self
     .lex "$/", param_1935
@@ -21741,12 +21765,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<qq>"  :subid("108_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "quote:sym<qq>"  :subid("108_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1945
 .annotate "line", 699
     new $P1944, 'ExceptionHandler'
     set_addr $P1944, control_1943
-    $P1944."handle_types"(58)
+    $P1944."handle_types"(57)
     push_eh $P1944
     .lex "self", self
     .lex "$/", param_1945
@@ -21771,12 +21795,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<q>"  :subid("109_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "quote:sym<q>"  :subid("109_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1955
 .annotate "line", 700
     new $P1954, 'ExceptionHandler'
     set_addr $P1954, control_1953
-    $P1954."handle_types"(58)
+    $P1954."handle_types"(57)
     push_eh $P1954
     .lex "self", self
     .lex "$/", param_1955
@@ -21801,12 +21825,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<Q>"  :subid("110_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "quote:sym<Q>"  :subid("110_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1965
 .annotate "line", 701
     new $P1964, 'ExceptionHandler'
     set_addr $P1964, control_1963
-    $P1964."handle_types"(58)
+    $P1964."handle_types"(57)
     push_eh $P1964
     .lex "self", self
     .lex "$/", param_1965
@@ -21831,12 +21855,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<Q:PIR>"  :subid("111_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "quote:sym<Q:PIR>"  :subid("111_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_1975
 .annotate "line", 702
     new $P1974, 'ExceptionHandler'
     set_addr $P1974, control_1973
-    $P1974."handle_types"(58)
+    $P1974."handle_types"(57)
     push_eh $P1974
     .lex "self", self
     .lex "$/", param_1975
@@ -21867,14 +21891,14 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym</ />"  :subid("112_1271948680.36754") :method :outer("11_1271948680.36754")
+.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
 .annotate "line", 708
     new $P1988, 'ExceptionHandler'
     set_addr $P1988, control_1987
-    $P1988."handle_types"(58)
+    $P1988."handle_types"(57)
     push_eh $P1988
     .lex "self", self
     .lex "$/", param_1989
@@ -21921,7 +21945,7 @@
     $P2001."symbol"("$/", "lexical" :named("scope"))
 .annotate "line", 716
     new $P2002, "Exception"
-    set $P2002['type'], 58
+    set $P2002['type'], 57
     new $P2003, "Integer"
     assign $P2003, 0
     setattribute $P2002, 'payload', $P2003
@@ -21976,12 +22000,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote_escape:sym<$>"  :subid("113_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "quote_escape:sym<$>"  :subid("113_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_2026
 .annotate "line", 731
     new $P2025, 'ExceptionHandler'
     set_addr $P2025, control_2024
-    $P2025."handle_types"(58)
+    $P2025."handle_types"(57)
     push_eh $P2025
     .lex "self", self
     .lex "$/", param_2026
@@ -22006,12 +22030,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote_escape:sym<{ }>"  :subid("114_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "quote_escape:sym<{ }>"  :subid("114_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_2036
 .annotate "line", 732
     new $P2035, 'ExceptionHandler'
     set_addr $P2035, control_2034
-    $P2035."handle_types"(58)
+    $P2035."handle_types"(57)
     push_eh $P2035
     .lex "self", self
     .lex "$/", param_2036
@@ -22044,12 +22068,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote_escape:sym<esc>"  :subid("115_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "quote_escape:sym<esc>"  :subid("115_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_2050
 .annotate "line", 737
     new $P2049, 'ExceptionHandler'
     set_addr $P2049, control_2048
-    $P2049."handle_types"(58)
+    $P2049."handle_types"(57)
     push_eh $P2049
     .lex "self", self
     .lex "$/", param_2050
@@ -22065,12 +22089,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postfix:sym<.>"  :subid("116_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "postfix:sym<.>"  :subid("116_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_2057
 .annotate "line", 741
     new $P2056, 'ExceptionHandler'
     set_addr $P2056, control_2055
-    $P2056."handle_types"(58)
+    $P2056."handle_types"(57)
     push_eh $P2056
     .lex "self", self
     .lex "$/", param_2057
@@ -22095,12 +22119,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postfix:sym<++>"  :subid("117_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "postfix:sym<++>"  :subid("117_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_2067
 .annotate "line", 743
     new $P2066, 'ExceptionHandler'
     set_addr $P2066, control_2065
-    $P2066."handle_types"(58)
+    $P2066."handle_types"(57)
     push_eh $P2066
     .lex "self", self
     .lex "$/", param_2067
@@ -22125,12 +22149,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postfix:sym<-->"  :subid("118_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "postfix:sym<-->"  :subid("118_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_2077
 .annotate "line", 749
     new $P2076, 'ExceptionHandler'
     set_addr $P2076, control_2075
-    $P2076."handle_types"(58)
+    $P2076."handle_types"(57)
     push_eh $P2076
     .lex "self", self
     .lex "$/", param_2077
@@ -22155,12 +22179,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "prefix:sym<make>"  :subid("119_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "prefix:sym<make>"  :subid("119_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_2087
 .annotate "line", 755
     new $P2086, 'ExceptionHandler'
     set_addr $P2086, control_2085
-    $P2086."handle_types"(58)
+    $P2086."handle_types"(57)
     push_eh $P2086
     .lex "self", self
     .lex "$/", param_2087
@@ -22185,12 +22209,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "infix:sym<~~>"  :subid("120_1271948680.36754") :method :outer("11_1271948680.36754")
+.sub "infix:sym<~~>"  :subid("120_1272816841.80681") :method :outer("11_1272816841.80681")
     .param pmc param_2099
 .annotate "line", 764
     new $P2098, 'ExceptionHandler'
     set_addr $P2098, control_2097
-    $P2098."handle_types"(58)
+    $P2098."handle_types"(57)
     push_eh $P2098
     .lex "self", self
     .lex "$/", param_2099
@@ -22211,18 +22235,18 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "_block2106"  :subid("121_1271948680.36754") :outer("11_1271948680.36754")
+.sub "_block2106"  :subid("121_1272816841.80681") :outer("11_1272816841.80681")
 .annotate "line", 769
-    .const 'Sub' $P2142 = "125_1271948680.36754" 
+    .const 'Sub' $P2142 = "125_1272816841.80681" 
     capture_lex $P2142
-    .const 'Sub' $P2132 = "124_1271948680.36754" 
+    .const 'Sub' $P2132 = "124_1272816841.80681" 
     capture_lex $P2132
-    .const 'Sub' $P2122 = "123_1271948680.36754" 
+    .const 'Sub' $P2122 = "123_1272816841.80681" 
     capture_lex $P2122
-    .const 'Sub' $P2108 = "122_1271948680.36754" 
+    .const 'Sub' $P2108 = "122_1272816841.80681" 
     capture_lex $P2108
 .annotate "line", 780
-    .const 'Sub' $P2142 = "125_1271948680.36754" 
+    .const 'Sub' $P2142 = "125_1272816841.80681" 
     capture_lex $P2142
 .annotate "line", 769
     .return ($P2142)
@@ -22230,12 +22254,12 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "metachar:sym<:my>"  :subid("122_1271948680.36754") :method :outer("121_1271948680.36754")
+.sub "metachar:sym<:my>"  :subid("122_1272816841.80681") :method :outer("121_1272816841.80681")
     .param pmc param_2111
 .annotate "line", 771
     new $P2110, 'ExceptionHandler'
     set_addr $P2110, control_2109
-    $P2110."handle_types"(58)
+    $P2110."handle_types"(57)
     push_eh $P2110
     .lex "self", self
     .lex "$/", param_2111
@@ -22269,12 +22293,12 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "metachar:sym<{ }>"  :subid("123_1271948680.36754") :method :outer("121_1271948680.36754")
+.sub "metachar:sym<{ }>"  :subid("123_1272816841.80681") :method :outer("121_1272816841.80681")
     .param pmc param_2125
 .annotate "line", 776
     new $P2124, 'ExceptionHandler'
     set_addr $P2124, control_2123
-    $P2124."handle_types"(58)
+    $P2124."handle_types"(57)
     push_eh $P2124
     .lex "self", self
     .lex "$/", param_2125
@@ -22299,12 +22323,12 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "assertion:sym<{ }>"  :subid("124_1271948680.36754") :method :outer("121_1271948680.36754")
+.sub "assertion:sym<{ }>"  :subid("124_1272816841.80681") :method :outer("121_1272816841.80681")
     .param pmc param_2135
 .annotate "line", 778
     new $P2134, 'ExceptionHandler'
     set_addr $P2134, control_2133
-    $P2134."handle_types"(58)
+    $P2134."handle_types"(57)
     push_eh $P2134
     .lex "self", self
     .lex "$/", param_2135
@@ -22329,12 +22353,12 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "codeblock"  :subid("125_1271948680.36754") :method :outer("121_1271948680.36754")
+.sub "codeblock"  :subid("125_1272816841.80681") :method :outer("121_1272816841.80681")
     .param pmc param_2145
 .annotate "line", 780
     new $P2144, 'ExceptionHandler'
     set_addr $P2144, control_2143
-    $P2144."handle_types"(58)
+    $P2144."handle_types"(57)
     push_eh $P2144
     .lex "self", self
     .lex "$/", param_2145

Modified: branches/pbc_frozen_strings1/ext/nqp-rx/src/stage0/P6Regex-s0.pir
==============================================================================
--- branches/pbc_frozen_strings1/ext/nqp-rx/src/stage0/P6Regex-s0.pir	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/ext/nqp-rx/src/stage0/P6Regex-s0.pir	Sun May  2 22:14:53 2010	(r46220)
@@ -16,7 +16,7 @@
 ### .include 'gen/p6regex-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1271948653.77811")
+.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_1271948653.77811")
+.sub "" :load :init :subid("post158") :outer("10_1272816831.40736")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1271948653.77811" 
+    .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_1271948653.77811") :outer("10_1271948653.77811")
+.sub "_block13"  :subid("11_1272816831.40736") :outer("10_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P571 = "156_1271948653.77811" 
+    .const 'Sub' $P571 = "156_1272816831.40736" 
     capture_lex $P571
-    .const 'Sub' $P563 = "154_1271948653.77811" 
+    .const 'Sub' $P563 = "154_1272816831.40736" 
     capture_lex $P563
-    .const 'Sub' $P555 = "152_1271948653.77811" 
+    .const 'Sub' $P555 = "152_1272816831.40736" 
     capture_lex $P555
-    .const 'Sub' $P534 = "147_1271948653.77811" 
+    .const 'Sub' $P534 = "147_1272816831.40736" 
     capture_lex $P534
-    .const 'Sub' $P499 = "141_1271948653.77811" 
+    .const 'Sub' $P499 = "141_1272816831.40736" 
     capture_lex $P499
-    .const 'Sub' $P487 = "138_1271948653.77811" 
+    .const 'Sub' $P487 = "138_1272816831.40736" 
     capture_lex $P487
-    .const 'Sub' $P474 = "135_1271948653.77811" 
+    .const 'Sub' $P474 = "135_1272816831.40736" 
     capture_lex $P474
-    .const 'Sub' $P468 = "133_1271948653.77811" 
+    .const 'Sub' $P468 = "133_1272816831.40736" 
     capture_lex $P468
-    .const 'Sub' $P457 = "130_1271948653.77811" 
+    .const 'Sub' $P457 = "130_1272816831.40736" 
     capture_lex $P457
-    .const 'Sub' $P446 = "127_1271948653.77811" 
+    .const 'Sub' $P446 = "127_1272816831.40736" 
     capture_lex $P446
-    .const 'Sub' $P437 = "123_1271948653.77811" 
+    .const 'Sub' $P437 = "123_1272816831.40736" 
     capture_lex $P437
-    .const 'Sub' $P431 = "121_1271948653.77811" 
+    .const 'Sub' $P431 = "121_1272816831.40736" 
     capture_lex $P431
-    .const 'Sub' $P425 = "119_1271948653.77811" 
+    .const 'Sub' $P425 = "119_1272816831.40736" 
     capture_lex $P425
-    .const 'Sub' $P419 = "117_1271948653.77811" 
+    .const 'Sub' $P419 = "117_1272816831.40736" 
     capture_lex $P419
-    .const 'Sub' $P413 = "115_1271948653.77811" 
+    .const 'Sub' $P413 = "115_1272816831.40736" 
     capture_lex $P413
-    .const 'Sub' $P405 = "113_1271948653.77811" 
+    .const 'Sub' $P405 = "113_1272816831.40736" 
     capture_lex $P405
-    .const 'Sub' $P394 = "111_1271948653.77811" 
+    .const 'Sub' $P394 = "111_1272816831.40736" 
     capture_lex $P394
-    .const 'Sub' $P383 = "109_1271948653.77811" 
+    .const 'Sub' $P383 = "109_1272816831.40736" 
     capture_lex $P383
-    .const 'Sub' $P377 = "107_1271948653.77811" 
+    .const 'Sub' $P377 = "107_1272816831.40736" 
     capture_lex $P377
-    .const 'Sub' $P371 = "105_1271948653.77811" 
+    .const 'Sub' $P371 = "105_1272816831.40736" 
     capture_lex $P371
-    .const 'Sub' $P365 = "103_1271948653.77811" 
+    .const 'Sub' $P365 = "103_1272816831.40736" 
     capture_lex $P365
-    .const 'Sub' $P359 = "101_1271948653.77811" 
+    .const 'Sub' $P359 = "101_1272816831.40736" 
     capture_lex $P359
-    .const 'Sub' $P353 = "99_1271948653.77811" 
+    .const 'Sub' $P353 = "99_1272816831.40736" 
     capture_lex $P353
-    .const 'Sub' $P347 = "97_1271948653.77811" 
+    .const 'Sub' $P347 = "97_1272816831.40736" 
     capture_lex $P347
-    .const 'Sub' $P341 = "95_1271948653.77811" 
+    .const 'Sub' $P341 = "95_1272816831.40736" 
     capture_lex $P341
-    .const 'Sub' $P335 = "93_1271948653.77811" 
+    .const 'Sub' $P335 = "93_1272816831.40736" 
     capture_lex $P335
-    .const 'Sub' $P323 = "89_1271948653.77811" 
+    .const 'Sub' $P323 = "89_1272816831.40736" 
     capture_lex $P323
-    .const 'Sub' $P311 = "87_1271948653.77811" 
+    .const 'Sub' $P311 = "87_1272816831.40736" 
     capture_lex $P311
-    .const 'Sub' $P304 = "85_1271948653.77811" 
+    .const 'Sub' $P304 = "85_1272816831.40736" 
     capture_lex $P304
-    .const 'Sub' $P287 = "83_1271948653.77811" 
+    .const 'Sub' $P287 = "83_1272816831.40736" 
     capture_lex $P287
-    .const 'Sub' $P280 = "81_1271948653.77811" 
+    .const 'Sub' $P280 = "81_1272816831.40736" 
     capture_lex $P280
-    .const 'Sub' $P274 = "79_1271948653.77811" 
+    .const 'Sub' $P274 = "79_1272816831.40736" 
     capture_lex $P274
-    .const 'Sub' $P268 = "77_1271948653.77811" 
+    .const 'Sub' $P268 = "77_1272816831.40736" 
     capture_lex $P268
-    .const 'Sub' $P261 = "75_1271948653.77811" 
+    .const 'Sub' $P261 = "75_1272816831.40736" 
     capture_lex $P261
-    .const 'Sub' $P254 = "73_1271948653.77811" 
+    .const 'Sub' $P254 = "73_1272816831.40736" 
     capture_lex $P254
-    .const 'Sub' $P247 = "71_1271948653.77811" 
+    .const 'Sub' $P247 = "71_1272816831.40736" 
     capture_lex $P247
-    .const 'Sub' $P240 = "69_1271948653.77811" 
+    .const 'Sub' $P240 = "69_1272816831.40736" 
     capture_lex $P240
-    .const 'Sub' $P234 = "67_1271948653.77811" 
+    .const 'Sub' $P234 = "67_1272816831.40736" 
     capture_lex $P234
-    .const 'Sub' $P228 = "65_1271948653.77811" 
+    .const 'Sub' $P228 = "65_1272816831.40736" 
     capture_lex $P228
-    .const 'Sub' $P222 = "63_1271948653.77811" 
+    .const 'Sub' $P222 = "63_1272816831.40736" 
     capture_lex $P222
-    .const 'Sub' $P216 = "61_1271948653.77811" 
+    .const 'Sub' $P216 = "61_1272816831.40736" 
     capture_lex $P216
-    .const 'Sub' $P210 = "59_1271948653.77811" 
+    .const 'Sub' $P210 = "59_1272816831.40736" 
     capture_lex $P210
-    .const 'Sub' $P205 = "57_1271948653.77811" 
+    .const 'Sub' $P205 = "57_1272816831.40736" 
     capture_lex $P205
-    .const 'Sub' $P200 = "55_1271948653.77811" 
+    .const 'Sub' $P200 = "55_1272816831.40736" 
     capture_lex $P200
-    .const 'Sub' $P194 = "53_1271948653.77811" 
+    .const 'Sub' $P194 = "53_1272816831.40736" 
     capture_lex $P194
-    .const 'Sub' $P188 = "51_1271948653.77811" 
+    .const 'Sub' $P188 = "51_1272816831.40736" 
     capture_lex $P188
-    .const 'Sub' $P182 = "49_1271948653.77811" 
+    .const 'Sub' $P182 = "49_1272816831.40736" 
     capture_lex $P182
-    .const 'Sub' $P166 = "44_1271948653.77811" 
+    .const 'Sub' $P166 = "44_1272816831.40736" 
     capture_lex $P166
-    .const 'Sub' $P154 = "42_1271948653.77811" 
+    .const 'Sub' $P154 = "42_1272816831.40736" 
     capture_lex $P154
-    .const 'Sub' $P147 = "40_1271948653.77811" 
+    .const 'Sub' $P147 = "40_1272816831.40736" 
     capture_lex $P147
-    .const 'Sub' $P140 = "38_1271948653.77811" 
+    .const 'Sub' $P140 = "38_1272816831.40736" 
     capture_lex $P140
-    .const 'Sub' $P133 = "36_1271948653.77811" 
+    .const 'Sub' $P133 = "36_1272816831.40736" 
     capture_lex $P133
-    .const 'Sub' $P114 = "31_1271948653.77811" 
+    .const 'Sub' $P114 = "31_1272816831.40736" 
     capture_lex $P114
-    .const 'Sub' $P101 = "28_1271948653.77811" 
+    .const 'Sub' $P101 = "28_1272816831.40736" 
     capture_lex $P101
-    .const 'Sub' $P94 = "26_1271948653.77811" 
+    .const 'Sub' $P94 = "26_1272816831.40736" 
     capture_lex $P94
-    .const 'Sub' $P82 = "24_1271948653.77811" 
+    .const 'Sub' $P82 = "24_1272816831.40736" 
     capture_lex $P82
-    .const 'Sub' $P75 = "22_1271948653.77811" 
+    .const 'Sub' $P75 = "22_1272816831.40736" 
     capture_lex $P75
-    .const 'Sub' $P63 = "20_1271948653.77811" 
+    .const 'Sub' $P63 = "20_1272816831.40736" 
     capture_lex $P63
-    .const 'Sub' $P56 = "18_1271948653.77811" 
+    .const 'Sub' $P56 = "18_1272816831.40736" 
     capture_lex $P56
-    .const 'Sub' $P46 = "15_1271948653.77811" 
+    .const 'Sub' $P46 = "15_1272816831.40736" 
     capture_lex $P46
-    .const 'Sub' $P38 = "13_1271948653.77811" 
+    .const 'Sub' $P38 = "13_1272816831.40736" 
     capture_lex $P38
-    .const 'Sub' $P15 = "12_1271948653.77811" 
+    .const 'Sub' $P15 = "12_1272816831.40736" 
     capture_lex $P15
-    .const 'Sub' $P571 = "156_1271948653.77811" 
+    .const 'Sub' $P571 = "156_1272816831.40736" 
     capture_lex $P571
     .return ($P571)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "obs"  :subid("12_1271948653.77811") :method :outer("11_1271948653.77811")
+.sub "obs"  :subid("12_1272816831.40736") :method :outer("11_1272816831.40736")
     .param pmc param_18
     .param pmc param_19
     .param pmc param_20 :optional
@@ -182,7 +182,7 @@
 .annotate "line", 3
     new $P17, 'ExceptionHandler'
     set_addr $P17, control_16
-    $P17."handle_types"(58)
+    $P17."handle_types"(57)
     push_eh $P17
     .lex "self", self
     .lex "$old", param_18
@@ -222,7 +222,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "ws"  :subid("13_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.sub "normspace"  :subid("15_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P52 = "17_1271948653.77811" 
+    .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_1271948653.77811" 
+    .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_1271948653.77811") :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_1271948653.77811") :method :outer("15_1271948653.77811")
+.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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.sub "quantified_atom"  :subid("28_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P110 = "30_1271948653.77811" 
+    .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_1271948653.77811" 
+    .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_1271948653.77811") :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_1271948653.77811") :method :outer("28_1271948653.77811")
+.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_1271948653.77811") :method :outer("11_1271948653.77811")
+.sub "atom"  :subid("31_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P125 = "33_1271948653.77811" 
+    .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_1271948653.77811" 
+    .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_1271948653.77811") :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_1271948653.77811") :method :outer("31_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.sub "backmod"  :subid("44_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P175 = "46_1271948653.77811" 
+    .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_1271948653.77811" 
+    .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_1271948653.77811") :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_1271948653.77811") :method :outer("44_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.sub "assertion:sym<?>"  :subid("127_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P454 = "129_1271948653.77811" 
+    .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_1271948653.77811" 
+    .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_1271948653.77811") :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_1271948653.77811") :method :outer("127_1271948653.77811")
+.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_1271948653.77811") :method :outer("11_1271948653.77811")
+.sub "assertion:sym<!>"  :subid("130_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P465 = "132_1271948653.77811" 
+    .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_1271948653.77811" 
+    .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_1271948653.77811") :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_1271948653.77811") :method :outer("130_1271948653.77811")
+.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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.sub "assertion:sym<name>"  :subid("135_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P483 = "137_1271948653.77811" 
+    .const 'Sub' $P483 = "137_1272816831.40736" 
     capture_lex $P483
     .local string rx475_tgt
     .local int rx475_pos
@@ -5782,7 +5782,7 @@
 .annotate "line", 150
   # rx subrule "before" subtype=zerowidth negate=
     rx475_cur."!cursor_pos"(rx475_pos)
-    .const 'Sub' $P483 = "137_1271948653.77811" 
+    .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_1271948653.77811") :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_1271948653.77811") :method :outer("135_1271948653.77811")
+.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_1271948653.77811") :method :outer("11_1271948653.77811")
+.sub "assertion:sym<[>"  :subid("138_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P493 = "140_1271948653.77811" 
+    .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_1271948653.77811" 
+    .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_1271948653.77811") :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_1271948653.77811") :method :outer("138_1271948653.77811")
+.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_1271948653.77811") :method :outer("11_1271948653.77811")
+.sub "cclass_elem"  :subid("141_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P511 = "143_1271948653.77811" 
+    .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_1271948653.77811" 
+    .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_1271948653.77811") :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_1271948653.77811") :method :outer("141_1271948653.77811")
+.sub "_block510"  :anon :subid("143_1272816831.40736") :method :outer("141_1272816831.40736")
 .annotate "line", 164
-    .const 'Sub' $P526 = "146_1271948653.77811" 
+    .const 'Sub' $P526 = "146_1272816831.40736" 
     capture_lex $P526
-    .const 'Sub' $P521 = "145_1271948653.77811" 
+    .const 'Sub' $P521 = "145_1272816831.40736" 
     capture_lex $P521
-    .const 'Sub' $P517 = "144_1271948653.77811" 
+    .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_1271948653.77811" 
+    .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_1271948653.77811" 
+    .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_1271948653.77811" 
+    .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_1271948653.77811") :method :outer("143_1271948653.77811")
+.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_1271948653.77811") :method :outer("143_1271948653.77811")
+.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_1271948653.77811") :method :outer("143_1271948653.77811")
+.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_1271948653.77811") :method :outer("11_1271948653.77811")
+.sub "mod_internal"  :subid("147_1272816831.40736") :method :outer("11_1272816831.40736")
 .annotate "line", 3
-    .const 'Sub' $P543 = "149_1271948653.77811" 
+    .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_1271948653.77811" 
+    .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_1271948653.77811") :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_1271948653.77811") :method :outer("147_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948653.77811") :method :outer("11_1271948653.77811")
+.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_1271948653.77811") :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_1271948660.90108")
+.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_1271948660.90108")
+.sub "" :load :init :subid("post90") :outer("10_1272816836.73052")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1271948660.90108" 
+    .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_1271948660.90108") :outer("10_1271948660.90108")
+.sub "_block13"  :subid("11_1272816836.73052") :outer("10_1272816836.73052")
 .annotate "line", 4
-    .const 'Sub' $P1536 = "89_1271948660.90108" 
+    .const 'Sub' $P1536 = "89_1272816836.73052" 
     capture_lex $P1536
-    .const 'Sub' $P1467 = "85_1271948660.90108" 
+    .const 'Sub' $P1467 = "85_1272816836.73052" 
     capture_lex $P1467
-    .const 'Sub' $P1399 = "83_1271948660.90108" 
+    .const 'Sub' $P1399 = "83_1272816836.73052" 
     capture_lex $P1399
-    .const 'Sub' $P1326 = "80_1271948660.90108" 
+    .const 'Sub' $P1326 = "80_1272816836.73052" 
     capture_lex $P1326
-    .const 'Sub' $P1312 = "79_1271948660.90108" 
+    .const 'Sub' $P1312 = "79_1272816836.73052" 
     capture_lex $P1312
-    .const 'Sub' $P1288 = "78_1271948660.90108" 
+    .const 'Sub' $P1288 = "78_1272816836.73052" 
     capture_lex $P1288
-    .const 'Sub' $P1270 = "77_1271948660.90108" 
+    .const 'Sub' $P1270 = "77_1272816836.73052" 
     capture_lex $P1270
-    .const 'Sub' $P1256 = "76_1271948660.90108" 
+    .const 'Sub' $P1256 = "76_1272816836.73052" 
     capture_lex $P1256
-    .const 'Sub' $P1243 = "75_1271948660.90108" 
+    .const 'Sub' $P1243 = "75_1272816836.73052" 
     capture_lex $P1243
-    .const 'Sub' $P1212 = "74_1271948660.90108" 
+    .const 'Sub' $P1212 = "74_1272816836.73052" 
     capture_lex $P1212
-    .const 'Sub' $P1181 = "73_1271948660.90108" 
+    .const 'Sub' $P1181 = "73_1272816836.73052" 
     capture_lex $P1181
-    .const 'Sub' $P1165 = "72_1271948660.90108" 
+    .const 'Sub' $P1165 = "72_1272816836.73052" 
     capture_lex $P1165
-    .const 'Sub' $P1149 = "71_1271948660.90108" 
+    .const 'Sub' $P1149 = "71_1272816836.73052" 
     capture_lex $P1149
-    .const 'Sub' $P1133 = "70_1271948660.90108" 
+    .const 'Sub' $P1133 = "70_1272816836.73052" 
     capture_lex $P1133
-    .const 'Sub' $P1117 = "69_1271948660.90108" 
+    .const 'Sub' $P1117 = "69_1272816836.73052" 
     capture_lex $P1117
-    .const 'Sub' $P1101 = "68_1271948660.90108" 
+    .const 'Sub' $P1101 = "68_1272816836.73052" 
     capture_lex $P1101
-    .const 'Sub' $P1085 = "67_1271948660.90108" 
+    .const 'Sub' $P1085 = "67_1272816836.73052" 
     capture_lex $P1085
-    .const 'Sub' $P1069 = "66_1271948660.90108" 
+    .const 'Sub' $P1069 = "66_1272816836.73052" 
     capture_lex $P1069
-    .const 'Sub' $P1045 = "65_1271948660.90108" 
+    .const 'Sub' $P1045 = "65_1272816836.73052" 
     capture_lex $P1045
-    .const 'Sub' $P1030 = "64_1271948660.90108" 
+    .const 'Sub' $P1030 = "64_1272816836.73052" 
     capture_lex $P1030
-    .const 'Sub' $P974 = "63_1271948660.90108" 
+    .const 'Sub' $P974 = "63_1272816836.73052" 
     capture_lex $P974
-    .const 'Sub' $P953 = "62_1271948660.90108" 
+    .const 'Sub' $P953 = "62_1272816836.73052" 
     capture_lex $P953
-    .const 'Sub' $P931 = "61_1271948660.90108" 
+    .const 'Sub' $P931 = "61_1272816836.73052" 
     capture_lex $P931
-    .const 'Sub' $P921 = "60_1271948660.90108" 
+    .const 'Sub' $P921 = "60_1272816836.73052" 
     capture_lex $P921
-    .const 'Sub' $P911 = "59_1271948660.90108" 
+    .const 'Sub' $P911 = "59_1272816836.73052" 
     capture_lex $P911
-    .const 'Sub' $P901 = "58_1271948660.90108" 
+    .const 'Sub' $P901 = "58_1272816836.73052" 
     capture_lex $P901
-    .const 'Sub' $P889 = "57_1271948660.90108" 
+    .const 'Sub' $P889 = "57_1272816836.73052" 
     capture_lex $P889
-    .const 'Sub' $P877 = "56_1271948660.90108" 
+    .const 'Sub' $P877 = "56_1272816836.73052" 
     capture_lex $P877
-    .const 'Sub' $P865 = "55_1271948660.90108" 
+    .const 'Sub' $P865 = "55_1272816836.73052" 
     capture_lex $P865
-    .const 'Sub' $P853 = "54_1271948660.90108" 
+    .const 'Sub' $P853 = "54_1272816836.73052" 
     capture_lex $P853
-    .const 'Sub' $P841 = "53_1271948660.90108" 
+    .const 'Sub' $P841 = "53_1272816836.73052" 
     capture_lex $P841
-    .const 'Sub' $P829 = "52_1271948660.90108" 
+    .const 'Sub' $P829 = "52_1272816836.73052" 
     capture_lex $P829
-    .const 'Sub' $P817 = "51_1271948660.90108" 
+    .const 'Sub' $P817 = "51_1272816836.73052" 
     capture_lex $P817
-    .const 'Sub' $P805 = "50_1271948660.90108" 
+    .const 'Sub' $P805 = "50_1272816836.73052" 
     capture_lex $P805
-    .const 'Sub' $P782 = "49_1271948660.90108" 
+    .const 'Sub' $P782 = "49_1272816836.73052" 
     capture_lex $P782
-    .const 'Sub' $P759 = "48_1271948660.90108" 
+    .const 'Sub' $P759 = "48_1272816836.73052" 
     capture_lex $P759
-    .const 'Sub' $P741 = "47_1271948660.90108" 
+    .const 'Sub' $P741 = "47_1272816836.73052" 
     capture_lex $P741
-    .const 'Sub' $P731 = "46_1271948660.90108" 
+    .const 'Sub' $P731 = "46_1272816836.73052" 
     capture_lex $P731
-    .const 'Sub' $P713 = "45_1271948660.90108" 
+    .const 'Sub' $P713 = "45_1272816836.73052" 
     capture_lex $P713
-    .const 'Sub' $P666 = "44_1271948660.90108" 
+    .const 'Sub' $P666 = "44_1272816836.73052" 
     capture_lex $P666
-    .const 'Sub' $P649 = "43_1271948660.90108" 
+    .const 'Sub' $P649 = "43_1272816836.73052" 
     capture_lex $P649
-    .const 'Sub' $P634 = "42_1271948660.90108" 
+    .const 'Sub' $P634 = "42_1272816836.73052" 
     capture_lex $P634
-    .const 'Sub' $P619 = "41_1271948660.90108" 
+    .const 'Sub' $P619 = "41_1272816836.73052" 
     capture_lex $P619
-    .const 'Sub' $P593 = "40_1271948660.90108" 
+    .const 'Sub' $P593 = "40_1272816836.73052" 
     capture_lex $P593
-    .const 'Sub' $P543 = "38_1271948660.90108" 
+    .const 'Sub' $P543 = "38_1272816836.73052" 
     capture_lex $P543
-    .const 'Sub' $P475 = "36_1271948660.90108" 
+    .const 'Sub' $P475 = "36_1272816836.73052" 
     capture_lex $P475
-    .const 'Sub' $P420 = "33_1271948660.90108" 
+    .const 'Sub' $P420 = "33_1272816836.73052" 
     capture_lex $P420
-    .const 'Sub' $P405 = "32_1271948660.90108" 
+    .const 'Sub' $P405 = "32_1272816836.73052" 
     capture_lex $P405
-    .const 'Sub' $P379 = "30_1271948660.90108" 
+    .const 'Sub' $P379 = "30_1272816836.73052" 
     capture_lex $P379
-    .const 'Sub' $P362 = "29_1271948660.90108" 
+    .const 'Sub' $P362 = "29_1272816836.73052" 
     capture_lex $P362
-    .const 'Sub' $P340 = "28_1271948660.90108" 
+    .const 'Sub' $P340 = "28_1272816836.73052" 
     capture_lex $P340
-    .const 'Sub' $P308 = "27_1271948660.90108" 
+    .const 'Sub' $P308 = "27_1272816836.73052" 
     capture_lex $P308
-    .const 'Sub' $P54 = "14_1271948660.90108" 
+    .const 'Sub' $P54 = "14_1272816836.73052" 
     capture_lex $P54
-    .const 'Sub' $P21 = "13_1271948660.90108" 
+    .const 'Sub' $P21 = "13_1272816836.73052" 
     capture_lex $P21
-    .const 'Sub' $P16 = "12_1271948660.90108" 
+    .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_1271948660.90108" 
+    .const 'Sub' $P16 = "12_1272816836.73052" 
     capture_lex $P16
     .lex "INIT", $P16
 .annotate "line", 479
-    .const 'Sub' $P21 = "13_1271948660.90108" 
+    .const 'Sub' $P21 = "13_1272816836.73052" 
     capture_lex $P21
     .lex "buildsub", $P21
 .annotate "line", 496
-    .const 'Sub' $P54 = "14_1271948660.90108" 
+    .const 'Sub' $P54 = "14_1272816836.73052" 
     capture_lex $P54
     .lex "capnames", $P54
 .annotate "line", 562
-    .const 'Sub' $P308 = "27_1271948660.90108" 
+    .const 'Sub' $P308 = "27_1272816836.73052" 
     capture_lex $P308
     .lex "backmod", $P308
 .annotate "line", 569
-    .const 'Sub' $P340 = "28_1271948660.90108" 
+    .const 'Sub' $P340 = "28_1272816836.73052" 
     capture_lex $P340
     .lex "subrule_alias", $P340
 .annotate "line", 4
@@ -7329,11 +7329,11 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "INIT"  :subid("12_1271948660.90108") :outer("11_1271948660.90108")
+.sub "INIT"  :subid("12_1272816836.73052") :outer("11_1272816836.73052")
 .annotate "line", 6
     new $P18, 'ExceptionHandler'
     set_addr $P18, control_17
-    $P18."handle_types"(58)
+    $P18."handle_types"(57)
     push_eh $P18
 .annotate "line", 7
 
@@ -7353,14 +7353,14 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "buildsub"  :subid("13_1271948660.90108") :outer("11_1271948660.90108")
+.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
 .annotate "line", 479
     new $P23, 'ExceptionHandler'
     set_addr $P23, control_22
-    $P23."handle_types"(58)
+    $P23."handle_types"(57)
     push_eh $P23
     .lex "$rpast", param_24
     if has_param_25, optparam_92
@@ -7430,23 +7430,23 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "capnames"  :subid("14_1271948660.90108") :outer("11_1271948660.90108")
+.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_1271948660.90108" 
+    .const 'Sub' $P283 = "25_1272816836.73052" 
     capture_lex $P283
-    .const 'Sub' $P220 = "22_1271948660.90108" 
+    .const 'Sub' $P220 = "22_1272816836.73052" 
     capture_lex $P220
-    .const 'Sub' $P178 = "20_1271948660.90108" 
+    .const 'Sub' $P178 = "20_1272816836.73052" 
     capture_lex $P178
-    .const 'Sub' $P136 = "18_1271948660.90108" 
+    .const 'Sub' $P136 = "18_1272816836.73052" 
     capture_lex $P136
-    .const 'Sub' $P69 = "15_1271948660.90108" 
+    .const 'Sub' $P69 = "15_1272816836.73052" 
     capture_lex $P69
     new $P56, 'ExceptionHandler'
     set_addr $P56, control_55
-    $P56."handle_types"(58)
+    $P56."handle_types"(57)
     push_eh $P56
     .lex "$ast", param_57
     .lex "$count", param_58
@@ -7498,21 +7498,21 @@
     set $S280, $P279
     iseq $I281, $S280, "quant"
     unless $I281, if_278_end
-    .const 'Sub' $P283 = "25_1271948660.90108" 
+    .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_1271948660.90108" 
+    .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_1271948660.90108" 
+    .const 'Sub' $P178 = "20_1272816836.73052" 
     capture_lex $P178
     $P178()
   if_168_end:
@@ -7526,13 +7526,13 @@
     iter $P130, $P132
     new $P166, 'ExceptionHandler'
     set_addr $P166, loop165_handler
-    $P166."handle_types"(65, 67, 66)
+    $P166."handle_types"(64, 66, 65)
     push_eh $P166
   loop165_test:
     unless $P130, loop165_done
     shift $P134, $P130
   loop165_redo:
-    .const 'Sub' $P136 = "18_1271948660.90108" 
+    .const 'Sub' $P136 = "18_1272816836.73052" 
     capture_lex $P136
     $P136($P134)
   loop165_next:
@@ -7541,8 +7541,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P167, exception, 'type'
-    eq $P167, 65, loop165_next
-    eq $P167, 67, loop165_redo
+    eq $P167, 64, loop165_next
+    eq $P167, 66, loop165_redo
   loop165_done:
     pop_eh 
   for_undef_114:
@@ -7551,7 +7551,7 @@
     goto if_64_end
   if_64:
 .annotate "line", 499
-    .const 'Sub' $P69 = "15_1271948660.90108" 
+    .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_1271948660.90108") :outer("14_1271948660.90108")
+.sub "_block282"  :anon :subid("25_1272816836.73052") :outer("14_1272816836.73052")
 .annotate "line", 551
-    .const 'Sub' $P294 = "26_1271948660.90108" 
+    .const 'Sub' $P294 = "26_1272816836.73052" 
     capture_lex $P294
 .annotate "line", 552
     $P284 = root_new ['parrot';'Hash']
@@ -7600,13 +7600,13 @@
     iter $P289, $P290
     new $P300, 'ExceptionHandler'
     set_addr $P300, loop299_handler
-    $P300."handle_types"(65, 67, 66)
+    $P300."handle_types"(64, 66, 65)
     push_eh $P300
   loop299_test:
     unless $P289, loop299_done
     shift $P292, $P289
   loop299_redo:
-    .const 'Sub' $P294 = "26_1271948660.90108" 
+    .const 'Sub' $P294 = "26_1272816836.73052" 
     capture_lex $P294
     $P294($P292)
   loop299_next:
@@ -7615,8 +7615,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P301, exception, 'type'
-    eq $P301, 65, loop299_next
-    eq $P301, 67, loop299_redo
+    eq $P301, 64, loop299_next
+    eq $P301, 66, loop299_redo
   loop299_done:
     pop_eh 
   for_undef_96:
@@ -7636,7 +7636,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block293"  :anon :subid("26_1271948660.90108") :outer("25_1271948660.90108")
+.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_1271948660.90108") :outer("14_1271948660.90108")
+.sub "_block219"  :anon :subid("22_1272816836.73052") :outer("14_1272816836.73052")
 .annotate "line", 534
-    .const 'Sub' $P260 = "24_1271948660.90108" 
+    .const 'Sub' $P260 = "24_1272816836.73052" 
     capture_lex $P260
-    .const 'Sub' $P232 = "23_1271948660.90108" 
+    .const 'Sub' $P232 = "23_1272816836.73052" 
     capture_lex $P232
 .annotate "line", 535
     new $P221, "Undef"
@@ -7689,13 +7689,13 @@
     iter $P227, $P228
     new $P249, 'ExceptionHandler'
     set_addr $P249, loop248_handler
-    $P249."handle_types"(65, 67, 66)
+    $P249."handle_types"(64, 66, 65)
     push_eh $P249
   loop248_test:
     unless $P227, loop248_done
     shift $P230, $P227
   loop248_redo:
-    .const 'Sub' $P232 = "23_1271948660.90108" 
+    .const 'Sub' $P232 = "23_1272816836.73052" 
     capture_lex $P232
     $P232($P230)
   loop248_next:
@@ -7704,8 +7704,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P250, exception, 'type'
-    eq $P250, 65, loop248_next
-    eq $P250, 67, loop248_redo
+    eq $P250, 64, loop248_next
+    eq $P250, 66, loop248_redo
   loop248_done:
     pop_eh 
   for_undef_100:
@@ -7728,13 +7728,13 @@
     iter $P255, $P256
     new $P274, 'ExceptionHandler'
     set_addr $P274, loop273_handler
-    $P274."handle_types"(65, 67, 66)
+    $P274."handle_types"(64, 66, 65)
     push_eh $P274
   loop273_test:
     unless $P255, loop273_done
     shift $P258, $P255
   loop273_redo:
-    .const 'Sub' $P260 = "24_1271948660.90108" 
+    .const 'Sub' $P260 = "24_1272816836.73052" 
     capture_lex $P260
     $P260($P258)
   loop273_next:
@@ -7743,8 +7743,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P275, exception, 'type'
-    eq $P275, 65, loop273_next
-    eq $P275, 67, loop273_redo
+    eq $P275, 64, loop273_next
+    eq $P275, 66, loop273_redo
   loop273_done:
     pop_eh 
   for_undef_104:
@@ -7764,7 +7764,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block231"  :anon :subid("23_1271948660.90108") :outer("22_1271948660.90108")
+.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_1271948660.90108") :outer("22_1271948660.90108")
+.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_1271948660.90108") :outer("14_1271948660.90108")
+.sub "_block177"  :anon :subid("20_1272816836.73052") :outer("14_1272816836.73052")
 .annotate "line", 521
-    .const 'Sub' $P196 = "21_1271948660.90108" 
+    .const 'Sub' $P196 = "21_1272816836.73052" 
     capture_lex $P196
 .annotate "line", 522
     new $P179, "Undef"
@@ -7883,13 +7883,13 @@
     iter $P191, $P192
     new $P213, 'ExceptionHandler'
     set_addr $P213, loop212_handler
-    $P213."handle_types"(65, 67, 66)
+    $P213."handle_types"(64, 66, 65)
     push_eh $P213
   loop212_test:
     unless $P191, loop212_done
     shift $P194, $P191
   loop212_redo:
-    .const 'Sub' $P196 = "21_1271948660.90108" 
+    .const 'Sub' $P196 = "21_1272816836.73052" 
     capture_lex $P196
     $P196($P194)
   loop212_next:
@@ -7898,8 +7898,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P214, exception, 'type'
-    eq $P214, 65, loop212_next
-    eq $P214, 67, loop212_redo
+    eq $P214, 64, loop212_next
+    eq $P214, 66, loop212_redo
   loop212_done:
     pop_eh 
   for_undef_112:
@@ -7909,7 +7909,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block195"  :anon :subid("21_1271948660.90108") :outer("20_1271948660.90108")
+.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_1271948660.90108") :outer("14_1271948660.90108")
+.sub "_block135"  :anon :subid("18_1272816836.73052") :outer("14_1272816836.73052")
     .param pmc param_138
 .annotate "line", 513
-    .const 'Sub' $P147 = "19_1271948660.90108" 
+    .const 'Sub' $P147 = "19_1272816836.73052" 
     capture_lex $P147
 .annotate "line", 514
     $P137 = root_new ['parrot';'Hash']
@@ -7969,13 +7969,13 @@
     iter $P142, $P143
     new $P161, 'ExceptionHandler'
     set_addr $P161, loop160_handler
-    $P161."handle_types"(65, 67, 66)
+    $P161."handle_types"(64, 66, 65)
     push_eh $P161
   loop160_test:
     unless $P142, loop160_done
     shift $P145, $P142
   loop160_redo:
-    .const 'Sub' $P147 = "19_1271948660.90108" 
+    .const 'Sub' $P147 = "19_1272816836.73052" 
     capture_lex $P147
     $P147($P145)
   loop160_next:
@@ -7984,8 +7984,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P162, exception, 'type'
-    eq $P162, 65, loop160_next
-    eq $P162, 67, loop160_redo
+    eq $P162, 64, loop160_next
+    eq $P162, 66, loop160_redo
   loop160_done:
     pop_eh 
   for_undef_115:
@@ -8005,7 +8005,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block146"  :anon :subid("19_1271948660.90108") :outer("18_1271948660.90108")
+.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_1271948660.90108") :outer("14_1271948660.90108")
+.sub "_block68"  :anon :subid("15_1272816836.73052") :outer("14_1272816836.73052")
 .annotate "line", 499
-    .const 'Sub' $P78 = "16_1271948660.90108" 
+    .const 'Sub' $P78 = "16_1272816836.73052" 
     capture_lex $P78
 .annotate "line", 500
     new $P70, "Undef"
@@ -8062,13 +8062,13 @@
     iter $P72, $P74
     new $P123, 'ExceptionHandler'
     set_addr $P123, loop122_handler
-    $P123."handle_types"(65, 67, 66)
+    $P123."handle_types"(64, 66, 65)
     push_eh $P123
   loop122_test:
     unless $P72, loop122_done
     shift $P76, $P72
   loop122_redo:
-    .const 'Sub' $P78 = "16_1271948660.90108" 
+    .const 'Sub' $P78 = "16_1272816836.73052" 
     capture_lex $P78
     $P78($P76)
   loop122_next:
@@ -8077,8 +8077,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P124, exception, 'type'
-    eq $P124, 65, loop122_next
-    eq $P124, 67, loop122_redo
+    eq $P124, 64, loop122_next
+    eq $P124, 66, loop122_redo
   loop122_done:
     pop_eh 
   for_undef_123:
@@ -8091,10 +8091,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block77"  :anon :subid("16_1271948660.90108") :outer("15_1271948660.90108")
+.sub "_block77"  :anon :subid("16_1272816836.73052") :outer("15_1272816836.73052")
     .param pmc param_80
 .annotate "line", 501
-    .const 'Sub' $P89 = "17_1271948660.90108" 
+    .const 'Sub' $P89 = "17_1272816836.73052" 
     capture_lex $P89
 .annotate "line", 502
     $P79 = root_new ['parrot';'Hash']
@@ -8111,13 +8111,13 @@
     iter $P84, $P85
     new $P110, 'ExceptionHandler'
     set_addr $P110, loop109_handler
-    $P110."handle_types"(65, 67, 66)
+    $P110."handle_types"(64, 66, 65)
     push_eh $P110
   loop109_test:
     unless $P84, loop109_done
     shift $P87, $P84
   loop109_redo:
-    .const 'Sub' $P89 = "17_1271948660.90108" 
+    .const 'Sub' $P89 = "17_1272816836.73052" 
     capture_lex $P89
     $P89($P87)
   loop109_next:
@@ -8126,8 +8126,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P111, exception, 'type'
-    eq $P111, 65, loop109_next
-    eq $P111, 67, loop109_redo
+    eq $P111, 64, loop109_next
+    eq $P111, 66, loop109_redo
   loop109_done:
     pop_eh 
   for_undef_124:
@@ -8166,7 +8166,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block88"  :anon :subid("17_1271948660.90108") :outer("16_1271948660.90108")
+.sub "_block88"  :anon :subid("17_1272816836.73052") :outer("16_1272816836.73052")
     .param pmc param_90
 .annotate "line", 503
     .lex "$_", param_90
@@ -8225,13 +8225,13 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backmod"  :subid("27_1271948660.90108") :outer("11_1271948660.90108")
+.sub "backmod"  :subid("27_1272816836.73052") :outer("11_1272816836.73052")
     .param pmc param_311
     .param pmc param_312
 .annotate "line", 562
     new $P310, 'ExceptionHandler'
     set_addr $P310, control_309
-    $P310."handle_types"(58)
+    $P310."handle_types"(57)
     push_eh $P310
     .lex "$ast", param_311
     .lex "$backmod", param_312
@@ -8299,13 +8299,13 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "subrule_alias"  :subid("28_1271948660.90108") :outer("11_1271948660.90108")
+.sub "subrule_alias"  :subid("28_1272816836.73052") :outer("11_1272816836.73052")
     .param pmc param_343
     .param pmc param_344
 .annotate "line", 569
     new $P342, 'ExceptionHandler'
     set_addr $P342, control_341
-    $P342."handle_types"(58)
+    $P342."handle_types"(57)
     push_eh $P342
     .lex "$past", param_343
     .lex "$name", param_344
@@ -8343,12 +8343,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "arg"  :subid("29_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "arg"  :subid("29_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_365
 .annotate "line", 14
     new $P364, 'ExceptionHandler'
     set_addr $P364, control_363
-    $P364."handle_types"(58)
+    $P364."handle_types"(57)
     push_eh $P364
     .lex "self", self
     .lex "$/", param_365
@@ -8399,14 +8399,14 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "arglist"  :subid("30_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "arglist"  :subid("30_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_382
 .annotate "line", 18
-    .const 'Sub' $P392 = "31_1271948660.90108" 
+    .const 'Sub' $P392 = "31_1272816836.73052" 
     capture_lex $P392
     new $P381, 'ExceptionHandler'
     set_addr $P381, control_380
-    $P381."handle_types"(58)
+    $P381."handle_types"(57)
     push_eh $P381
     .lex "self", self
     .lex "$/", param_382
@@ -8430,13 +8430,13 @@
     iter $P386, $P388
     new $P399, 'ExceptionHandler'
     set_addr $P399, loop398_handler
-    $P399."handle_types"(65, 67, 66)
+    $P399."handle_types"(64, 66, 65)
     push_eh $P399
   loop398_test:
     unless $P386, loop398_done
     shift $P390, $P386
   loop398_redo:
-    .const 'Sub' $P392 = "31_1271948660.90108" 
+    .const 'Sub' $P392 = "31_1272816836.73052" 
     capture_lex $P392
     $P392($P390)
   loop398_next:
@@ -8445,8 +8445,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P400, exception, 'type'
-    eq $P400, 65, loop398_next
-    eq $P400, 67, loop398_redo
+    eq $P400, 64, loop398_next
+    eq $P400, 66, loop398_redo
   loop398_done:
     pop_eh 
   for_undef_143:
@@ -8465,7 +8465,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block391"  :anon :subid("31_1271948660.90108") :outer("30_1271948660.90108")
+.sub "_block391"  :anon :subid("31_1272816836.73052") :outer("30_1272816836.73052")
     .param pmc param_393
 .annotate "line", 20
     .lex "$_", param_393
@@ -8478,12 +8478,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "TOP"  :subid("32_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "TOP"  :subid("32_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_408
 .annotate "line", 24
     new $P407, 'ExceptionHandler'
     set_addr $P407, control_406
-    $P407."handle_types"(58)
+    $P407."handle_types"(57)
     push_eh $P407
     .lex "self", self
     .lex "$/", param_408
@@ -8520,18 +8520,18 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "nibbler"  :subid("33_1271948660.90108") :method :outer("11_1271948660.90108")
+.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_1271948660.90108" 
+    .const 'Sub' $P458 = "35_1272816836.73052" 
     capture_lex $P458
-    .const 'Sub' $P432 = "34_1271948660.90108" 
+    .const 'Sub' $P432 = "34_1272816836.73052" 
     capture_lex $P432
     new $P422, 'ExceptionHandler'
     set_addr $P422, control_421
-    $P422."handle_types"(58)
+    $P422."handle_types"(57)
     push_eh $P422
     .lex "self", self
     .lex "$/", param_423
@@ -8548,7 +8548,7 @@
     set $S429, $P428
     iseq $I430, $S429, "open"
     unless $I430, if_427_end
-    .const 'Sub' $P432 = "34_1271948660.90108" 
+    .const 'Sub' $P432 = "34_1272816836.73052" 
     capture_lex $P432
     $P432()
   if_427_end:
@@ -8605,13 +8605,13 @@
     iter $P452, $P454
     new $P465, 'ExceptionHandler'
     set_addr $P465, loop464_handler
-    $P465."handle_types"(65, 67, 66)
+    $P465."handle_types"(64, 66, 65)
     push_eh $P465
   loop464_test:
     unless $P452, loop464_done
     shift $P456, $P452
   loop464_redo:
-    .const 'Sub' $P458 = "35_1271948660.90108" 
+    .const 'Sub' $P458 = "35_1272816836.73052" 
     capture_lex $P458
     $P458($P456)
   loop464_next:
@@ -8620,8 +8620,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P466, exception, 'type'
-    eq $P466, 65, loop464_next
-    eq $P466, 67, loop464_redo
+    eq $P466, 64, loop464_next
+    eq $P466, 66, loop464_redo
   loop464_done:
     pop_eh 
   for_undef_156:
@@ -8641,7 +8641,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block431"  :anon :subid("34_1271948660.90108") :outer("33_1271948660.90108")
+.sub "_block431"  :anon :subid("34_1272816836.73052") :outer("33_1272816836.73052")
 .annotate "line", 32
     $P433 = root_new ['parrot';'Hash']
     .lex "%old", $P433
@@ -8670,7 +8670,7 @@
     $P438."unshift"($P439)
 .annotate "line", 38
     new $P440, "Exception"
-    set $P440['type'], 58
+    set $P440['type'], 57
     new $P441, "Integer"
     assign $P441, 1
     setattribute $P440, 'payload', $P441
@@ -8681,7 +8681,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block457"  :anon :subid("35_1271948660.90108") :outer("33_1271948660.90108")
+.sub "_block457"  :anon :subid("35_1272816836.73052") :outer("33_1272816836.73052")
     .param pmc param_459
 .annotate "line", 45
     .lex "$_", param_459
@@ -8696,14 +8696,14 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "termish"  :subid("36_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "termish"  :subid("36_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_478
 .annotate "line", 55
-    .const 'Sub' $P491 = "37_1271948660.90108" 
+    .const 'Sub' $P491 = "37_1272816836.73052" 
     capture_lex $P491
     new $P477, 'ExceptionHandler'
     set_addr $P477, control_476
-    $P477."handle_types"(58)
+    $P477."handle_types"(57)
     push_eh $P477
     .lex "self", self
     .lex "$/", param_478
@@ -8736,13 +8736,13 @@
     iter $P485, $P487
     new $P537, 'ExceptionHandler'
     set_addr $P537, loop536_handler
-    $P537."handle_types"(65, 67, 66)
+    $P537."handle_types"(64, 66, 65)
     push_eh $P537
   loop536_test:
     unless $P485, loop536_done
     shift $P489, $P485
   loop536_redo:
-    .const 'Sub' $P491 = "37_1271948660.90108" 
+    .const 'Sub' $P491 = "37_1272816836.73052" 
     capture_lex $P491
     $P491($P489)
   loop536_next:
@@ -8751,8 +8751,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P538, exception, 'type'
-    eq $P538, 65, loop536_next
-    eq $P538, 67, loop536_redo
+    eq $P538, 64, loop536_next
+    eq $P538, 66, loop536_redo
   loop536_done:
     pop_eh 
   for_undef_159:
@@ -8771,7 +8771,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block490"  :anon :subid("37_1271948660.90108") :outer("36_1271948660.90108")
+.sub "_block490"  :anon :subid("37_1272816836.73052") :outer("36_1272816836.73052")
     .param pmc param_493
 .annotate "line", 59
     new $P492, "Undef"
@@ -8898,14 +8898,14 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantified_atom"  :subid("38_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "quantified_atom"  :subid("38_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_546
 .annotate "line", 76
-    .const 'Sub' $P555 = "39_1271948660.90108" 
+    .const 'Sub' $P555 = "39_1272816836.73052" 
     capture_lex $P555
     new $P545, 'ExceptionHandler'
     set_addr $P545, control_544
-    $P545."handle_types"(58)
+    $P545."handle_types"(57)
     push_eh $P545
     .lex "self", self
     .lex "$/", param_546
@@ -8964,7 +8964,7 @@
     goto if_551_end
   if_551:
 .annotate "line", 78
-    .const 'Sub' $P555 = "39_1271948660.90108" 
+    .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_1271948660.90108") :outer("38_1271948660.90108")
+.sub "_block554"  :anon :subid("39_1272816836.73052") :outer("38_1272816836.73052")
 .annotate "line", 80
     new $P556, "Undef"
     .lex "$qast", $P556
@@ -9057,12 +9057,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "atom"  :subid("40_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "atom"  :subid("40_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_596
 .annotate "line", 91
     new $P595, 'ExceptionHandler'
     set_addr $P595, control_594
-    $P595."handle_types"(58)
+    $P595."handle_types"(57)
     push_eh $P595
     .lex "self", self
     .lex "$/", param_596
@@ -9135,12 +9135,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<*>"  :subid("41_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "quantifier:sym<*>"  :subid("41_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_622
 .annotate "line", 101
     new $P621, 'ExceptionHandler'
     set_addr $P621, control_620
-    $P621."handle_types"(58)
+    $P621."handle_types"(57)
     push_eh $P621
     .lex "self", self
     .lex "$/", param_622
@@ -9175,12 +9175,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<+>"  :subid("42_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "quantifier:sym<+>"  :subid("42_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_637
 .annotate "line", 106
     new $P636, 'ExceptionHandler'
     set_addr $P636, control_635
-    $P636."handle_types"(58)
+    $P636."handle_types"(57)
     push_eh $P636
     .lex "self", self
     .lex "$/", param_637
@@ -9215,12 +9215,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<?>"  :subid("43_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "quantifier:sym<?>"  :subid("43_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_652
 .annotate "line", 111
     new $P651, 'ExceptionHandler'
     set_addr $P651, control_650
-    $P651."handle_types"(58)
+    $P651."handle_types"(57)
     push_eh $P651
     .lex "self", self
     .lex "$/", param_652
@@ -9259,12 +9259,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<**>"  :subid("44_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "quantifier:sym<**>"  :subid("44_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_669
 .annotate "line", 117
     new $P668, 'ExceptionHandler'
     set_addr $P668, control_667
-    $P668."handle_types"(58)
+    $P668."handle_types"(57)
     push_eh $P668
     .lex "self", self
     .lex "$/", param_669
@@ -9399,12 +9399,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<ws>"  :subid("45_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "metachar:sym<ws>"  :subid("45_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_716
 .annotate "line", 131
     new $P715, 'ExceptionHandler'
     set_addr $P715, control_714
-    $P715."handle_types"(58)
+    $P715."handle_types"(57)
     push_eh $P715
     .lex "self", self
     .lex "$/", param_716
@@ -9451,12 +9451,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<[ ]>"  :subid("46_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "metachar:sym<[ ]>"  :subid("46_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_734
 .annotate "line", 140
     new $P733, 'ExceptionHandler'
     set_addr $P733, control_732
-    $P733."handle_types"(58)
+    $P733."handle_types"(57)
     push_eh $P733
     .lex "self", self
     .lex "$/", param_734
@@ -9483,12 +9483,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<( )>"  :subid("47_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "metachar:sym<( )>"  :subid("47_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_744
 .annotate "line", 144
     new $P743, 'ExceptionHandler'
     set_addr $P743, control_742
-    $P743."handle_types"(58)
+    $P743."handle_types"(57)
     push_eh $P743
     .lex "self", self
     .lex "$/", param_744
@@ -9531,12 +9531,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<'>"  :subid("48_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "metachar:sym<'>"  :subid("48_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_762
 .annotate "line", 151
     new $P761, 'ExceptionHandler'
     set_addr $P761, control_760
-    $P761."handle_types"(58)
+    $P761."handle_types"(57)
     push_eh $P761
     .lex "self", self
     .lex "$/", param_762
@@ -9587,12 +9587,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<\">"  :subid("49_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "metachar:sym<\">"  :subid("49_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_785
 .annotate "line", 158
     new $P784, 'ExceptionHandler'
     set_addr $P784, control_783
-    $P784."handle_types"(58)
+    $P784."handle_types"(57)
     push_eh $P784
     .lex "self", self
     .lex "$/", param_785
@@ -9643,12 +9643,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<.>"  :subid("50_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "metachar:sym<.>"  :subid("50_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_808
 .annotate "line", 165
     new $P807, 'ExceptionHandler'
     set_addr $P807, control_806
-    $P807."handle_types"(58)
+    $P807."handle_types"(57)
     push_eh $P807
     .lex "self", self
     .lex "$/", param_808
@@ -9674,12 +9674,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<^>"  :subid("51_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "metachar:sym<^>"  :subid("51_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_820
 .annotate "line", 170
     new $P819, 'ExceptionHandler'
     set_addr $P819, control_818
-    $P819."handle_types"(58)
+    $P819."handle_types"(57)
     push_eh $P819
     .lex "self", self
     .lex "$/", param_820
@@ -9705,12 +9705,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<^^>"  :subid("52_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "metachar:sym<^^>"  :subid("52_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_832
 .annotate "line", 175
     new $P831, 'ExceptionHandler'
     set_addr $P831, control_830
-    $P831."handle_types"(58)
+    $P831."handle_types"(57)
     push_eh $P831
     .lex "self", self
     .lex "$/", param_832
@@ -9736,12 +9736,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<$>"  :subid("53_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "metachar:sym<$>"  :subid("53_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_844
 .annotate "line", 180
     new $P843, 'ExceptionHandler'
     set_addr $P843, control_842
-    $P843."handle_types"(58)
+    $P843."handle_types"(57)
     push_eh $P843
     .lex "self", self
     .lex "$/", param_844
@@ -9767,12 +9767,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<$$>"  :subid("54_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "metachar:sym<$$>"  :subid("54_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_856
 .annotate "line", 185
     new $P855, 'ExceptionHandler'
     set_addr $P855, control_854
-    $P855."handle_types"(58)
+    $P855."handle_types"(57)
     push_eh $P855
     .lex "self", self
     .lex "$/", param_856
@@ -9798,12 +9798,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<:::>"  :subid("55_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "metachar:sym<:::>"  :subid("55_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_868
 .annotate "line", 190
     new $P867, 'ExceptionHandler'
     set_addr $P867, control_866
-    $P867."handle_types"(58)
+    $P867."handle_types"(57)
     push_eh $P867
     .lex "self", self
     .lex "$/", param_868
@@ -9829,12 +9829,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<lwb>"  :subid("56_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "metachar:sym<lwb>"  :subid("56_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_880
 .annotate "line", 195
     new $P879, 'ExceptionHandler'
     set_addr $P879, control_878
-    $P879."handle_types"(58)
+    $P879."handle_types"(57)
     push_eh $P879
     .lex "self", self
     .lex "$/", param_880
@@ -9860,12 +9860,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<rwb>"  :subid("57_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "metachar:sym<rwb>"  :subid("57_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_892
 .annotate "line", 200
     new $P891, 'ExceptionHandler'
     set_addr $P891, control_890
-    $P891."handle_types"(58)
+    $P891."handle_types"(57)
     push_eh $P891
     .lex "self", self
     .lex "$/", param_892
@@ -9891,12 +9891,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<bs>"  :subid("58_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "metachar:sym<bs>"  :subid("58_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_904
 .annotate "line", 205
     new $P903, 'ExceptionHandler'
     set_addr $P903, control_902
-    $P903."handle_types"(58)
+    $P903."handle_types"(57)
     push_eh $P903
     .lex "self", self
     .lex "$/", param_904
@@ -9923,12 +9923,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<mod>"  :subid("59_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "metachar:sym<mod>"  :subid("59_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_914
 .annotate "line", 209
     new $P913, 'ExceptionHandler'
     set_addr $P913, control_912
-    $P913."handle_types"(58)
+    $P913."handle_types"(57)
     push_eh $P913
     .lex "self", self
     .lex "$/", param_914
@@ -9955,12 +9955,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<assert>"  :subid("60_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "metachar:sym<assert>"  :subid("60_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_924
 .annotate "line", 213
     new $P923, 'ExceptionHandler'
     set_addr $P923, control_922
-    $P923."handle_types"(58)
+    $P923."handle_types"(57)
     push_eh $P923
     .lex "self", self
     .lex "$/", param_924
@@ -9987,12 +9987,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<~>"  :subid("61_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "metachar:sym<~>"  :subid("61_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_934
 .annotate "line", 217
     new $P933, 'ExceptionHandler'
     set_addr $P933, control_932
-    $P933."handle_types"(58)
+    $P933."handle_types"(57)
     push_eh $P933
     .lex "self", self
     .lex "$/", param_934
@@ -10049,12 +10049,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<{*}>"  :subid("62_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "metachar:sym<{*}>"  :subid("62_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_956
 .annotate "line", 230
     new $P955, 'ExceptionHandler'
     set_addr $P955, control_954
-    $P955."handle_types"(58)
+    $P955."handle_types"(57)
     push_eh $P955
     .lex "self", self
     .lex "$/", param_956
@@ -10110,12 +10110,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<var>"  :subid("63_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "metachar:sym<var>"  :subid("63_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_977
 .annotate "line", 237
     new $P976, 'ExceptionHandler'
     set_addr $P976, control_975
-    $P976."handle_types"(58)
+    $P976."handle_types"(57)
     push_eh $P976
     .lex "self", self
     .lex "$/", param_977
@@ -10270,12 +10270,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<PIR>"  :subid("64_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "metachar:sym<PIR>"  :subid("64_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1033
 .annotate "line", 257
     new $P1032, 'ExceptionHandler'
     set_addr $P1032, control_1031
-    $P1032."handle_types"(58)
+    $P1032."handle_types"(57)
     push_eh $P1032
     .lex "self", self
     .lex "$/", param_1033
@@ -10309,12 +10309,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<w>"  :subid("65_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "backslash:sym<w>"  :subid("65_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1048
 .annotate "line", 265
     new $P1047, 'ExceptionHandler'
     set_addr $P1047, control_1046
-    $P1047."handle_types"(58)
+    $P1047."handle_types"(57)
     push_eh $P1047
     .lex "self", self
     .lex "$/", param_1048
@@ -10375,12 +10375,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<b>"  :subid("66_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "backslash:sym<b>"  :subid("66_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1072
 .annotate "line", 271
     new $P1071, 'ExceptionHandler'
     set_addr $P1071, control_1070
-    $P1071."handle_types"(58)
+    $P1071."handle_types"(57)
     push_eh $P1071
     .lex "self", self
     .lex "$/", param_1072
@@ -10418,12 +10418,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<e>"  :subid("67_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "backslash:sym<e>"  :subid("67_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1088
 .annotate "line", 277
     new $P1087, 'ExceptionHandler'
     set_addr $P1087, control_1086
-    $P1087."handle_types"(58)
+    $P1087."handle_types"(57)
     push_eh $P1087
     .lex "self", self
     .lex "$/", param_1088
@@ -10461,12 +10461,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<f>"  :subid("68_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "backslash:sym<f>"  :subid("68_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1104
 .annotate "line", 283
     new $P1103, 'ExceptionHandler'
     set_addr $P1103, control_1102
-    $P1103."handle_types"(58)
+    $P1103."handle_types"(57)
     push_eh $P1103
     .lex "self", self
     .lex "$/", param_1104
@@ -10504,12 +10504,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<h>"  :subid("69_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "backslash:sym<h>"  :subid("69_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1120
 .annotate "line", 289
     new $P1119, 'ExceptionHandler'
     set_addr $P1119, control_1118
-    $P1119."handle_types"(58)
+    $P1119."handle_types"(57)
     push_eh $P1119
     .lex "self", self
     .lex "$/", param_1120
@@ -10547,12 +10547,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<r>"  :subid("70_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "backslash:sym<r>"  :subid("70_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1136
 .annotate "line", 295
     new $P1135, 'ExceptionHandler'
     set_addr $P1135, control_1134
-    $P1135."handle_types"(58)
+    $P1135."handle_types"(57)
     push_eh $P1135
     .lex "self", self
     .lex "$/", param_1136
@@ -10590,12 +10590,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<t>"  :subid("71_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "backslash:sym<t>"  :subid("71_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1152
 .annotate "line", 301
     new $P1151, 'ExceptionHandler'
     set_addr $P1151, control_1150
-    $P1151."handle_types"(58)
+    $P1151."handle_types"(57)
     push_eh $P1151
     .lex "self", self
     .lex "$/", param_1152
@@ -10633,12 +10633,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<v>"  :subid("72_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "backslash:sym<v>"  :subid("72_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1168
 .annotate "line", 307
     new $P1167, 'ExceptionHandler'
     set_addr $P1167, control_1166
-    $P1167."handle_types"(58)
+    $P1167."handle_types"(57)
     push_eh $P1167
     .lex "self", self
     .lex "$/", param_1168
@@ -10676,12 +10676,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<o>"  :subid("73_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "backslash:sym<o>"  :subid("73_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1184
 .annotate "line", 314
     new $P1183, 'ExceptionHandler'
     set_addr $P1183, control_1182
-    $P1183."handle_types"(58)
+    $P1183."handle_types"(57)
     push_eh $P1183
     .lex "self", self
     .lex "$/", param_1184
@@ -10759,12 +10759,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<x>"  :subid("74_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "backslash:sym<x>"  :subid("74_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1215
 .annotate "line", 323
     new $P1214, 'ExceptionHandler'
     set_addr $P1214, control_1213
-    $P1214."handle_types"(58)
+    $P1214."handle_types"(57)
     push_eh $P1214
     .lex "self", self
     .lex "$/", param_1215
@@ -10842,12 +10842,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<c>"  :subid("75_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "backslash:sym<c>"  :subid("75_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1246
 .annotate "line", 332
     new $P1245, 'ExceptionHandler'
     set_addr $P1245, control_1244
-    $P1245."handle_types"(58)
+    $P1245."handle_types"(57)
     push_eh $P1245
     .lex "self", self
     .lex "$/", param_1246
@@ -10877,12 +10877,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<misc>"  :subid("76_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "backslash:sym<misc>"  :subid("76_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1259
 .annotate "line", 336
     new $P1258, 'ExceptionHandler'
     set_addr $P1258, control_1257
-    $P1258."handle_types"(58)
+    $P1258."handle_types"(57)
     push_eh $P1258
     .lex "self", self
     .lex "$/", param_1259
@@ -10910,12 +10910,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<?>"  :subid("77_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "assertion:sym<?>"  :subid("77_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1273
 .annotate "line", 342
     new $P1272, 'ExceptionHandler'
     set_addr $P1272, control_1271
-    $P1272."handle_types"(58)
+    $P1272."handle_types"(57)
     push_eh $P1272
     .lex "self", self
     .lex "$/", param_1273
@@ -10970,12 +10970,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<!>"  :subid("78_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "assertion:sym<!>"  :subid("78_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1291
 .annotate "line", 352
     new $P1290, 'ExceptionHandler'
     set_addr $P1290, control_1289
-    $P1290."handle_types"(58)
+    $P1290."handle_types"(57)
     push_eh $P1290
     .lex "self", self
     .lex "$/", param_1291
@@ -11038,12 +11038,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<method>"  :subid("79_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "assertion:sym<method>"  :subid("79_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1315
 .annotate "line", 365
     new $P1314, 'ExceptionHandler'
     set_addr $P1314, control_1313
-    $P1314."handle_types"(58)
+    $P1314."handle_types"(57)
     push_eh $P1314
     .lex "self", self
     .lex "$/", param_1315
@@ -11081,16 +11081,16 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<name>"  :subid("80_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "assertion:sym<name>"  :subid("80_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1329
 .annotate "line", 372
-    .const 'Sub' $P1387 = "82_1271948660.90108" 
+    .const 'Sub' $P1387 = "82_1272816836.73052" 
     capture_lex $P1387
-    .const 'Sub' $P1351 = "81_1271948660.90108" 
+    .const 'Sub' $P1351 = "81_1272816836.73052" 
     capture_lex $P1351
     new $P1328, 'ExceptionHandler'
     set_addr $P1328, control_1327
-    $P1328."handle_types"(58)
+    $P1328."handle_types"(57)
     push_eh $P1328
     .lex "self", self
     .lex "$/", param_1329
@@ -11176,13 +11176,13 @@
     iter $P1378, $P1383
     new $P1393, 'ExceptionHandler'
     set_addr $P1393, loop1392_handler
-    $P1393."handle_types"(65, 67, 66)
+    $P1393."handle_types"(64, 66, 65)
     push_eh $P1393
   loop1392_test:
     unless $P1378, loop1392_done
     shift $P1385, $P1378
   loop1392_redo:
-    .const 'Sub' $P1387 = "82_1271948660.90108" 
+    .const 'Sub' $P1387 = "82_1272816836.73052" 
     capture_lex $P1387
     $P1387($P1385)
   loop1392_next:
@@ -11191,8 +11191,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P1394, exception, 'type'
-    eq $P1394, 65, loop1392_next
-    eq $P1394, 67, loop1392_redo
+    eq $P1394, 64, loop1392_next
+    eq $P1394, 66, loop1392_redo
   loop1392_done:
     pop_eh 
   for_undef_316:
@@ -11222,7 +11222,7 @@
     goto if_1346_end
   if_1346:
 .annotate "line", 379
-    .const 'Sub' $P1351 = "81_1271948660.90108" 
+    .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_1271948660.90108") :outer("80_1271948660.90108")
+.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_1271948660.90108") :outer("80_1271948660.90108")
+.sub "_block1350"  :anon :subid("81_1272816836.73052") :outer("80_1272816836.73052")
 .annotate "line", 380
     new $P1352, "Undef"
     .lex "$regexsym", $P1352
@@ -11306,14 +11306,14 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<[>"  :subid("83_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "assertion:sym<[>"  :subid("83_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1402
 .annotate "line", 407
-    .const 'Sub' $P1437 = "84_1271948660.90108" 
+    .const 'Sub' $P1437 = "84_1272816836.73052" 
     capture_lex $P1437
     new $P1401, 'ExceptionHandler'
     set_addr $P1401, control_1400
-    $P1401."handle_types"(58)
+    $P1401."handle_types"(57)
     push_eh $P1401
     .lex "self", self
     .lex "$/", param_1402
@@ -11391,7 +11391,7 @@
 .annotate "line", 420
     new $P1461, 'ExceptionHandler'
     set_addr $P1461, loop1460_handler
-    $P1461."handle_types"(65, 67, 66)
+    $P1461."handle_types"(64, 66, 65)
     push_eh $P1461
   loop1460_test:
     find_lex $P1431, "$i"
@@ -11401,7 +11401,7 @@
     islt $I1435, $N1432, $N1434
     unless $I1435, loop1460_done
   loop1460_redo:
-    .const 'Sub' $P1437 = "84_1271948660.90108" 
+    .const 'Sub' $P1437 = "84_1272816836.73052" 
     capture_lex $P1437
     $P1437()
   loop1460_next:
@@ -11410,8 +11410,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P1462, exception, 'type'
-    eq $P1462, 65, loop1460_next
-    eq $P1462, 67, loop1460_redo
+    eq $P1462, 64, loop1460_next
+    eq $P1462, 66, loop1460_redo
   loop1460_done:
     pop_eh 
 .annotate "line", 431
@@ -11429,7 +11429,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1436"  :anon :subid("84_1271948660.90108") :outer("83_1271948660.90108")
+.sub "_block1436"  :anon :subid("84_1272816836.73052") :outer("83_1272816836.73052")
 .annotate "line", 421
     new $P1438, "Undef"
     .lex "$ast", $P1438
@@ -11480,16 +11480,16 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "cclass_elem"  :subid("85_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "cclass_elem"  :subid("85_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1470
 .annotate "line", 434
-    .const 'Sub' $P1495 = "87_1271948660.90108" 
+    .const 'Sub' $P1495 = "87_1272816836.73052" 
     capture_lex $P1495
-    .const 'Sub' $P1479 = "86_1271948660.90108" 
+    .const 'Sub' $P1479 = "86_1272816836.73052" 
     capture_lex $P1479
     new $P1469, 'ExceptionHandler'
     set_addr $P1469, control_1468
-    $P1469."handle_types"(58)
+    $P1469."handle_types"(57)
     push_eh $P1469
     .lex "self", self
     .lex "$/", param_1470
@@ -11528,13 +11528,13 @@
     iter $P1489, $P1491
     new $P1521, 'ExceptionHandler'
     set_addr $P1521, loop1520_handler
-    $P1521."handle_types"(65, 67, 66)
+    $P1521."handle_types"(64, 66, 65)
     push_eh $P1521
   loop1520_test:
     unless $P1489, loop1520_done
     shift $P1493, $P1489
   loop1520_redo:
-    .const 'Sub' $P1495 = "87_1271948660.90108" 
+    .const 'Sub' $P1495 = "87_1272816836.73052" 
     capture_lex $P1495
     $P1495($P1493)
   loop1520_next:
@@ -11543,8 +11543,8 @@
     .local pmc exception 
     .get_results (exception) 
     getattribute $P1522, exception, 'type'
-    eq $P1522, 65, loop1520_next
-    eq $P1522, 67, loop1520_redo
+    eq $P1522, 64, loop1520_next
+    eq $P1522, 66, loop1520_redo
   loop1520_done:
     pop_eh 
   for_undef_333:
@@ -11558,7 +11558,7 @@
     goto if_1475_end
   if_1475:
 .annotate "line", 437
-    .const 'Sub' $P1479 = "86_1271948660.90108" 
+    .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_1271948660.90108") :outer("85_1271948660.90108")
+.sub "_block1494"  :anon :subid("87_1272816836.73052") :outer("85_1272816836.73052")
     .param pmc param_1496
 .annotate "line", 441
-    .const 'Sub' $P1502 = "88_1271948660.90108" 
+    .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_1271948660.90108" 
+    .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_1271948660.90108") :outer("87_1271948660.90108")
+.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_1271948660.90108") :outer("85_1271948660.90108")
+.sub "_block1478"  :anon :subid("86_1272816836.73052") :outer("85_1272816836.73052")
 .annotate "line", 438
     new $P1480, "Undef"
     .lex "$name", $P1480
@@ -11725,12 +11725,12 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "mod_internal"  :subid("89_1271948660.90108") :method :outer("11_1271948660.90108")
+.sub "mod_internal"  :subid("89_1272816836.73052") :method :outer("11_1272816836.73052")
     .param pmc param_1539
 .annotate "line", 472
     new $P1538, 'ExceptionHandler'
     set_addr $P1538, control_1537
-    $P1538."handle_types"(58)
+    $P1538."handle_types"(57)
     push_eh $P1538
     .lex "self", self
     .lex "$/", param_1539

Modified: branches/pbc_frozen_strings1/ext/nqp-rx/src/stage0/Regex-s0.pir
==============================================================================
--- branches/pbc_frozen_strings1/ext/nqp-rx/src/stage0/Regex-s0.pir	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/ext/nqp-rx/src/stage0/Regex-s0.pir	Sun May  2 22:14:53 2010	(r46220)
@@ -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

Modified: branches/pbc_frozen_strings1/include/parrot/interpreter.h
==============================================================================
--- branches/pbc_frozen_strings1/include/parrot/interpreter.h	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/include/parrot/interpreter.h	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/include/parrot/io.h
==============================================================================
--- branches/pbc_frozen_strings1/include/parrot/io.h	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/include/parrot/io.h	Sun May  2 22:14:53 2010	(r46220)
@@ -495,7 +495,7 @@
 
 size_t Parrot_io_write_buffer(PARROT_INTERP,
     ARGMOD(PMC *filehandle),
-    ARGIN(STRING *s))
+    ARGIN(const STRING *s))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
@@ -552,12 +552,11 @@
 
 size_t Parrot_io_write_utf8(PARROT_INTERP,
     ARGMOD(PMC *filehandle),
-    ARGMOD(STRING *s))
+    ARGIN(const STRING *s))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
-        FUNC_MODIFIES(*filehandle)
-        FUNC_MODIFIES(*s);
+        FUNC_MODIFIES(*filehandle);
 
 #define ASSERT_ARGS_Parrot_io_read_utf8 __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \

Modified: branches/pbc_frozen_strings1/include/parrot/io_portable.h
==============================================================================
--- branches/pbc_frozen_strings1/include/parrot/io_portable.h	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/include/parrot/io_portable.h	Sun May  2 22:14:53 2010	(r46220)
@@ -36,7 +36,9 @@
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*filehandle);
 
-INTVAL Parrot_io_flush_portable(SHIM_INTERP, SHIM(PMC *filehandle));
+INTVAL Parrot_io_flush_portable(SHIM_INTERP, ARGIN(PMC *filehandle))
+        __attribute__nonnull__(2);
+
 INTVAL Parrot_io_getblksize_portable(PIOHANDLE fptr);
 INTVAL Parrot_io_init_portable(PARROT_INTERP)
         __attribute__nonnull__(1);
@@ -72,9 +74,10 @@
         __attribute__nonnull__(3);
 
 size_t Parrot_io_read_portable(PARROT_INTERP,
-    SHIM(PMC *filehandle),
+    ARGIN(PMC *filehandle),
     ARGIN(STRING **buf))
         __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
         __attribute__nonnull__(3);
 
 PIOOFF_T Parrot_io_seek_portable(PARROT_INTERP,
@@ -91,11 +94,10 @@
 
 size_t Parrot_io_write_portable(PARROT_INTERP,
     ARGIN(PMC *filehandle),
-    ARGMOD(STRING *s))
+    ARGIN(const STRING *s))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        FUNC_MODIFIES(*s);
+        __attribute__nonnull__(3);
 
 #define ASSERT_ARGS_Parrot_io_close_portable __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
@@ -103,7 +105,8 @@
 #define ASSERT_ARGS_Parrot_io_fdopen_portable __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(filehandle))
-#define ASSERT_ARGS_Parrot_io_flush_portable __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_Parrot_io_flush_portable __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(filehandle))
 #define ASSERT_ARGS_Parrot_io_getblksize_portable __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_Parrot_io_init_portable __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
@@ -122,6 +125,7 @@
     , PARROT_ASSERT_ARG(buf))
 #define ASSERT_ARGS_Parrot_io_read_portable __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(filehandle) \
     , PARROT_ASSERT_ARG(buf))
 #define ASSERT_ARGS_Parrot_io_seek_portable __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \

Modified: branches/pbc_frozen_strings1/include/parrot/io_unix.h
==============================================================================
--- branches/pbc_frozen_strings1/include/parrot/io_unix.h	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/include/parrot/io_unix.h	Sun May  2 22:14:53 2010	(r46220)
@@ -117,11 +117,10 @@
 
 size_t Parrot_io_write_unix(PARROT_INTERP,
     ARGIN(PMC *filehandle),
-    ARGMOD(STRING *s))
+    ARGIN(const STRING *s))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        FUNC_MODIFIES(*s);
+        __attribute__nonnull__(3);
 
 #define ASSERT_ARGS_Parrot_io_async_unix __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \

Modified: branches/pbc_frozen_strings1/include/parrot/io_win32.h
==============================================================================
--- branches/pbc_frozen_strings1/include/parrot/io_win32.h	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/include/parrot/io_win32.h	Sun May  2 22:14:53 2010	(r46220)
@@ -110,7 +110,7 @@
 
 size_t Parrot_io_write_win32(PARROT_INTERP,
     ARGIN(PMC *filehandle),
-    ARGIN(STRING *s))
+    ARGIN(const STRING *s))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3);

Modified: branches/pbc_frozen_strings1/include/parrot/misc.h
==============================================================================
--- branches/pbc_frozen_strings1/include/parrot/misc.h	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/include/parrot/misc.h	Sun May  2 22:14:53 2010	(r46220)
@@ -306,11 +306,12 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 STRING * Parrot_sprintf_format(PARROT_INTERP,
-    ARGIN(STRING *pat),
-    ARGIN(SPRINTF_OBJ *obj))
+    ARGIN(const STRING *pat),
+    ARGMOD(SPRINTF_OBJ *obj))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
-        __attribute__nonnull__(3);
+        __attribute__nonnull__(3)
+        FUNC_MODIFIES(*obj);
 
 #define ASSERT_ARGS_Parrot_sprintf_format __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \

Modified: branches/pbc_frozen_strings1/include/parrot/pmc_freeze.h
==============================================================================
--- branches/pbc_frozen_strings1/include/parrot/pmc_freeze.h	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/include/parrot/pmc_freeze.h	Sun May  2 22:14:53 2010	(r46220)
@@ -115,7 +115,7 @@
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
 STRING* Parrot_freeze(PARROT_INTERP, ARGIN(PMC *pmc))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
@@ -140,7 +140,6 @@
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
 UINTVAL Parrot_freeze_size(PARROT_INTERP, ARGIN(PMC *pmc))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
@@ -153,14 +152,14 @@
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
 PMC* Parrot_thaw(PARROT_INTERP, ARGIN(STRING *image))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
 PMC* Parrot_thaw_constants(PARROT_INTERP, ARGIN(STRING *image))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);

Modified: branches/pbc_frozen_strings1/include/parrot/string_funcs.h
==============================================================================
--- branches/pbc_frozen_strings1/include/parrot/string_funcs.h	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/include/parrot/string_funcs.h	Sun May  2 22:14:53 2010	(r46220)
@@ -82,10 +82,9 @@
 
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
-STRING * Parrot_str_chopn(PARROT_INTERP, ARGMOD(STRING *s), INTVAL n)
+STRING * Parrot_str_chopn(PARROT_INTERP, ARGIN(const STRING *s), INTVAL n)
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*s);
+        __attribute__nonnull__(2);
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
@@ -97,7 +96,7 @@
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
-STRING * Parrot_str_compose(PARROT_INTERP, ARGIN_NULLOK(STRING *src))
+STRING * Parrot_str_compose(PARROT_INTERP, ARGIN_NULLOK(const STRING *src))
         __attribute__nonnull__(1);
 
 PARROT_EXPORT
@@ -143,7 +142,7 @@
 PARROT_WARN_UNUSED_RESULT
 INTVAL Parrot_str_find_cclass(PARROT_INTERP,
     INTVAL flags,
-    ARGIN_NULLOK(STRING *s),
+    ARGIN_NULLOK(const STRING *s),
     UINTVAL offset,
     UINTVAL count)
         __attribute__nonnull__(1);
@@ -162,7 +161,7 @@
 PARROT_WARN_UNUSED_RESULT
 INTVAL Parrot_str_find_not_cclass(PARROT_INTERP,
     INTVAL flags,
-    ARGIN_NULLOK(STRING *s),
+    ARGIN_NULLOK(const STRING *s),
     UINTVAL offset,
     UINTVAL count)
         __attribute__nonnull__(1);
@@ -325,7 +324,7 @@
 PARROT_CANNOT_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
 STRING * Parrot_str_substr(PARROT_INTERP,
-    ARGIN_NULLOK(STRING *src),
+    ARGIN_NULLOK(const STRING *src),
     INTVAL offset,
     INTVAL length)
         __attribute__nonnull__(1);
@@ -432,8 +431,9 @@
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
-INTVAL string_ord(PARROT_INTERP, ARGIN_NULLOK(const STRING *s), INTVAL idx)
-        __attribute__nonnull__(1);
+INTVAL string_ord(PARROT_INTERP, ARGIN(const STRING *s), INTVAL idx)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
@@ -605,7 +605,8 @@
 #define ASSERT_ARGS_string_max_bytes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(s))
 #define ASSERT_ARGS_string_ord __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(s))
 #define ASSERT_ARGS_string_primary_encoding_for_representation \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))

Modified: branches/pbc_frozen_strings1/include/parrot/thr_windows.h
==============================================================================
--- branches/pbc_frozen_strings1/include/parrot/thr_windows.h	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/include/parrot/thr_windows.h	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/include/parrot/thread.h
==============================================================================
--- branches/pbc_frozen_strings1/include/parrot/thread.h	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/include/parrot/thread.h	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/lib/Parrot/Pmc2c/Attribute.pm
==============================================================================
--- branches/pbc_frozen_strings1/lib/Parrot/Pmc2c/Attribute.pm	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/lib/Parrot/Pmc2c/Attribute.pm	Sun May  2 22:14:53 2010	(r46220)
@@ -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

Copied: branches/pbc_frozen_strings1/ports/mandriva/2.3.0/parrot-2.3.0-remove_md2_upstream_r45824.patch (from r46219, trunk/ports/mandriva/2.3.0/parrot-2.3.0-remove_md2_upstream_r45824.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pbc_frozen_strings1/ports/mandriva/2.3.0/parrot-2.3.0-remove_md2_upstream_r45824.patch	Sun May  2 22:14:53 2010	(r46220, copy of r46219, trunk/ports/mandriva/2.3.0/parrot-2.3.0-remove_md2_upstream_r45824.patch)
@@ -0,0 +1,42 @@
+Index: trunk/config/gen/makefiles/dynpmc.in
+===================================================================
+--- trunk/config/gen/makefiles/dynpmc.in	(revision 44649)
++++ trunk/config/gen/makefiles/dynpmc.in	(revision 45824)
+@@ -39,5 +39,4 @@
+ 
+ PMCS_DIGEST = \
+-  md2.pmc \
+   md4.pmc \
+   md5.pmc \
+@@ -49,5 +48,4 @@
+ 
+ OBJS_DIGEST = \
+-  md2$(O) \
+   md4$(O) \
+   md5$(O) \
+@@ -202,13 +200,4 @@
+ 	$(PMC2C) --library digest_group --c $(PMCS_DIGEST)
+ 
+-md2$(O): md2.c
+-	$(CC) -c @cc_o_out at md2$(O) $(INCLUDES) $(CFLAGS) md2.c
+-
+-md2.c: md2.dump
+-	$(PMC2CC) md2.pmc
+-
+-md2.dump: md2.pmc
+-	$(PMC2CD) md2.pmc
+-
+ md4$(O): md4.c
+ 	$(CC) -c @cc_o_out at md4$(O) $(INCLUDES) $(CFLAGS) md4.c
+Index: trunk/config/gen/crypto.pm
+===================================================================
+--- trunk/config/gen/crypto.pm	(revision 42949)
++++ trunk/config/gen/crypto.pm	(revision 45824)
+@@ -28,7 +28,4 @@
+     $data{result}      = q{};
+     $data{digest}      = {
+-        MD2         => {
+-            md_result => 'ab4f496bfb2a530b219ff33031fe06b0',
+-        },
+         MD4         => {
+             md_result => 'd9130a8164549fe818874806e1c7014b',

Copied: branches/pbc_frozen_strings1/ports/mandriva/2.3.0/parrot.spec (from r46219, trunk/ports/mandriva/2.3.0/parrot.spec)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pbc_frozen_strings1/ports/mandriva/2.3.0/parrot.spec	Sun May  2 22:14:53 2010	(r46220, copy of r46219, trunk/ports/mandriva/2.3.0/parrot.spec)
@@ -0,0 +1,339 @@
+%define name    parrot
+%define version 2.3.0
+%define release %mkrel 2
+
+%define libname        %mklibname %{name}
+%define libname_devel  %mklibname -d %{name} 
+
+%define _requires_exceptions perl(Parrot::Pmc2c::.*)
+%define _provides_exceptions perl(File::Which)
+
+Name:          %name
+Version:       %version
+Release:       %release
+
+Summary:       Parrot Virtual Machine
+License:       Artistic 2.0
+Group:         Development/Perl
+Url:           http://www.parrot.org/
+Source0:       ftp://ftp.parrot.org/pub/parrot/releases/devel/%{version}/%{name}-%{version}.tar.gz
+Patch0:        parrot-2.3.0-remove_md2_upstream_r45824.patch
+
+BuildRequires: gdbm-devel
+BuildRequires: gmp-devel
+BuildRequires: libicu-devel
+BuildRequires: ncurses-devel
+BuildRequires: perl-doc
+BuildRequires: readline-devel
+
+BuildRoot:     %{_tmppath}/%{name}-%{version}-%{release}
+
+%description
+Parrot is a virtual machine designed to efficiently compile and execute 
+bytecode for interpreted languages. Parrot will be the target for the final 
+Perl 6 compiler, and is already usable as a backend for Pugs, as well as 
+variety of other languages
+
+#--
+
+%package -n %libname
+Summary:    Parrot Virtual Machine run time library
+License:    Artistic 2.0
+Group:      Development/Perl
+Provides:   lib%{name} = %{version}-%{release}
+Requires:   %{name} = %{version}-%{release}
+Requires:   %{_libdir}/pkgconfig
+
+%description -n %libname
+Run time library for %{name}.
+
+#--
+
+%package -n %{name}-doc
+Summary:    Parrot Virtual Machine documentation
+License:    Artistic 2.0
+Group:      Development/Perl
+
+%description -n %{name}-doc
+Documentation for %{name}.
+
+#--
+
+%package -n %libname_devel
+Summary:    Parrot Virtual Machine development headers and libraries
+License:    Artistic 2.0
+Group:      Development/Perl
+Provides:   %{name}-devel = %{version}-%{release}
+Requires:   %libname = %{version}
+
+%description -n %libname_devel
+Development files for %{name}.
+
+#--
+
+%package -n %{name}-src
+Summary:    Parrot Virtual Machine sources
+License:    Artistic 2.0
+Group:      Development/Perl
+Provides:   %{name}-src = %{version}-%{release}
+
+%description -n %{name}-src
+Sources of %{name}.
+
+
+%prep
+%setup -q
+%patch0 -p1 -b .md2
+%{__perl} -pi -e 's,"lib/,"%{_lib}/, if (/CONST_STRING\(interp,/)' \
+    src/library.c
+%{__perl} -pi -e "s,'/usr/lib','%{_libdir}',;s,runtime/lib/,runtime/%{_lib}/," \
+    tools/dev/install_files.pl \
+    tools/dev/mk_manifest_and_skip.pl
+
+%build
+%{__perl} Configure.pl \
+    --prefix=%{_usr} \
+    --libdir=%{_libdir} \
+    --sysconfdir=%{_sysconfdir} \
+    --infodir=%{_datadir}/info \
+    --mandir=%{_mandir} \
+    --cc="%{__cc}" \
+    --parrot_is_shared \
+    --lex=/usr/bin/flex \
+    --yacc=/usr/bin/yacc \
+    --libs='-lcurses -lm -lrt'
+
+    #--cxx=%{__cxx} \
+# the following Configure.pl flag makes the compile goes boom
+    #--optimize="$RPM_OPT_FLAGS -maccumulate-outgoing-args" \
+
+%make
+export LD_LIBRARY_PATH=$( pwd )/blib/lib
+%make parrot_utils
+%make installable
+%make html
+
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+export LD_LIBRARY_PATH=$( pwd )/blib/lib
+make install DESTDIR=$RPM_BUILD_ROOT
+
+# Drop the docs so rpm can pick them up itself.
+rm -rf $RPM_BUILD_ROOT/%{_docdir}/parrot
+
+# Force permissions on doc directories.
+find docs examples -type d -exec chmod 755 {} \;
+find docs examples -type f -exec chmod 644 {} \;
+
+# Force permissions on shared libs so they get stripped.
+find $RPM_BUILD_ROOT%{_libdir} -type f \( -name '*.so' -o -name '*.so.*' \) \
+    -exec chmod 755 {} \;
+
+%check
+export LD_LIBRARY_PATH=$( pwd )/blib/lib
+#make test
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%if %mdkversion < 200900
+%post -n %libname -p /sbin/ldconfig
+%endif
+
+%if %mdkversion < 200900
+%postun -n %libname -p /sbin/ldconfig
+%endif
+
+%files
+%defattr(-,root,root,-)
+%doc ChangeLog CREDITS NEWS PBC_COMPAT PLATFORMS README
+%doc RESPONSIBLE_PARTIES TODO
+%exclude %{_bindir}/parrot_config
+%exclude %{_bindir}/parrot_debugger
+%exclude %{_bindir}/pbc_*
+%{_bindir}/*
+
+%files -n %{name}-doc
+%defattr(-,root,root,-)
+%doc docs examples
+
+%files -n %libname
+%defattr(-,root,root,-)
+%{_libdir}/parrot
+%{_libdir}/*.so.*
+
+%files -n %libname_devel
+%defattr(-,root,root,-)
+%{_bindir}/parrot_config
+%{_bindir}/parrot_debugger
+%{_bindir}/pbc_disassemble
+%{_bindir}/pbc_merge
+%{_bindir}/pbc_to_exe
+%{_bindir}/pbc_dump
+%{_includedir}/*
+%{_libdir}/pkgconfig/*
+%{_libdir}/*.so
+%{_libdir}/*.a
+
+%files -n %{name}-src
+%defattr(-,root,root,-)
+/usr/src/parrot
+
+
+%changelog
+* Wed Apr 21 2010 Jérôme Quelin <jquelin at mandriva.org> 2.3.0-2mdv2010.1
++ Revision: 537554
+- update to 2.3.0
+
+* Sun Mar 21 2010 Funda Wang <fwang at mandriva.org> 2.2.0-2mdv2010.1
++ Revision: 526122
+- rebuild for new icu
+
+* Wed Mar 17 2010 Jérôme Quelin <jquelin at mandriva.org> 2.2.0-1mdv2010.1
++ Revision: 523422
+- update to new version 2.2.0
+
+* Fri Feb 19 2010 Jérôme Quelin <jquelin at mandriva.org> 2.1.1-1mdv2010.1
++ Revision: 507974
+- update to new version 2.1.1
+
+* Tue Feb 09 2010 Funda Wang <fwang at mandriva.org> 2.0.0-2mdv2010.1
++ Revision: 503382
+- rebuild for new gmp
+
+* Thu Jan 21 2010 Jérôme Quelin <jquelin at mandriva.org> 2.0.0-1mdv2010.1
++ Revision: 494465
+- update to 2.0.0
+
+* Wed Dec 16 2009 Jérôme Quelin <jquelin at mandriva.org> 1.9.0-2mdv2010.1
++ Revision: 479530
+- bump mkrel
+- remove weird requires
+
+* Wed Dec 16 2009 Jérôme Quelin <jquelin at mandriva.org> 1.9.0-1mdv2010.1
++ Revision: 479220
+- update to new version 1.9.0
+
+* Tue Dec 08 2009 Jérôme Quelin <jquelin at mandriva.org> 1.8.0-5mdv2010.1
++ Revision: 474872
+- splitting -src from -devel
+
+* Tue Dec 08 2009 Jérôme Quelin <jquelin at mandriva.org> 1.8.0-4mdv2010.1
++ Revision: 474853
+- shipping parrot src, needed for rakudo
+
+* Mon Nov 23 2009 Jérôme Quelin <jquelin at mandriva.org> 1.8.0-3mdv2010.1
++ Revision: 469206
+- fix #55891: parrot was providing perl(file::which)
+
+* Wed Nov 18 2009 Jérôme Quelin <jquelin at mandriva.org> 1.8.0-2mdv2010.1
++ Revision: 467209
+- bump mkrel
+- removing a bogus requires auto-extracted
+
+* Tue Nov 17 2009 Jérôme Quelin <jquelin at mandriva.org> 1.8.0-1mdv2010.1
++ Revision: 467002
+- update to new version 1.8.0
+
+* Fri Nov 06 2009 Jérôme Quelin <jquelin at mandriva.org> 1.7.0-1mdv2010.1
++ Revision: 460705
+- update to new version 1.7.0
+
+* Tue Sep 15 2009 Jérôme Quelin <jquelin at mandriva.org> 1.6.0-1mdv2010.0
++ Revision: 443097
+- update to 1.6.0
+
+* Fri Sep 04 2009 Jérôme Quelin <jquelin at mandriva.org> 1.5.0-2mdv2010.0
++ Revision: 431070
+- rebuild
+
+* Sun Aug 23 2009 Jérôme Quelin <jquelin at mandriva.org> 1.5.0-1mdv2010.0
++ Revision: 419770
+- forgot to commit tarball
+- update to 1.5.0
+
+* Wed Jul 22 2009 Jérôme Quelin <jquelin at mandriva.org> 1.4.0-1mdv2010.0
++ Revision: 398641
+- update to 1.4.0
+
+* Thu Jun 18 2009 Jérôme Quelin <jquelin at mandriva.org> 1.3.0-1mdv2010.0
++ Revision: 386942
+- update to new version 1.3.0
+
+* Sun May 31 2009 Funda Wang <fwang at mandriva.org> 1.2.0-2mdv2010.0
++ Revision: 381586
+- rebuild for new icu libmajor
+
+* Sat May 30 2009 Jérôme Quelin <jquelin at mandriva.org> 1.2.0-1mdv2010.0
++ Revision: 381426
+- update to 1.2.0
+
+* Sun Mar 22 2009 Jérôme Quelin <jquelin at mandriva.org> 1.0.0-1mdv2009.1
++ Revision: 360489
+- removing make languages, target has been removed
+- update to 1.0.0
+
+* Wed Mar 11 2009 Jérôme Quelin <jquelin at mandriva.org> 0.9.1-2mdv2009.1
++ Revision: 353832
+- fixing url
+
+* Wed Mar 11 2009 Jérôme Quelin <jquelin at mandriva.org> 0.9.1-1mdv2009.1
++ Revision: 353669
+- Development/Liraries group doesn't exist. using devel/perl
+- adding missing group to fix strange submit error (thanks misc++)
+- fixing rpmlint warnings
+- minor tweak
+- version 0.9.1 - most of specfile taken from upstream project
+
+* Wed Jul 30 2008 Thierry Vignaud <tv at mandriva.org> 0.4.17-4mdv2009.0
++ Revision: 255040
+- rebuild
+- kill re-definition of %%buildroot on Pixel's request
+
+  + Pixel <pixel at mandriva.com>
+    - do not call ldconfig in %%post/%%postun, it is now handled by filetriggers
+
+  + Michael Scherer <misc at mandriva.org>
+    - remove old Obsoletes, prevent rpm to compile
+
+  + Olivier Blin <oblin at mandriva.com>
+    - restore BuildRoot
+
+* Fri Nov 23 2007 Thierry Vignaud <tv at mandriva.org> 0.4.17-2mdv2008.1
++ Revision: 111491
+- rebuild for new libicu
+
+  + Funda Wang <fwang at mandriva.org>
+    - New version 0.4.17
+
+* Sun Jul 15 2007 Funda Wang <fwang at mandriva.org> 0.4.13-2mdv2008.0
++ Revision: 52316
+- Obsoletes old major
+
+* Wed Jun 27 2007 Funda Wang <fwang at mandriva.org> 0.4.13-1mdv2008.0
++ Revision: 44826
+- more BuildRequires
+- remove unneeded(?) .c source files
+- disable patch
+  make reallyinstall
+- New version
+
+
+* Wed Aug 30 2006 Thierry Vignaud <tvignaud at mandriva.com> 0.4.6-1mdv2007.0
+- new release
+
+* Mon May 29 2006 Michael Scherer <misc at mandriva.org> 0.4.4-1mdv2007.0
+- New release 0.4.4
+
+* Tue Apr 18 2006 Michael Scherer <misc at mandriva.org> 0.4.3-1mdk
+- New release 0.4.3
+
+* Fri Mar 24 2006 Michael Scherer <misc at mandriva.org> 0.4.2-1mdk
+- New release 0.4.2
+- patch0 to compile with lib readline
+
+* Sat Feb 11 2006 Michael Scherer <misc at mandriva.org> 0.4.1-1mdk
+- Initial release
+

Deleted: branches/pbc_frozen_strings1/ports/mandriva/parrot.spec.mandriva
==============================================================================
--- branches/pbc_frozen_strings1/ports/mandriva/parrot.spec.mandriva	Sun May  2 22:14:53 2010	(r46219)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,167 +0,0 @@
-%define name    parrot
-%define version 0.9.1
-%define release %mkrel 2
-
-%define libname %mklibname %{name}
-%define libname_devel  %mklibname -d %{name} 
-
-Summary:       Parrot Virtual Machine
-Name:          %name
-Version:       %version
-Release:       %release
-Source0:       ftp://ftp.parrot.org/pub/parrot/releases/devel/%{version}/%{name}-%{version}.tar.gz
-License:       Artistic 2.0
-Group:         Development/Perl
-Url:           http://www.parrot.org/
-BuildRoot:     %{_tmppath}/%{name}-%{version}-%{release}-buildroot
-BuildRequires: readline-devel
-BuildRequires: ncurses-devel
-BuildRequires: gmp-devel
-BuildRequires: gdbm-devel
-BuildRequires: perl-doc
-BuildRequires: libicu-devel
-
-%description
-Parrot is a virtual machine designed to efficiently compile and execute 
-bytecode for interpreted languages. Parrot will be the target for the final 
-Perl 6 compiler, and is already usable as a backend for Pugs, as well as 
-variety of other languages
-
-#--
-
-%package -n %libname
-Summary:    Parrot Virtual Machine run time library
-License:    Artistic 2.0
-Group:      Development/Perl
-Provides:   lib%{name} = %{version}-%{release}
-Requires:       %{name} = %{version}-%{release}
-Requires:       %{_libdir}/pkgconfig
-
-%description -n %libname
-Run time library for %{name}.
-
-#--
-
-%package -n %{name}-doc
-Summary:    Parrot Virtual Machine documentation
-License:    Artistic 2.0
-Group:      Development/Perl
-
-%description -n %{name}-doc
-Documentation for %{name}.
-
-#--
-
-%package -n %libname_devel
-Summary:    Parrot Virtual Machine development headers and libraries
-License:    Artistic 2.0
-Group:      Development/Perl
-Provides:   %{name}-devel = %version-%release
-Requires:   %libname = %version
-
-%description -n %libname_devel
-Development files for %{name}.
-
-%prep
-%setup -q
-
-%{__perl} -pi -e 's,"lib/,"%{_lib}/, if (/CONST_STRING\(interp,/)' \
-    src/library.c
-%{__perl} -pi -e "s,'/usr/lib','%{_libdir}',;s,runtime/lib/,runtime/%{_lib}/," \
-    tools/dev/install_files.pl \
-    tools/dev/mk_manifest_and_skip.pl
-
-%build
-%{__perl} Configure.pl \
-    --prefix=%{_usr} \
-    --libdir=%{_libdir} \
-    --sysconfdir=%{_sysconfdir} \
-    --infodir=%{_datadir}/info \
-    --mandir=%{_mandir} \
-    --cc="%{__cc}" \
-    --cxx=%{__cxx} \
-    --parrot_is_shared \
-    --lex=/usr/bin/flex \
-    --yacc=/usr/bin/yacc \
-    --libs='-lcurses -lm'
-
-# the following Configure.pl flag makes the compile goes boom
-    #--optimize="$RPM_OPT_FLAGS -maccumulate-outgoing-args" \
-
-make
-export LD_LIBRARY_PATH=$( pwd )/blib/lib
-make languages
-make parrot_utils
-make installable
-make html
-
-
-%install
-rm -rf $RPM_BUILD_ROOT
-
-export LD_LIBRARY_PATH=$( pwd )/blib/lib
-make install DESTDIR=$RPM_BUILD_ROOT
-
-# Drop the docs so rpm can pick them up itself.
-rm -rf $RPM_BUILD_ROOT/%{_docdir}/parrot
-
-# Force permissions on doc directories.
-find docs examples -type d -exec chmod 755 {} \;
-find docs examples -type f -exec chmod 644 {} \;
-
-# Force permissions on shared libs so they get stripped.
-find $RPM_BUILD_ROOT%{_libdir} -type f \( -name '*.so' -o -name '*.so.*' \) \
-    -exec chmod 755 {} \;
-
-# These files *probably* aren't needed.
-rm -rf $RPM_BUILD_ROOT%{_usr}/config \
-    $RPM_BUILD_ROOT%{_includedir}/src \
-    $RPM_BUILD_ROOT%{_usr}/src \
-    $RPM_BUILD_ROOT%{_usr}/tools
-
-
-%check
-export LD_LIBRARY_PATH=$( pwd )/blib/lib
-#make test
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%if %mdkversion < 200900
-%post -n %libname -p /sbin/ldconfig
-%endif
-
-%if %mdkversion < 200900
-%postun -n %libname -p /sbin/ldconfig
-%endif
-
-%files
-%defattr(-,root,root,-)
-%doc ChangeLog CREDITS NEWS PBC_COMPAT PLATFORMS README
-%doc RESPONSIBLE_PARTIES TODO
-%exclude %{_bindir}/parrot_config
-%exclude %{_bindir}/parrot_debugger
-%exclude %{_bindir}/pbc_*
-%{_bindir}/*
-
-%files -n %{name}-doc
-%defattr(-,root,root,-)
-%doc docs examples
-
-%files -n %libname
-%defattr(-,root,root,-)
-%{_libdir}/parrot
-%{_libdir}/*.so.*
-
-%files -n %libname_devel
-%defattr(-,root,root,-)
-%{_bindir}/parrot_config
-%{_bindir}/parrot_debugger
-%{_bindir}/pbc_disassemble
-%{_bindir}/pbc_merge
-%{_bindir}/pbc_to_exe
-%{_bindir}/pbc_dump
-%{_includedir}/*
-%{_libdir}/pkgconfig/*
-%_libdir/*.so
-%_libdir/*.a

Copied: branches/pbc_frozen_strings1/runtime/parrot/library/Archive/Tar.pir (from r46219, trunk/runtime/parrot/library/Archive/Tar.pir)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pbc_frozen_strings1/runtime/parrot/library/Archive/Tar.pir	Sun May  2 22:14:53 2010	(r46220, copy of r46219, 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/pbc_frozen_strings1/runtime/parrot/library/P6object.pir
==============================================================================
--- branches/pbc_frozen_strings1/runtime/parrot/library/P6object.pir	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/runtime/parrot/library/P6object.pir	Sun May  2 22:14:53 2010	(r46220)
@@ -251,8 +251,7 @@
 
   parent_proxy:
     ##  iterate over parent's mro and methods, adding them to parrotclass' namespace
-    .local pmc parrotclassns, mroiter, methods, methoditer
-    parrotclassns = parrotclass.'get_namespace'()
+    .local pmc mroiter, methods, methoditer
     $P0 = parentclass.'inspect'('all_parents')
     mroiter = iter $P0
   mro_loop:
@@ -270,18 +269,20 @@
     $I0 = isa methodpmc, 'NCI'
     if $I0 goto method_loop
     # if there's no existing entry, add method directly
-    $P0 = parrotclassns[methodname]
+    push_eh add_method_failed
+    $P0 = inspect parrotclass, 'methods'
+    $P0 = $P0[methodname]
     if null $P0 goto add_method
     # if existing entry isn't a MultiSub, skip it
     $I0 = isa $P0, ['MultiSub']
     unless $I0 goto method_loop
-    push_eh err
-    parrotclassns.'add_sub'(methodname, methodpmc)
-  err:
+    parrotclass.'add_method'(methodname, methodpmc)
     pop_eh
     goto method_loop
   add_method:
-    parrotclassns[methodname] = methodpmc
+    parrotclass.'add_method'(methodname, methodpmc)
+  add_method_failed:
+    pop_eh
     goto method_loop
   mro_end:
 

Modified: branches/pbc_frozen_strings1/runtime/parrot/library/TAP/Harness.pir
==============================================================================
--- branches/pbc_frozen_strings1/runtime/parrot/library/TAP/Harness.pir	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/runtime/parrot/library/TAP/Harness.pir	Sun May  2 22:14:53 2010	(r46220)
@@ -45,7 +45,7 @@
     set_global ['TAP';'Harness'], 'LEGAL_CALLBACK', $P0
 .end
 
-.sub 'init' :vtable :init
+.sub 'init' :vtable :method
     $P0 = get_global ['TAP';'Harness'], 'LEGAL_CALLBACK'
     setattribute self, 'ok_callbacks', $P0
 .end
@@ -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'
@@ -248,7 +247,6 @@
 .namespace ['TAP';'Harness';'Archive']
 
 .sub '' :init :load :anon
-    load_bytecode 'osutils.pbc'
     $P0 = subclass ['TAP';'Harness'], ['TAP';'Harness';'Archive']
     $P0.'add_attribute'('archive_file')
     $P0.'add_attribute'('archive_extra_files')
@@ -296,12 +294,13 @@
 
 .sub 'runtests' :method
     .param pmc files
+    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!"
   L1:
-    .local string archive, dir
-    archive = $P0
+    .local string archive_file, dir
+    archive_file = $P0
     dir = tempdir()
     .local pmc env
     env = new 'Env'
@@ -312,35 +311,22 @@
     .local string current_dir, cmd
     current_dir = cwd()
     chdir(dir)
-    $S0 = self.'_mk_meta'(aggregate)
-    spew('meta.yml', $S0)
+    .local pmc archive
+    archive = new ['Archive';'Tar']
+    archive.'add_files'(files :flat)
+    chdir(current_dir)
+    rmtree(dir)
     $P0 = getattribute self, 'archive_extra_files'
     if null $P0 goto L2
-    $P1 = iter $P0
-  L3:
-    unless $P1 goto L2
-    $S2 = shift $P1
-    $S1 = current_dir . '/'
-    $S1 .= $S2
-    cp($S1, $S2)
-    goto L3
+    archive.'add_files'($P0 :flat)
   L2:
-    $S0 = current_dir
-    $I0 = index $S0, ':'
-    unless $I0 == 1 goto L4
-    $S0 = substr $S0, 2         # remove Windows drive
-  L4:
-    cmd = "tar -cf " . $S0
-    cmd .= "/"
-    $I0 = length archive
-    $I0 -= 3
-    $S0 = substr archive, 0, $I0
-    cmd .= $S0
-    cmd .= " *"
-    system(cmd)
-    chdir(current_dir)
-    gzip($S0)
-    rmtree(dir)
+    $S0 = self.'_mk_meta'(aggregate)
+    archive.'add_data'('meta.yml', $S0)
+    $P0 = loadlib 'gziphandle'
+    $P0 = new 'GzipHandle'
+    $P0.'open'(archive_file, 'wb')
+    archive.'write'($P0)
+    $P0.'close'()
     .return (aggregate)
 .end
 

Modified: branches/pbc_frozen_strings1/runtime/parrot/library/TAP/Parser.pir
==============================================================================
--- branches/pbc_frozen_strings1/runtime/parrot/library/TAP/Parser.pir	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/runtime/parrot/library/TAP/Parser.pir	Sun May  2 22:14:53 2010	(r46220)
@@ -660,7 +660,7 @@
     set_global ['TAP';'Parser'], 'LEGAL_CALLBACK', $P0
 .end
 
-.sub 'init' :vtable :init
+.sub 'init' :vtable :method
     $P0 = new 'ResizableIntegerArray'
     setattribute self, 'skipped', $P0
     $P0 = new 'ResizableIntegerArray'

Modified: branches/pbc_frozen_strings1/runtime/parrot/library/distutils.pir
==============================================================================
--- branches/pbc_frozen_strings1/runtime/parrot/library/distutils.pir	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/runtime/parrot/library/distutils.pir	Sun May  2 22:14:53 2010	(r46220)
@@ -122,11 +122,7 @@
 
 =item smoke
 
-tar, curl
-
-=item sdist_gztar
-
-Some coreutils : tar
+curl
 
 =item sdist_zip
 
@@ -3026,25 +3022,33 @@
     .param pmc kv :slurpy :named
     run_step('manifest', kv :flat :named)
 
+    load_bytecode 'Archive/Tar.pbc'
     $S0 = slurp('MANIFEST')
     $P0 = split "\n", $S0
     $S0 = pop $P0
-    $S0 = get_tarname('.tar.gz', kv :flat :named)
-    $I0 = newer($S0, $P0)
+    .local string archive_file
+    archive_file = get_tarname('.tar.gz', kv :flat :named)
+    $I0 = newer(archive_file, $P0)
     if $I0 goto L1
-    $S0 = get_tarname('', kv :flat :named)
-    copy_sdist($S0, $P0)
-
-    .local string cmd
-    cmd = 'tar -cvf ' . $S0
-    cmd .= '.tar '
-    cmd .= $S0
-    system(cmd, 1 :named('verbose'))
-
-    rmtree($S0)
-
-    $S1 = $S0 . '.tar'
-    gzip($S1)
+    .local pmc archive
+    archive = new ['Archive';'Tar']
+    $P1 = archive.'add_files'($P0 :flat)
+    .local string dir
+    dir = get_tarname('', kv :flat :named)
+  L2:
+    unless $P1 goto L3
+    $P2 = shift $P1
+    $S0 = $P2.'full_path'()
+    $S0 = '/' . $S0
+    $S0 = dir . $S0
+    $P2.'rename'($S0)
+    goto L2
+  L3:
+    $P0 = loadlib 'gziphandle'
+    $P0 = new 'GzipHandle'
+    $P0.'open'(archive_file, 'wb')
+    archive.'write'($P0)
+    $P0.'close'()
   L1:
 .end
 
@@ -3056,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
@@ -3121,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/pbc_frozen_strings1/runtime/parrot/library/osutils.pir
==============================================================================
--- branches/pbc_frozen_strings1/runtime/parrot/library/osutils.pir	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/runtime/parrot/library/osutils.pir	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/call/args.c
==============================================================================
--- branches/pbc_frozen_strings1/src/call/args.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/call/args.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/call/context.c
==============================================================================
--- branches/pbc_frozen_strings1/src/call/context.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/call/context.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/datatypes.c
==============================================================================
--- branches/pbc_frozen_strings1/src/datatypes.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/datatypes.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/debug.c
==============================================================================
--- branches/pbc_frozen_strings1/src/debug.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/debug.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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));

Copied: branches/pbc_frozen_strings1/src/dynpmc/Defines.in (from r46219, trunk/src/dynpmc/Defines.in)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pbc_frozen_strings1/src/dynpmc/Defines.in	Sun May  2 22:14:53 2010	(r46220, copy of r46219, trunk/src/dynpmc/Defines.in)
@@ -0,0 +1,101 @@
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+DYNPMC_TARGETS = \
+#IF(has_zlib):    $(DYNEXT_DIR)/gziphandle$(LOAD_EXT) \
+    $(DYNEXT_DIR)/dynlexpad$(LOAD_EXT) \
+    $(DYNEXT_DIR)/foo_group$(LOAD_EXT) \
+    $(DYNEXT_DIR)/pccmethod_test$(LOAD_EXT) \
+    $(DYNEXT_DIR)/rotest$(LOAD_EXT) \
+    $(DYNEXT_DIR)/rational$(LOAD_EXT) \
+    $(DYNEXT_DIR)/subproxy$(LOAD_EXT)
+
+DYNPMC_FOO = \
+    src/dynpmc/foo.pmc \
+    src/dynpmc/foo2.pmc
+
+DYNPMC_FOO_OBJS = \
+    src/dynpmc/foo$(O) \
+    src/dynpmc/foo2$(O)
+
+DYNPMC_H_FILES = \
+    include/parrot/caches.h \
+    include/parrot/call.h \
+    include/parrot/cclass.h \
+    include/parrot/charset.h \
+    include/parrot/compiler.h \
+    include/parrot/config.h \
+    include/parrot/context.h \
+    include/parrot/core_pmcs.h \
+    include/parrot/core_types.h \
+    include/parrot/datatypes.h \
+    include/parrot/debugger.h \
+    include/parrot/dynext.h \
+    include/parrot/encoding.h \
+    include/parrot/enums.h \
+    include/parrot/exceptions.h \
+    include/parrot/exit.h \
+    include/parrot/extend.h \
+    include/parrot/extend_vtable.h \
+    include/parrot/feature.h \
+    include/parrot/gc_api.h \
+    include/parrot/global.h \
+    include/parrot/global_setup.h \
+    include/parrot/has_header.h \
+    include/parrot/hash.h \
+    include/parrot/hll.h \
+    include/parrot/interpreter.h \
+    include/parrot/io.h \
+    include/parrot/key.h \
+    include/parrot/library.h \
+    include/parrot/longopt.h \
+    include/parrot/memory.h \
+    include/parrot/misc.h \
+    include/parrot/multidispatch.h \
+    include/parrot/nci.h \
+    include/parrot/oo.h \
+    include/parrot/op.h \
+    include/parrot/oplib.h \
+    include/parrot/packfile.h \
+    include/parrot/parrot.h \
+    include/parrot/pbcversion.h \
+    include/parrot/platform.h \
+    include/parrot/platform_interface.h \
+    include/parrot/platform_limits.h \
+    include/parrot/pmc.h \
+    include/parrot/pmc_freeze.h \
+    include/parrot/pobj.h \
+    include/parrot/scheduler.h \
+    include/parrot/settings.h \
+    include/parrot/stat.h \
+    include/parrot/string.h \
+    include/parrot/string_funcs.h \
+    include/parrot/string_primitives.h \
+    include/parrot/sub.h \
+    include/parrot/thread.h \
+    include/parrot/vtable.h \
+    include/parrot/vtables.h \
+    include/parrot/warnings.h \
+    include/pmc/pmc_callcontext.h \
+    include/pmc/pmc_continuation.h \
+    include/pmc/pmc_default.h
+
+#IF(win32 and cc==gcc):LIB_ZLIB = -lz
+#ELSIF(win32):LIB_ZLIB = zlib.lib
+#ELSE:LIB_ZLIB = -lz
+
+DYNPMC_CLEANUPS = \
+    $(DYNPMC_TARGETS) \
+    $(DYNPMC_FOO_OBJS) \
+    src/dynpmc/*.dump \
+    src/dynpmc/pmc_*.h \
+    src/dynpmc/*_group.h \
+    src/dynpmc/*.c \
+#IF(o):    src/dynpmc/*$(O) \
+#IF(win32):    src/dynpmc/*.lib" \
+#IF(win32):    src/dynpmc/*.pdb" \
+#IF(win32):    src/dynpmc/*.ilk" \
+#IF(win32):    src/dynpmc/*.exp" \
+#IF(win32):    src/dynpmc/*.def" \
+#IF(win32):    src/dynpmc/*.manifest" \
+#IF(load_ext):    src/dynpmc/*@load_ext@

Copied: branches/pbc_frozen_strings1/src/dynpmc/Rules.in (from r46219, trunk/src/dynpmc/Rules.in)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pbc_frozen_strings1/src/dynpmc/Rules.in	Sun May  2 22:14:53 2010	(r46220, copy of r46219, trunk/src/dynpmc/Rules.in)
@@ -0,0 +1,108 @@
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+$(DYNEXT_DIR)/dynlexpad$(LOAD_EXT): src/dynpmc/dynlexpad$(O)
+	$(LD)  @ld_out@$(DYNEXT_DIR)/dynlexpad$(LOAD_EXT) src/dynpmc/dynlexpad$(O) $(LINKARGS)
+#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+#IF(cygwin or hpux):   $(CHMOD) 0775 $@
+
+src/dynpmc/dynlexpad$(O): src/dynpmc/dynlexpad.c $(DYNPMC_H_FILES)
+
+src/dynpmc/dynlexpad.c: src/dynpmc/dynlexpad.dump
+	$(PMC2CC) src/dynpmc/dynlexpad.pmc
+
+src/dynpmc/dynlexpad.dump: src/dynpmc/dynlexpad.pmc vtable.dump $(CLASS_O_FILES)
+	$(PMC2CD) src/dynpmc/dynlexpad.pmc
+
+$(DYNEXT_DIR)/foo_group$(LOAD_EXT): $(DYNPMC_FOO_OBJS) src/dynpmc/foo_group$(O)
+	$(LD)  @ld_out@$(DYNEXT_DIR)/foo_group$(LOAD_EXT) src/dynpmc/foo_group$(O) $(DYNPMC_FOO_OBJS) $(LINKARGS)
+#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+#IF(cygwin or hpux):   $(CHMOD) 0775 $@
+
+src/dynpmc/foo_group$(O): src/dynpmc/foo.c src/dynpmc/foo2.c $(DYNPMC_H_FILES)
+
+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)
+
+src/dynpmc/foo.c: src/dynpmc/foo.dump
+	$(PMC2CC) src/dynpmc/foo.pmc
+
+src/dynpmc/foo.dump: src/dynpmc/foo.pmc vtable.dump $(CLASS_O_FILES)
+	$(PMC2CD) src/dynpmc/foo.pmc
+
+src/dynpmc/foo2$(O): src/dynpmc/foo2.c $(DYNPMC_H_FILES)
+
+src/dynpmc/foo2.c: src/dynpmc/foo2.dump src/dynpmc/foo.pmc
+	$(PMC2CC) src/dynpmc/foo2.pmc
+
+src/dynpmc/foo2.dump: src/dynpmc/foo2.pmc src/dynpmc/foo.dump vtable.dump $(CLASS_O_FILES)
+	$(PMC2CD) src/dynpmc/foo2.pmc
+
+$(DYNEXT_DIR)/pccmethod_test$(LOAD_EXT): src/dynpmc/pccmethod_test$(O)
+	$(LD)  @ld_out@$(DYNEXT_DIR)/pccmethod_test$(LOAD_EXT) src/dynpmc/pccmethod_test$(O) $(LINKARGS)
+#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+
+src/dynpmc/pccmethod_test$(O): src/dynpmc/pccmethod_test.c $(DYNPMC_H_FILES)
+
+src/dynpmc/pccmethod_test.c: src/dynpmc/pccmethod_test.dump
+	$(PMC2CC) src/dynpmc/pccmethod_test.pmc
+
+src/dynpmc/pccmethod_test.dump: src/dynpmc/pccmethod_test.pmc vtable.dump $(CLASS_O_FILES)
+	$(PMC2CD) src/dynpmc/pccmethod_test.pmc
+
+$(DYNEXT_DIR)/rotest$(LOAD_EXT): src/dynpmc/rotest$(O)
+	$(LD)  @ld_out@$(DYNEXT_DIR)/rotest$(LOAD_EXT) src/dynpmc/rotest$(O) $(LINKARGS)
+#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+#IF(cygwin or hpux):   $(CHMOD) 0775 $@
+
+src/dynpmc/rotest$(O): src/dynpmc/rotest.c $(DYNPMC_H_FILES)
+
+src/dynpmc/rotest.c: src/dynpmc/rotest.dump
+	$(PMC2CC) src/dynpmc/rotest.pmc
+
+src/dynpmc/rotest.dump: src/dynpmc/rotest.pmc vtable.dump $(CLASS_O_FILES)
+	$(PMC2CD) src/dynpmc/rotest.pmc
+
+$(DYNEXT_DIR)/rational$(LOAD_EXT): src/dynpmc/rational$(O)
+	$(LD)  @ld_out@$(DYNEXT_DIR)/rational$(LOAD_EXT) src/dynpmc/rational$(O) $(LINKARGS)
+#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+#IF(cygwin or hpux):   $(CHMOD) 0775 $@
+
+src/dynpmc/rational$(O): src/dynpmc/rational.c $(DYNPMC_H_FILES)
+
+src/dynpmc/rational.c: src/dynpmc/rational.dump
+	$(PMC2CC) src/dynpmc/rational.pmc
+
+src/dynpmc/rational.dump: src/dynpmc/rational.pmc vtable.dump $(CLASS_O_FILES)
+	$(PMC2CD) src/dynpmc/rational.pmc
+
+$(DYNEXT_DIR)/subproxy$(LOAD_EXT): src/dynpmc/subproxy$(O)
+	$(LD)  @ld_out@$(DYNEXT_DIR)/subproxy$(LOAD_EXT) src/dynpmc/subproxy$(O) $(LINKARGS)
+#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+#IF(cygwin or hpux):   $(CHMOD) 0775 $@
+
+src/dynpmc/subproxy$(O): src/dynpmc/subproxy.c $(DYNPMC_H_FILES)
+
+src/dynpmc/subproxy.c: src/dynpmc/subproxy.dump
+	$(PMC2CC) src/dynpmc/subproxy.pmc
+
+src/dynpmc/subproxy.dump: src/dynpmc/subproxy.pmc vtable.dump $(CLASS_O_FILES)
+	$(PMC2CD) src/dynpmc/subproxy.pmc
+
+$(DYNEXT_DIR)/gziphandle$(LOAD_EXT): src/dynpmc/gziphandle$(O)
+	$(LD)  @ld_out@$(DYNEXT_DIR)/gziphandle$(LOAD_EXT) src/dynpmc/gziphandle$(O) $(LINKARGS) $(LIB_ZLIB)
+#IF(win32):	if exist $@.manifest mt.exe -nologo -manifest $@.manifest -outputresource:$@;2
+#IF(cygwin or hpux):   $(CHMOD) 0775 $@
+
+src/dynpmc/gziphandle$(O): src/dynpmc/gziphandle.c $(DYNPMC_H_FILES)
+
+src/dynpmc/gziphandle.c: src/dynpmc/gziphandle.dump
+	$(PMC2CC) src/dynpmc/gziphandle.pmc
+
+src/dynpmc/gziphandle.dump: src/dynpmc/gziphandle.pmc vtable.dump $(CLASS_O_FILES)
+	$(PMC2CD) src/dynpmc/gziphandle.pmc
+

Modified: branches/pbc_frozen_strings1/src/dynpmc/gziphandle.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/dynpmc/gziphandle.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/dynpmc/gziphandle.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -23,7 +23,6 @@
 #include <zlib.h>
 #include "parrot/extend.h"
 
-#define CHAR char
 /* HEADERIZER HFILE: none */
 /* HEADERIZER BEGIN: static */
 /* HEADERIZER END: static */

Modified: branches/pbc_frozen_strings1/src/embed.c
==============================================================================
--- branches/pbc_frozen_strings1/src/embed.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/embed.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/exceptions.c
==============================================================================
--- branches/pbc_frozen_strings1/src/exceptions.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/exceptions.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/frame_builder.c
==============================================================================
--- branches/pbc_frozen_strings1/src/frame_builder.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/frame_builder.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/gc/alloc_resources.c
==============================================================================
--- branches/pbc_frozen_strings1/src/gc/alloc_resources.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/gc/alloc_resources.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/gc/gc_ms.c
==============================================================================
--- branches/pbc_frozen_strings1/src/gc/gc_ms.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/gc/gc_ms.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/gc/malloc.c
==============================================================================
--- branches/pbc_frozen_strings1/src/gc/malloc.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/gc/malloc.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/gc/malloc_trace.c
==============================================================================
--- branches/pbc_frozen_strings1/src/gc/malloc_trace.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/gc/malloc_trace.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/gc/mark_sweep.c
==============================================================================
--- branches/pbc_frozen_strings1/src/gc/mark_sweep.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/gc/mark_sweep.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/gc/system.c
==============================================================================
--- branches/pbc_frozen_strings1/src/gc/system.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/gc/system.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/hash.c
==============================================================================
--- branches/pbc_frozen_strings1/src/hash.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/hash.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/hll.c
==============================================================================
--- branches/pbc_frozen_strings1/src/hll.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/hll.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/interp/inter_misc.c
==============================================================================
--- branches/pbc_frozen_strings1/src/interp/inter_misc.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/interp/inter_misc.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/io/api.c
==============================================================================
--- branches/pbc_frozen_strings1/src/io/api.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/io/api.c	Sun May  2 22:14:53 2010	(r46220)
@@ -460,14 +460,13 @@
 Parrot_io_write(PARROT_INTERP, ARGMOD(PMC *pmc), ARGIN(const void *buffer), size_t length)
 {
     ASSERT_ARGS(Parrot_io_write)
-    DECL_CONST_CAST;
     INTVAL result;
     STRING *s;
 
     if (PMC_IS_NULL(pmc))
         return -1;
 
-    s = Parrot_str_new(interp, (char *) PARROT_const_cast(void *, buffer), length);
+    s = Parrot_str_new(interp, (const char *)buffer, length);
 
     result = Parrot_io_putps(interp, pmc, s);
     return result;

Modified: branches/pbc_frozen_strings1/src/io/buffer.c
==============================================================================
--- branches/pbc_frozen_strings1/src/io/buffer.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/io/buffer.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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;
@@ -543,8 +543,8 @@
 
 /*
 
-=item C<size_t Parrot_io_write_buffer(PARROT_INTERP, PMC *filehandle, STRING
-*s)>
+=item C<size_t Parrot_io_write_buffer(PARROT_INTERP, PMC *filehandle, const
+STRING *s)>
 
 The buffer layer's C<Write> function.
 
@@ -553,7 +553,7 @@
 */
 
 size_t
-Parrot_io_write_buffer(PARROT_INTERP, ARGMOD(PMC *filehandle), ARGIN(STRING *s))
+Parrot_io_write_buffer(PARROT_INTERP, ARGMOD(PMC *filehandle), ARGIN(const STRING *s))
 {
     ASSERT_ARGS(Parrot_io_write_buffer)
     unsigned char * const buffer_start = Parrot_io_get_buffer_start(interp, filehandle);

Modified: branches/pbc_frozen_strings1/src/io/core.c
==============================================================================
--- branches/pbc_frozen_strings1/src/io/core.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/io/core.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/io/portable.c
==============================================================================
--- branches/pbc_frozen_strings1/src/io/portable.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/io/portable.c	Sun May  2 22:14:53 2010	(r46220)
@@ -349,7 +349,7 @@
 */
 
 INTVAL
-Parrot_io_flush_portable(SHIM_INTERP, SHIM(PMC *filehandle))
+Parrot_io_flush_portable(SHIM_INTERP, ARGIN(PMC *filehandle))
 {
     ASSERT_ARGS(Parrot_io_flush_portable)
     return fflush((FILE *)Parrot_io_get_os_handle(interp, filehandle));
@@ -369,7 +369,7 @@
 */
 
 size_t
-Parrot_io_read_portable(PARROT_INTERP, SHIM(PMC *filehandle),
+Parrot_io_read_portable(PARROT_INTERP, ARGIN(PMC *filehandle),
               ARGIN(STRING **buf))
 {
     ASSERT_ARGS(Parrot_io_read_portable)
@@ -393,8 +393,8 @@
 
 /*
 
-=item C<size_t Parrot_io_write_portable(PARROT_INTERP, PMC *filehandle, STRING
-*s)>
+=item C<size_t Parrot_io_write_portable(PARROT_INTERP, PMC *filehandle, const
+STRING *s)>
 
 Writes the given STRING to the provided IO PMC.
 
@@ -403,10 +403,10 @@
 */
 
 size_t
-Parrot_io_write_portable(PARROT_INTERP, ARGIN(PMC *filehandle), ARGMOD(STRING *s))
+Parrot_io_write_portable(PARROT_INTERP, ARGIN(PMC *filehandle), ARGIN(const STRING *s))
 {
     ASSERT_ARGS(Parrot_io_write_portable)
-    void * const buffer = s->strstart;
+    const void * const buffer = s->strstart;
     return fwrite(buffer, 1, s->bufused,
                   (FILE *)Parrot_io_get_os_handle(interp, filehandle));
 }
@@ -424,15 +424,15 @@
 */
 
 PIOOFF_T
-Parrot_io_seek_portable(PARROT_INTERP, ARGMOD(PMC *filehandle),
-              PIOOFF_T offset, INTVAL whence)
+Parrot_io_seek_portable(PARROT_INTERP, ARGMOD(PMC *filehandle), PIOOFF_T offset, INTVAL whence)
 {
     ASSERT_ARGS(Parrot_io_seek_portable)
-    PIOOFF_T pos;
     errno = 0;
 
-    if ((pos = fseek((FILE *)Parrot_io_get_os_handle(interp, filehandle),
-                    (long)offset, whence)) >= 0)
+    const PIOOFF_T pos = fseek(
+            (FILE *)Parrot_io_get_os_handle(interp, filehandle), (long)offset, whence);
+
+    if (pos >= 0)
         Parrot_io_set_file_position(interp, filehandle, pos);
 
     /* Seek clears EOF */

Modified: branches/pbc_frozen_strings1/src/io/socket_unix.c
==============================================================================
--- branches/pbc_frozen_strings1/src/io/socket_unix.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/io/socket_unix.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/io/socket_win32.c
==============================================================================
--- branches/pbc_frozen_strings1/src/io/socket_win32.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/io/socket_win32.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/io/unix.c
==============================================================================
--- branches/pbc_frozen_strings1/src/io/unix.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/io/unix.c	Sun May  2 22:14:53 2010	(r46220)
@@ -541,7 +541,8 @@
 
 /*
 
-=item C<size_t Parrot_io_write_unix(PARROT_INTERP, PMC *filehandle, STRING *s)>
+=item C<size_t Parrot_io_write_unix(PARROT_INTERP, PMC *filehandle, const STRING
+*s)>
 
 Calls C<write()> to write C<len> bytes from the memory starting at
 C<buffer> to the file descriptor in C<*io>.
@@ -551,7 +552,7 @@
 */
 
 size_t
-Parrot_io_write_unix(PARROT_INTERP, ARGIN(PMC *filehandle), ARGMOD(STRING *s))
+Parrot_io_write_unix(PARROT_INTERP, ARGIN(PMC *filehandle), ARGIN(const STRING *s))
 {
     ASSERT_ARGS(Parrot_io_write_unix)
     const PIOHANDLE file_descriptor = Parrot_io_get_os_handle(interp, filehandle);

Modified: branches/pbc_frozen_strings1/src/io/utf8.c
==============================================================================
--- branches/pbc_frozen_strings1/src/io/utf8.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/io/utf8.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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;
@@ -101,7 +101,8 @@
 
 /*
 
-=item C<size_t Parrot_io_write_utf8(PARROT_INTERP, PMC *filehandle, STRING *s)>
+=item C<size_t Parrot_io_write_utf8(PARROT_INTERP, PMC *filehandle, const STRING
+*s)>
 
 Write a Parrot string to a filehandle in UTF-8 format.
 
@@ -110,8 +111,7 @@
 */
 
 size_t
-Parrot_io_write_utf8(PARROT_INTERP, ARGMOD(PMC *filehandle),
-        ARGMOD(STRING *s))
+Parrot_io_write_utf8(PARROT_INTERP, ARGMOD(PMC *filehandle), ARGIN(const STRING *s))
 {
     ASSERT_ARGS(Parrot_io_write_utf8)
     STRING *dest;
@@ -134,10 +134,6 @@
 F<src/io/io_layers.c>,
 F<src/io/io_private.h>.
 
-=head1 HISTORY
-
-Initially written by Leo.
-
 =cut
 
 */

Modified: branches/pbc_frozen_strings1/src/io/win32.c
==============================================================================
--- branches/pbc_frozen_strings1/src/io/win32.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/io/win32.c	Sun May  2 22:14:53 2010	(r46220)
@@ -472,7 +472,8 @@
 
 /*
 
-=item C<size_t Parrot_io_write_win32(PARROT_INTERP, PMC *filehandle, STRING *s)>
+=item C<size_t Parrot_io_write_win32(PARROT_INTERP, PMC *filehandle, const
+STRING *s)>
 
 Calls C<WriteFile()> to write C<len> bytes from the memory starting at
 C<buffer> to C<*io>'s file descriptor. Returns C<(size_t)-1> on
@@ -483,9 +484,7 @@
 */
 
 size_t
-Parrot_io_write_win32(PARROT_INTERP,
-        ARGIN(PMC *filehandle),
-        ARGIN(STRING *s))
+Parrot_io_write_win32(PARROT_INTERP, ARGIN(PMC *filehandle), ARGIN(const STRING *s))
 {
     ASSERT_ARGS(Parrot_io_write_win32)
     DWORD countwrote = 0;

Modified: branches/pbc_frozen_strings1/src/library.c
==============================================================================
--- branches/pbc_frozen_strings1/src/library.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/library.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/longopt.c
==============================================================================
--- branches/pbc_frozen_strings1/src/longopt.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/longopt.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/main.c
==============================================================================
--- branches/pbc_frozen_strings1/src/main.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/main.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/misc.c
==============================================================================
--- branches/pbc_frozen_strings1/src/misc.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/misc.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/multidispatch.c
==============================================================================
--- branches/pbc_frozen_strings1/src/multidispatch.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/multidispatch.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/nci_test.c
==============================================================================
--- branches/pbc_frozen_strings1/src/nci_test.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/nci_test.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/oo.c
==============================================================================
--- branches/pbc_frozen_strings1/src/oo.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/oo.c	Sun May  2 22:14:53 2010	(r46220)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2007-2009, Parrot Foundation.
+Copyright (C) 2007-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -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);
     }
@@ -1041,13 +1038,26 @@
 
     PMC * const  mro = _class->vtable->mro;
     const INTVAL n   = VTABLE_elements(interp, mro);
+    STRING * const methods_str = CONST_STRING(interp, "methods");
+    STRING * const class_str = CONST_STRING(interp, "class");
 
     for (i = 0; i < n; ++i) {
-        PMC *method, *ns;
+        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;
+
+        if (PMC_IS_NULL(class_obj))
+            method_hash = VTABLE_inspect_str(interp, ns, methods_str);
+        else
+            method_hash = VTABLE_inspect_str(interp, class_obj, methods_str);
+
+        if (!PMC_IS_NULL(method_hash))
+            method = VTABLE_get_pmc_keyed_str(interp, method_hash, method_name);
 
-        _class = VTABLE_get_pmc_keyed_int(interp, mro, i);
-        ns     = VTABLE_get_namespace(interp, _class);
-        method = VTABLE_get_pmc_keyed_str(interp, ns, method_name);
+        if (PMC_IS_NULL(method))
+            method = VTABLE_get_pmc_keyed_str(interp, ns, method_name);
 
         TRACE_FM(interp, _class, method_name, method);
 
@@ -1084,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;
@@ -1095,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. */
@@ -1107,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;
@@ -1134,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;
@@ -1204,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));
 
@@ -1272,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;
 
@@ -1300,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);
 
@@ -1396,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));
             }
@@ -1416,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
@@ -1425,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/pbc_frozen_strings1/src/packdump.c
==============================================================================
--- branches/pbc_frozen_strings1/src/packdump.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/packdump.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/packfile.c
==============================================================================
--- branches/pbc_frozen_strings1/src/packfile.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/packfile.c	Sun May  2 22:14:53 2010	(r46220)
@@ -293,9 +293,10 @@
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
-static opcode_t * pf_debug_pack(SHIM_INTERP,
+static opcode_t * pf_debug_pack(PARROT_INTERP,
     ARGMOD(PackFile_Segment *self),
     ARGOUT(opcode_t *cursor))
+        __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         __attribute__nonnull__(3)
         FUNC_MODIFIES(*self)
@@ -454,7 +455,8 @@
 #define ASSERT_ARGS_pf_debug_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_pf_debug_pack __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(self) \
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(self) \
     , PARROT_ASSERT_ARG(cursor))
 #define ASSERT_ARGS_pf_debug_packed_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(self))
@@ -481,6 +483,15 @@
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
 
+/* Segment header:
+  1 op - Segment size
+  1 op - Internal type
+  1 op - Internal id
+  1 op - Size of theop array
+  See pdd13_bytecode: Packfile Segment Header
+*/
+#define SEGMENT_HEADER_SIZE 4
+
 /* offset not in ptr diff, but in byte */
 #define OFFS(pf, cursor) ((pf) ? ((const char *)(cursor) - (const char *)((pf)->src)) : 0)
 /**
@@ -807,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) {
@@ -918,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:
             {
@@ -1165,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;
@@ -1196,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;
@@ -1227,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) {
@@ -1271,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--;
@@ -1526,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]));
@@ -1573,7 +1584,7 @@
 default_dump(PARROT_INTERP, ARGIN(const PackFile_Segment *self))
 {
     ASSERT_ARGS(default_dump)
-    size_t i = self->data ? 0: self->file_offset + 4;
+    size_t i = self->data ? 0: self->file_offset + SEGMENT_HEADER_SIZE;
 
     default_dump_header(interp, self);
 
@@ -1581,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);
@@ -2016,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,
@@ -2031,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]);
 }
 
@@ -2065,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;
@@ -2144,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 */
@@ -2212,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;
@@ -2249,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;
@@ -2264,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;
@@ -2284,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;
@@ -2323,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;
@@ -2335,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;
@@ -2402,7 +2413,7 @@
       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);
     }
@@ -2516,10 +2527,7 @@
 default_packed_size(ARGIN(const PackFile_Segment *self))
 {
     ASSERT_ARGS(default_packed_size)
-    /* op_count, itype, id, size */
-    /* XXX There should be a constant defining this 4, and why */
-    /* This is the 2nd place in the file that has this */
-    return 4 + self->size;
+    return SEGMENT_HEADER_SIZE + self->size;
 }
 
 
@@ -2694,18 +2702,22 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 static opcode_t *
-pf_debug_pack(SHIM_INTERP, ARGMOD(PackFile_Segment *self), ARGOUT(opcode_t *cursor))
+pf_debug_pack(PARROT_INTERP, ARGMOD(PackFile_Segment *self), ARGOUT(opcode_t *cursor))
 {
     ASSERT_ARGS(pf_debug_pack)
     PackFile_Debug * const debug = (PackFile_Debug *)self;
     const              int n     = debug->num_mappings;
     int i;
 
+    if (n > 0 && debug->mappings == NULL)
+        Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_MALFORMED_PACKFILE,
+                                    "No mappings but non zero num mappings(%I)", n);
+
     /* Store number of mappings. */
     *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;
@@ -2751,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);
@@ -2796,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);
@@ -2906,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,
@@ -2982,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
@@ -2993,7 +3005,7 @@
     }
 
     /* Otherwise, no mappings == no filename. */
-    return string_from_literal(interp, "(unknown file)");
+    return CONST_STRING(interp, "(unknown file)");
 }
 
 
@@ -3019,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;
         }
     }
 
@@ -3265,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;
         }
@@ -3315,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;
@@ -3358,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:
@@ -3452,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);
@@ -3542,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;
@@ -3649,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;
     }
@@ -3713,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);
@@ -4111,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);
@@ -4119,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);
     }
@@ -4182,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;
@@ -4191,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;
@@ -4200,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;
@@ -4245,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);
@@ -4259,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);
@@ -4275,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);
@@ -4325,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",
@@ -4342,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",
@@ -4357,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",
@@ -4408,7 +4420,7 @@
     group->entries_offset  = self->num_entries;
 
     /* Increment group count. */
-    self->num_groups++;
+    ++self->num_groups;
 }
 
 
@@ -4439,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;
@@ -4458,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;
@@ -4487,7 +4499,7 @@
     self->entries[self->num_entries]->key             = key_id;
     self->entries[self->num_entries]->value           = value;
 
-    self->num_entries++;
+    ++self->num_entries;
 }
 
 
@@ -4513,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);
@@ -4560,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;
@@ -4573,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
@@ -4587,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;
 
@@ -4598,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,
@@ -4615,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/pbc_frozen_strings1/src/packfile/pf_items.c
==============================================================================
--- branches/pbc_frozen_strings1/src/packfile/pf_items.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/packfile/pf_items.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/packout.c
==============================================================================
--- branches/pbc_frozen_strings1/src/packout.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/packout.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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,7 +162,7 @@
     const PackFile_ConstTable* const self = (const PackFile_ConstTable *) seg;
     size_t size = 1;    /* const_count */
 
-    for (i = 0; i < self->const_count; 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)
@@ -291,7 +291,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);
         }
 

Modified: branches/pbc_frozen_strings1/src/pbc_dump.c
==============================================================================
--- branches/pbc_frozen_strings1/src/pbc_dump.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pbc_dump.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pbc_merge.c
==============================================================================
--- branches/pbc_frozen_strings1/src/pbc_merge.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pbc_merge.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc.c
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc.c	Sun May  2 22:14:53 2010	(r46220)
@@ -649,7 +649,7 @@
 be used to create PMC Objects which have been defined from PIR.
 
 B<You> are responsible for freeing this PMC when it goes out of scope with
-C<free_temporary_pmc()>.  B<Do not> store this PMC in any other PMCs, or
+C<Parrot_pmc_free_temporary()>.  B<Do not> store this PMC in any other PMCs, or
 allow it to be stored.  B<Do not> store any regular PMC in this PMC, or
 allow the storage of any regular PMC in this PMC. Temporary PMCs do not
 participate in garbage collection, and mixing them with PMCs that are

Modified: branches/pbc_frozen_strings1/src/pmc/callcontext.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/callcontext.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/callcontext.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/class.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/class.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/class.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/codestring.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/codestring.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/codestring.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2007-2009, Parrot Foundation.
+Copyright (C) 2007-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -108,6 +108,7 @@
     STRING * const comma       = CONST_STRING(INTERP, ",");
     STRING * const comma_space = CONST_STRING(INTERP, ", ");
     STRING * const newline     = CONST_STRING(INTERP, "\n");
+    PMC           *parts       = PMCNULL;
     STRING *key, *repl, *S1;
     INTVAL pos          = 0;
     INTVAL replen       = 0;
@@ -128,19 +129,7 @@
             repl = VTABLE_get_string_keyed_int(INTERP, args, I0);
         }
         else if (Parrot_str_equal(INTERP, key, comma)) {
-            INTVAL I0;
-            INTVAL I1;
-
-            repl = VTABLE_get_string_keyed_int(INTERP, args, 0);
-            I1   = VTABLE_elements(INTERP, args);
-            I0   = 1;
-
-            while (I0 < I1) {
-                STRING * const S0 = VTABLE_get_string_keyed_int(INTERP, args, I0);
-                repl = Parrot_str_concat(INTERP, repl, comma_space);
-                repl = Parrot_str_concat(INTERP, repl, S0);
-                I0++;
-            }
+            repl = Parrot_str_join(INTERP, comma_space, args);
         }
         else if (Parrot_str_equal(INTERP, key, percent)) {
             repl = percent;
@@ -155,12 +144,17 @@
         replen = Parrot_str_byte_length(INTERP, repl);
     }
 
+    GET_ATTR_str_val(INTERP, SELF, S1);
+
+    parts = Parrot_pmc_new_init_int(INTERP, enum_class_FixedStringArray, 3);
+    VTABLE_set_string_keyed_int(INTERP, parts, 0, S1);
+    VTABLE_set_string_keyed_int(INTERP, parts, 1, fmt);
+
     /* Add a newline if necessary */
     if ('\n' != Parrot_str_indexed(INTERP, fmt, Parrot_str_byte_length(INTERP, fmt) - 1))
-        fmt = Parrot_str_concat(INTERP, fmt, newline);
+        VTABLE_set_string_keyed_int(INTERP, parts, 2, newline);
 
-    GET_ATTR_str_val(INTERP, SELF, S1);
-    S1 = Parrot_str_concat(INTERP, S1, fmt);
+    S1 = Parrot_str_join(INTERP, STRINGNULL, parts);
     VTABLE_set_string_native(INTERP, SELF, S1);
 
     RETURN(PMC *SELF);
@@ -199,7 +193,7 @@
         jpos = Parrot_str_find_cclass(INTERP, enum_cclass_newline,
                                       str, 0, eos);
         while (jpos < eos) {
-            jpos++;
+            ++jpos;
             /* add the start of line position */
             VTABLE_push_integer(INTERP, linepos, jpos);
 
@@ -207,7 +201,7 @@
             if (jpos < eos
             && string_ord(INTERP, str, jpos - 1)     == 13
             && string_ord(INTERP, str, jpos)         == 10) {
-                jpos++;
+                ++jpos;
             }
             /* search for the next newline */
             jpos = Parrot_str_find_cclass(INTERP, enum_cclass_newline,
@@ -224,7 +218,7 @@
     count = VTABLE_elements(INTERP, linepos);
     while (line < count
           && VTABLE_get_integer_keyed_int(INTERP, linepos, line) <= pos)
-        line++;
+        ++line;
 
     RETURN(INTVAL line);
   }
@@ -249,7 +243,7 @@
     STRING * const counter_as_string = Parrot_str_from_int(INTERP, counter);
     UNUSED(SELF);
 
-    counter++;
+    ++counter;
 
     if (!has_fmt) {
         RETURN(STRING *counter_as_string);
@@ -351,7 +345,7 @@
     STRING *       prefix        = NULL;
     STRING *       out           = open_bracket;
 
-    for (index = 0; index < elements; index++) {
+    for (index = 0; index < elements; ++index) {
         PMC * const P0 = VTABLE_get_pmc_keyed_int(INTERP, args, index);
 
         if (!PMC_IS_NULL(P0)) {
@@ -359,7 +353,7 @@
                 const INTVAL elements2 = VTABLE_elements(INTERP, P0);
                 INTVAL index2;
 
-                for (index2 = 0; index2 < elements2; index2++) {
+                for (index2 = 0; index2 < elements2; ++index2) {
                     STRING *S0   = VTABLE_get_string_keyed_int(INTERP, P0, index2);
                     (STRING *S0) = PCCINVOKE(INTERP, SELF, "escape", STRING *S0);
                     if (prefix)

Modified: branches/pbc_frozen_strings1/src/pmc/complex.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/complex.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/complex.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/default.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/default.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/default.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/env.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/env.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/env.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -97,7 +97,7 @@
         INTVAL rv = 0;
 
         while (environ[rv] != NULL)
-            rv++;
+            ++rv;
 
         return rv;
     }

Modified: branches/pbc_frozen_strings1/src/pmc/eval.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/eval.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/eval.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/exception.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/exception.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/exception.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/exceptionhandler.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/exceptionhandler.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/exceptionhandler.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/exporter.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/exporter.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/exporter.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/fixedbooleanarray.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/fixedbooleanarray.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/fixedbooleanarray.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/fixedintegerarray.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/fixedintegerarray.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/fixedintegerarray.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/fixedpmcarray.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/fixedpmcarray.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/fixedpmcarray.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -308,7 +308,7 @@
         PMC * const retval = SELF.get_pmc_keyed_int(key);
 
         if (PMC_IS_NULL(retval))
-            return string_from_literal(interp, "");
+            return CONST_STRING(interp, "");
 
         return VTABLE_get_string(INTERP, retval);
     }
@@ -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/pbc_frozen_strings1/src/pmc/fixedstringarray.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/fixedstringarray.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/fixedstringarray.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/float.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/float.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/float.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/hashiterator.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/hashiterator.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/hashiterator.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -90,7 +90,7 @@
         bucket = attrs->parrot_hash->bi[attrs->pos++];
     }
     attrs->bucket = bucket;
-    attrs->elements--;
+    --attrs->elements;
 
     return;
 }

Modified: branches/pbc_frozen_strings1/src/pmc/imageio.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/imageio.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/imageio.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -308,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;
         }

Modified: branches/pbc_frozen_strings1/src/pmc/imageiosize.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/imageiosize.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/imageiosize.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -167,8 +167,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;
     }
 

Modified: branches/pbc_frozen_strings1/src/pmc/integer.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/integer.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/integer.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/key.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/key.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/key.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -156,7 +156,7 @@
         if (PObj_get_FLAGS(SELF) & KEY_type_FLAGS)
             return key_string(INTERP, SELF);
 
-        return string_from_literal(INTERP, "");
+        return CONST_STRING(INTERP, "");
     }
 
 /*

Modified: branches/pbc_frozen_strings1/src/pmc/namespace.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/namespace.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/namespace.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -299,8 +299,9 @@
 */
 
     VTABLE void init() {
-        PARROT_NAMESPACE(SELF)->vtable = PMCNULL;
-        PARROT_NAMESPACE(SELF)->_class = PMCNULL;
+        PARROT_NAMESPACE(SELF)->vtable  = PMCNULL;
+        PARROT_NAMESPACE(SELF)->methods = PMCNULL;
+        PARROT_NAMESPACE(SELF)->_class  = PMCNULL;
         SELF.set_pointer(parrot_new_hash(INTERP));
         PObj_custom_mark_destroy_SETALL(SELF);
     }
@@ -531,7 +532,7 @@
                     break;
                 }
                 ns = Parrot_get_namespace_keyed_str(INTERP, ns, name);
-                i++;
+                ++i;
             }
             return ns;
         }
@@ -651,6 +652,61 @@
 
 /*
 
+=item C<PMC *inspect_str(STRING *what)>
+
+Provides introspection of a specific piece of information about the
+namespace. The available information is:
+
+=over 8
+
+=item class
+
+The class object associated with the namespace, if any.
+
+=item methods
+
+A temporary cache of methods (destroyed when class object is created).
+Hash keyed on method name, value is an invokable PMC. Includes methods
+composed in from roles.
+
+=item vtable_overrides
+
+A temporary cache of vtable overrides (destroyed when class object is
+created). Hash keyed on vtable name, value is an invokable PMC.
+Includes vtable overrides composed in from roles.
+
+=back
+
+=cut
+
+*/
+
+    VTABLE PMC *inspect_str(STRING *what) {
+        const Parrot_NameSpace_attributes * const nsinfo = PARROT_NAMESPACE(SELF);
+        PMC *found;
+
+        if (Parrot_str_equal(interp, what, CONST_STRING(interp, "methods"))) {
+            found = nsinfo->methods;
+        }
+        else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "vtable_overrides"))) {
+            found = nsinfo->vtable;
+        }
+        else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "class"))) {
+            found = nsinfo->_class;
+        }
+        else
+            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+                "Unknown introspection value '%S'", what);
+
+        /* return found value */
+        if (PMC_IS_NULL(found))
+            return PMCNULL;
+
+        return found;
+    }
+
+/*
+
 =back
 
 =head2 Methods
@@ -762,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/pbc_frozen_strings1/src/pmc/nci.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/nci.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/nci.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/object.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/object.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/object.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/oplib.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/oplib.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/oplib.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/orderedhashiterator.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/orderedhashiterator.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/orderedhashiterator.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/packfileannotations.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/packfileannotations.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/packfileannotations.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -229,6 +229,10 @@
             /* Poke directly to annotation attributes. */
             annotation_attrs         = PARROT_PACKFILEANNOTATION(annotation);
             annotation_attrs->offset = entry->bytecode_offset;
+            if (! attrs->const_table)
+                Parrot_ex_throw_from_c_args(interp, NULL,
+                        EXCEPTION_MALFORMED_PACKFILE, "No constant table");
+
             annotation_attrs->name   = VTABLE_get_string_keyed_int(interp,
                     attrs->const_table, key->name);
             switch (key->type) {

Copied: branches/pbc_frozen_strings1/src/pmc/packfiledebug.pmc (from r46219, trunk/src/pmc/packfiledebug.pmc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pbc_frozen_strings1/src/pmc/packfiledebug.pmc	Sun May  2 22:14:53 2010	(r46220, copy of r46219, trunk/src/pmc/packfiledebug.pmc)
@@ -0,0 +1,210 @@
+/*
+Copyright (C) 2001-2010, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/pmc/packfiledebug.pmc - Packfile Debug Segment PMC
+
+=head1 DESCRIPTION
+
+This class implements a PackfileDebug object, a segment of the .pbc
+data file used for storing pir debug information.
+
+See packfile.pmc for the toplevel Packfile interface, see packfilesegment.pmc
+for the list of common methods every packfile segment pmc must implement; see
+PDD13 for the design spec.
+
+Initial and experimental version, using some vtables as a quick way of testing.
+
+=head2 Vtable functions
+
+=over 4
+
+=cut
+
+*/
+
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* HEADERIZER END: static */
+
+pmclass PackfileDebug auto_attrs extends PackfileRawSegment {
+    /* Number of file mappings */
+    ATTR INTVAL num_mappings;
+    /* File name mapping */
+    ATTR PMC *mapping_offset;
+    ATTR PMC *mapping_filename;
+
+/*
+
+=item C<init>
+
+Create empty PackfileDebug.
+
+=cut
+
+*/
+
+    VTABLE void init() {
+        SUPER();
+        SET_ATTR_type(INTERP, SELF, PF_DEBUG_SEG);
+    }
+
+/*
+
+=item C<void mark()>
+
+Marks the object as live.
+
+=cut
+
+*/
+
+    VTABLE void mark() {
+        PMC *mapping_offset;
+        PMC *mapping_filename;
+        GET_ATTR_mapping_offset(INTERP, SELF, mapping_offset);
+        GET_ATTR_mapping_filename(INTERP, SELF, mapping_filename);
+        Parrot_gc_mark_PMC_alive(INTERP, mapping_offset);
+        Parrot_gc_mark_PMC_alive(INTERP, mapping_filename);
+
+        SUPER();
+    }
+
+
+/*
+
+=item C<set_pointer>
+
+Set pointer to underlying PackFile_ConstTable
+
+=cut
+
+*/
+
+    VTABLE void set_pointer(void * pointer) {
+        PackFile_Debug *p = (PackFile_Debug *) pointer;
+        INTVAL num_mappings = p->num_mappings;
+        PMC *mapping_offset = Parrot_pmc_new_init_int(INTERP,
+                                                      enum_class_FixedIntegerArray, num_mappings);
+        PMC *mapping_filename = Parrot_pmc_new_init_int(INTERP,
+                                                      enum_class_FixedIntegerArray, num_mappings);
+        INTVAL i;
+        STRING *t = CONST_STRING(INTERP, "test");
+
+        SUPER(pointer);
+        for (i = 0; i < num_mappings; ++i) {
+            VTABLE_set_integer_keyed_int(INTERP, mapping_offset, i, p->mappings[i].offset);
+            VTABLE_set_integer_keyed_int(INTERP, mapping_filename, i, p->mappings[i].filename);
+        }
+        SET_ATTR_num_mappings(INTERP, SELF, p->num_mappings);
+        SET_ATTR_mapping_offset(INTERP, SELF, mapping_offset);
+        SET_ATTR_mapping_filename(INTERP, SELF, mapping_filename);
+    }
+
+/*
+
+=item C<void *get_pointer()>
+=cut
+
+*/
+
+    VTABLE void *get_pointer() {
+        PackFile_Debug *p = (PackFile_Debug *) mem_gc_realloc_n_typed(INTERP,
+                                                           SUPER(), sizeof (PackFile_Debug), char);
+        INTVAL num_mappings;
+        PMC *mapping_offset;
+        PMC *mapping_filename;
+        INTVAL i;
+        GET_ATTR_num_mappings(INTERP, SELF, num_mappings);
+        GET_ATTR_mapping_offset(INTERP, SELF, mapping_offset);
+        GET_ATTR_mapping_filename(INTERP, SELF, mapping_filename);
+        p->num_mappings = num_mappings;
+        p->mappings = mem_gc_allocate_n_typed(INTERP, num_mappings, PackFile_DebugFilenameMapping);
+        for (i = 0; i < num_mappings; ++i) {
+            p->mappings[i].offset = VTABLE_get_integer_keyed_int(INTERP, mapping_offset, i);
+            p->mappings[i].filename = VTABLE_get_integer_keyed_int(INTERP, mapping_filename, i);
+        }
+        return p;
+    }
+
+/*
+
+=item C<INTVAL get_integer()>
+
+Get the number of filename mappings.
+
+=cut
+
+*/
+
+    VTABLE INTVAL get_integer() {
+        INTVAL num_mappings;
+        GET_ATTR_num_mappings(INTERP, SELF, num_mappings);
+        return num_mappings;
+    }
+
+/*
+
+=item C<INTVAL get_string_keyed_int(INTVAL n)>
+
+Get the filename mapping n.
+
+=cut
+
+*/
+
+    VTABLE PMC *get_pmc_keyed_int(INTVAL n) {
+        INTVAL num_mappings;
+        GET_ATTR_num_mappings(INTERP, SELF, num_mappings);
+        if (n < num_mappings) {
+            PMC *mapping_offset;
+            INTVAL offset;
+            PMC *result;
+            GET_ATTR_mapping_offset(INTERP, SELF, mapping_offset);
+            offset = VTABLE_get_integer_keyed_int(INTERP, mapping_offset, n);
+            result = Parrot_pmc_new(INTERP, enum_class_Integer);
+            VTABLE_set_integer_native(INTERP, result, offset);
+            return result;
+        }
+        else return PMCNULL;
+    }
+
+/*
+
+=item C<INTVAL get_string_keyed_int(INTVAL n)>
+
+Get the filename mapping n.
+
+=cut
+
+*/
+
+    VTABLE STRING *get_string_keyed_int(INTVAL n) {
+        INTVAL num_mappings;
+        GET_ATTR_num_mappings(INTERP, SELF, num_mappings);
+        if (n < num_mappings) {
+            PMC *mapping_filename;
+            GET_ATTR_mapping_filename(INTERP, SELF, mapping_filename);
+            return VTABLE_get_string_keyed_int(INTERP, mapping_filename, n);
+        }
+        else return STRINGNULL;
+    }
+
+}
+
+/*
+
+=back
+
+=cut
+
+*/
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */

Modified: branches/pbc_frozen_strings1/src/pmc/packfiledirectory.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/packfiledirectory.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/packfiledirectory.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -106,9 +106,11 @@
               case PF_ANNOTATIONS_SEG:
                 pmc_type = enum_class_PackfileAnnotations;
                 break;
+              case PF_DEBUG_SEG:
+                pmc_type = enum_class_PackfileDebug;
+                break;
               case PF_BYTEC_SEG:
               case PF_UNKNOWN_SEG:
-              case PF_DEBUG_SEG:
               default:
                 pmc_type = enum_class_PackfileRawSegment;
                 break;

Modified: branches/pbc_frozen_strings1/src/pmc/parrotinterpreter.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/parrotinterpreter.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/parrotinterpreter.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/parrotrunningthread.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/parrotrunningthread.pmc	Sun May  2 22:14:53 2010	(r46219)
+++ /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/pbc_frozen_strings1/src/pmc/parrotthread.pmc (from r46219, trunk/src/pmc/parrotthread.pmc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pbc_frozen_strings1/src/pmc/parrotthread.pmc	Sun May  2 22:14:53 2010	(r46220, copy of r46219, 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/pbc_frozen_strings1/src/pmc/pmcproxy.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/pmcproxy.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/pmcproxy.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/resizablepmcarray.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/resizablepmcarray.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/resizablepmcarray.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/resizablestringarray.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/resizablestringarray.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/resizablestringarray.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -54,7 +54,7 @@
         }
 
         if (key >= size)
-            return string_from_literal(INTERP, "");
+            return CONST_STRING(INTERP, "");
 
         GET_ATTR_str_array(INTERP, SELF, str_array);
 
@@ -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/pbc_frozen_strings1/src/pmc/role.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/role.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/role.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/scalar.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/scalar.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/scalar.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/scheduler.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/scheduler.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/scheduler.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/string.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/string.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/string.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -567,7 +567,7 @@
                 break;
 
             i = i * base + dig;
-            j++;
+            ++j;
         }
 
         if (j < len) {

Modified: branches/pbc_frozen_strings1/src/pmc/sub.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/sub.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/sub.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/task.pmc
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc/task.pmc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc/task.pmc	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/pmc/threadinterpreter.pmc (from r46219, trunk/src/pmc/threadinterpreter.pmc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pbc_frozen_strings1/src/pmc/threadinterpreter.pmc	Sun May  2 22:14:53 2010	(r46220, copy of r46219, 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/pbc_frozen_strings1/src/pmc_freeze.c
==============================================================================
--- branches/pbc_frozen_strings1/src/pmc_freeze.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/pmc_freeze.c	Sun May  2 22:14:53 2010	(r46220)
@@ -49,7 +49,7 @@
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
 STRING*
 Parrot_freeze(PARROT_INTERP, ARGIN(PMC *pmc))
 {
@@ -99,7 +99,6 @@
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
 UINTVAL
 Parrot_freeze_size(PARROT_INTERP, ARGIN(PMC *pmc))
 {
@@ -184,7 +183,7 @@
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
 PMC*
 Parrot_thaw(PARROT_INTERP, ARGIN(STRING *image))
 {
@@ -277,7 +276,7 @@
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
+PARROT_CANNOT_RETURN_NULL
 PMC*
 Parrot_thaw_constants(PARROT_INTERP, ARGIN(STRING *image))
 {
@@ -326,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/pbc_frozen_strings1/src/runcore/cores.c
==============================================================================
--- branches/pbc_frozen_strings1/src/runcore/cores.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/runcore/cores.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/runcore/profiling.c
==============================================================================
--- branches/pbc_frozen_strings1/src/runcore/profiling.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/runcore/profiling.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/runcore/trace.c
==============================================================================
--- branches/pbc_frozen_strings1/src/runcore/trace.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/runcore/trace.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/scheduler.c
==============================================================================
--- branches/pbc_frozen_strings1/src/scheduler.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/scheduler.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/spf_render.c
==============================================================================
--- branches/pbc_frozen_strings1/src/spf_render.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/spf_render.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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;
             }
         }
 
@@ -309,8 +309,8 @@
 
 /*
 
-=item C<STRING * Parrot_sprintf_format(PARROT_INTERP, STRING *pat, SPRINTF_OBJ
-*obj)>
+=item C<STRING * Parrot_sprintf_format(PARROT_INTERP, const STRING *pat,
+SPRINTF_OBJ *obj)>
 
 This is the engine that does all the formatting.
 
@@ -321,8 +321,7 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 STRING *
-Parrot_sprintf_format(PARROT_INTERP,
-        ARGIN(STRING *pat), ARGIN(SPRINTF_OBJ *obj))
+Parrot_sprintf_format(PARROT_INTERP, ARGIN(const STRING *pat), ARGMOD(SPRINTF_OBJ *obj))
 {
     ASSERT_ARGS(Parrot_sprintf_format)
     INTVAL i;
@@ -341,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);
@@ -353,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 {
@@ -460,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) {
@@ -784,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'
@@ -832,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;
@@ -856,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,
@@ -883,10 +882,10 @@
             }
 
             old = i;
-            i--;
+            --i;
         }
         else {
-            len++;
+            ++len;
         }
     }
     if (len) {

Modified: branches/pbc_frozen_strings1/src/spf_vtable.c
==============================================================================
--- branches/pbc_frozen_strings1/src/spf_vtable.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/spf_vtable.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/string/api.c
==============================================================================
--- branches/pbc_frozen_strings1/src/string/api.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/string/api.c	Sun May  2 22:14:53 2010	(r46220)
@@ -497,14 +497,10 @@
 {
     ASSERT_ARGS(Parrot_str_new)
     /* Force an 8-bit encoding at some point? */
-    if (len)
-        return Parrot_str_new_init(interp, buffer, len,
-            PARROT_DEFAULT_ENCODING, PARROT_DEFAULT_CHARSET, 0);
-    else {
-        const UINTVAL buff_length = buffer ? strlen(buffer) : 0;
-        return Parrot_str_new_init(interp, buffer, buff_length,
-            PARROT_DEFAULT_ENCODING, PARROT_DEFAULT_CHARSET, 0);
-    }
+    const UINTVAL buff_length = (len > 0) ? len : buffer ? strlen(buffer) : 0;
+
+    return Parrot_str_new_init(interp, buffer, buff_length,
+        PARROT_DEFAULT_ENCODING, PARROT_DEFAULT_CHARSET, 0);
 }
 
 
@@ -886,12 +882,17 @@
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
 INTVAL
-string_ord(PARROT_INTERP, ARGIN_NULLOK(const STRING *s), INTVAL idx)
+string_ord(PARROT_INTERP, ARGIN(const STRING *s), INTVAL idx)
 {
     ASSERT_ARGS(string_ord)
-    const UINTVAL len        = s ? Parrot_str_byte_length(interp, s) : 0;
+    UINTVAL len;
     UINTVAL       true_index = (UINTVAL)idx;
 
+    if (STRING_IS_NULL(s))
+        Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ORD_OUT_OF_STRING,
+            "Cannot get character of NULL string");
+
+    len = Parrot_str_byte_length(interp, s);
     if (len == 0)
         Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ORD_OUT_OF_STRING,
             "Cannot get character of empty string");
@@ -1021,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;
         }
@@ -1036,8 +1037,8 @@
 
 /*
 
-=item C<STRING * Parrot_str_substr(PARROT_INTERP, STRING *src, INTVAL offset,
-INTVAL length)>
+=item C<STRING * Parrot_str_substr(PARROT_INTERP, const STRING *src, INTVAL
+offset, INTVAL length)>
 
 Returns substring of length C<length> from C<offset> from the specified
 Parrot string.
@@ -1051,7 +1052,7 @@
 PARROT_WARN_UNUSED_RESULT
 STRING *
 Parrot_str_substr(PARROT_INTERP,
-        ARGIN_NULLOK(STRING *src), INTVAL offset, INTVAL length)
+        ARGIN_NULLOK(const STRING *src), INTVAL offset, INTVAL length)
 {
     ASSERT_ARGS(Parrot_str_substr)
 
@@ -1216,7 +1217,7 @@
 
 /*
 
-=item C<STRING * Parrot_str_chopn(PARROT_INTERP, STRING *s, INTVAL n)>
+=item C<STRING * Parrot_str_chopn(PARROT_INTERP, const STRING *s, INTVAL n)>
 
 Removes the last C<n> characters of the specified Parrot string and returns the
 modified string. If C<n> is negative, cuts the string after C<+n> characters.
@@ -1228,7 +1229,7 @@
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 STRING *
-Parrot_str_chopn(PARROT_INTERP, ARGMOD(STRING *s), INTVAL n)
+Parrot_str_chopn(PARROT_INTERP, ARGIN(const STRING *s), INTVAL n)
 {
     ASSERT_ARGS(Parrot_str_chopn)
 
@@ -1835,7 +1836,7 @@
     ASSERT_ARGS(Parrot_str_to_int)
     if (STRING_IS_NULL(s))
         return 0;
-    {
+    else {
         const UINTVAL       max_safe  = -(UINTVAL)PARROT_INTVAL_MIN / 10;
         const UINTVAL       last_dig  = (-(UINTVAL)PARROT_INTVAL_MIN) % 10;
         int                 sign      = 1;
@@ -2013,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;
@@ -2582,8 +2583,8 @@
         if (d == offs) {
             /* we did it in place - no action */
             ++d;
-            iter.bytepos++;
-            iter.charpos++;
+            ++(iter.bytepos);
+            ++(iter.charpos);
             continue;
         }
 
@@ -2786,8 +2787,8 @@
 
 /*
 
-=item C<INTVAL Parrot_str_find_cclass(PARROT_INTERP, INTVAL flags, STRING *s,
-UINTVAL offset, UINTVAL count)>
+=item C<INTVAL Parrot_str_find_cclass(PARROT_INTERP, INTVAL flags, const STRING
+*s, UINTVAL offset, UINTVAL count)>
 
 Finds the first occurrence of the given character class in C<flags> in the
 string, and returns its glyph-wise index.
@@ -2799,7 +2800,7 @@
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
 INTVAL
-Parrot_str_find_cclass(PARROT_INTERP, INTVAL flags, ARGIN_NULLOK(STRING *s),
+Parrot_str_find_cclass(PARROT_INTERP, INTVAL flags, ARGIN_NULLOK(const STRING *s),
                           UINTVAL offset, UINTVAL count)
 {
     ASSERT_ARGS(Parrot_str_find_cclass)
@@ -2813,8 +2814,8 @@
 
 /*
 
-=item C<INTVAL Parrot_str_find_not_cclass(PARROT_INTERP, INTVAL flags, STRING
-*s, UINTVAL offset, UINTVAL count)>
+=item C<INTVAL Parrot_str_find_not_cclass(PARROT_INTERP, INTVAL flags, const
+STRING *s, UINTVAL offset, UINTVAL count)>
 
 Finds the first occurrence of the a character I<not> in the given character
 class in C<flags> in the string starting from C<offset> and looking at C<count>
@@ -2829,7 +2830,7 @@
 PARROT_WARN_UNUSED_RESULT
 INTVAL
 Parrot_str_find_not_cclass(PARROT_INTERP, INTVAL flags,
-    ARGIN_NULLOK(STRING *s), UINTVAL offset, UINTVAL count)
+    ARGIN_NULLOK(const STRING *s), UINTVAL offset, UINTVAL count)
 {
     ASSERT_ARGS(Parrot_str_find_not_cclass)
 
@@ -2918,7 +2919,7 @@
 
 /*
 
-=item C<STRING * Parrot_str_compose(PARROT_INTERP, STRING *src)>
+=item C<STRING * Parrot_str_compose(PARROT_INTERP, const STRING *src)>
 
 Normalizes the string.
 
@@ -2930,7 +2931,7 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 STRING *
-Parrot_str_compose(PARROT_INTERP, ARGIN_NULLOK(STRING *src))
+Parrot_str_compose(PARROT_INTERP, ARGIN_NULLOK(const STRING *src))
 {
     ASSERT_ARGS(Parrot_str_compose)
 
@@ -3002,7 +3003,7 @@
         total_length += next->bufused;
     }
 
-    /* with the right charset, transcode any strings if necessary*/
+    /* with the right charset, transcode any strings if necessary */
     if (transcoded) {
         const CHARSET  *c = j->charset;
         const ENCODING *e = j->encoding;

Modified: branches/pbc_frozen_strings1/src/string/charset.c
==============================================================================
--- branches/pbc_frozen_strings1/src/string/charset.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/string/charset.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/string/charset/ascii.c
==============================================================================
--- branches/pbc_frozen_strings1/src/string/charset/ascii.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/string/charset/ascii.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/string/charset/iso-8859-1.c
==============================================================================
--- branches/pbc_frozen_strings1/src/string/charset/iso-8859-1.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/string/charset/iso-8859-1.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/string/encoding.c
==============================================================================
--- branches/pbc_frozen_strings1/src/string/encoding.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/string/encoding.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/string/encoding/fixed_8.c
==============================================================================
--- branches/pbc_frozen_strings1/src/string/encoding/fixed_8.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/string/encoding/fixed_8.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/string/encoding/ucs2.c
==============================================================================
--- branches/pbc_frozen_strings1/src/string/encoding/ucs2.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/string/encoding/ucs2.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/string/encoding/utf16.c
==============================================================================
--- branches/pbc_frozen_strings1/src/string/encoding/utf16.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/string/encoding/utf16.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/string/encoding/utf8.c
==============================================================================
--- branches/pbc_frozen_strings1/src/string/encoding/utf8.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/string/encoding/utf8.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/sub.c
==============================================================================
--- branches/pbc_frozen_strings1/src/sub.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/sub.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/thread.c
==============================================================================
--- branches/pbc_frozen_strings1/src/thread.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/thread.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/utils.c
==============================================================================
--- branches/pbc_frozen_strings1/src/utils.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/utils.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/src/vtables.c
==============================================================================
--- branches/pbc_frozen_strings1/src/vtables.c	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/src/vtables.c	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/t/examples/tutorial.t
==============================================================================
--- branches/pbc_frozen_strings1/t/examples/tutorial.t	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/t/examples/tutorial.t	Sun May  2 22:14:53 2010	(r46220)
@@ -97,8 +97,8 @@
 bc
 bc
 abcde
-bc
 aXYZde
+abcde
 END_EXPECTED
 
     '24_string_ops_clone.pir' => << 'END_EXPECTED',

Copied: branches/pbc_frozen_strings1/t/library/archive_tar.t (from r46219, trunk/t/library/archive_tar.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pbc_frozen_strings1/t/library/archive_tar.t	Sun May  2 22:14:53 2010	(r46220, copy of r46219, trunk/t/library/archive_tar.t)
@@ -0,0 +1,77 @@
+#!./parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/library/archive_tar.t
+
+=head1 DESCRIPTION
+
+Test the Archive/Tar library
+
+=head1 SYNOPSIS
+
+    % prove t/library/archive_tar.t
+
+=cut
+
+.sub 'main' :main
+    .include 'test_more.pir'
+
+    load_bytecode 'Archive/Tar.pir'
+
+    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']")
+.end
+
+.sub 'test_tar'
+    .local pmc archive, entry
+    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']")
+    $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
+    is($I0, 512, "length header")
+    $I0 = index header, 'msg.txt'
+    is($I0, 0, "header starts by filename")
+    $I0 = index header, 'ustar'
+    is($I0, 257, "magic at 257")
+
+    .local pmc fh
+    fh = new 'StringHandle'
+    fh.'open'('in_memory', 'wb')
+    archive.'write'(fh)
+    $S0 = fh.'readall'()
+    fh.'close'()
+    $I0 = length $S0
+    is($I0, 2048, "size")
+    $I0 = index $S0, 'msg.txt'
+    is($I0, 0, 'filename')
+    $I0 = index $S0, 'some data'
+    is($I0, 512, 'data')
+.end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/pbc_frozen_strings1/t/library/osutils.t
==============================================================================
--- branches/pbc_frozen_strings1/t/library/osutils.t	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/t/library/osutils.t	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/t/native_pbc/integer_4.pbc
==============================================================================
Binary file (source and/or target). No diff available.

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

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

Modified: branches/pbc_frozen_strings1/t/oo/methods.t
==============================================================================
--- branches/pbc_frozen_strings1/t/oo/methods.t	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/t/oo/methods.t	Sun May  2 22:14:53 2010	(r46220)
@@ -21,12 +21,14 @@
 
     create_library()
 
-    plan(5)
+    plan(6)
 
     loading_methods_from_file()
     loading_methods_from_eval()
     overridden_find_method()
 
+    overridden_core_pmc()
+
     delete_library()
 
 .end
@@ -126,6 +128,20 @@
 
 .namespace []
 
+.sub 'overridden_core_pmc'
+    .local string msg
+    msg = "able to invoke overridden method on core PMC (TT #1596)"
+    $P0 = new 'ResizablePMCArray'
+    $I0 = $P0.'foo'()
+    is($I0, 1, msg)
+    .return()
+.end
+
+.namespace ['ResizablePMCArray']
+.sub 'foo' :method
+    .return(1)
+.end
+
 # Local Variables:
 #   mode: pir
 #   fill-column: 100

Modified: branches/pbc_frozen_strings1/t/op/string.t
==============================================================================
--- branches/pbc_frozen_strings1/t/op/string.t	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/t/op/string.t	Sun May  2 22:14:53 2010	(r46220)
@@ -695,7 +695,7 @@
    ord $I0,$S0
    ok( 0, 'no exception: 2-param ord, empty string register' )
  handler:
-   .exception_is( 'Cannot get character of empty string' )
+   .exception_is( 'Cannot get character of NULL string' )
 .end
 
 .sub exception_three_param_ord_empty_string
@@ -711,7 +711,7 @@
    ord $I0,$S0,0
    ok( 0, 'no exception: 3-param ord, empty string register' )
  handler:
-   .exception_is( 'Cannot get character of empty string' )
+   .exception_is( 'Cannot get character of NULL string' )
 .end
 
 .sub two_param_ord_one_character_string

Modified: branches/pbc_frozen_strings1/t/pmc/packfile.t
==============================================================================
--- branches/pbc_frozen_strings1/t/pmc/packfile.t	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/t/pmc/packfile.t	Sun May  2 22:14:53 2010	(r46220)
@@ -22,7 +22,7 @@
 .sub main :main
 .include 'test_more.pir'
 
-    plan(34)
+    plan(36)
     'test_new'()
     'test_get_string'()
     'test_set_string'()
@@ -32,8 +32,10 @@
     'test_load'()
     'test_pack_fresh_packfile'()
     'test_pack'()
-    # This test will crash on many platforms. See TT #545.
-    #'test_synonyms'()
+
+    skip(2, "test_synonyms crash on many platforms. See TT #545")
+    # 'test_synonyms'()
+
 .end
 
 
@@ -43,11 +45,10 @@
     pf = new ['Packfile']
     $I0 = defined pf
     ok($I0, 'new')
-    _check_header(pf)
+    .tailcall _check_header(pf)
 .end
 
 
-# Packfile.get_integer_keyed_str
 .sub 'test_get_string'
     .local pmc pf
     pf = new ['Packfile']
@@ -66,7 +67,6 @@
     .return ()
 .end
 
-# Packfile.get_integer_keyed_str
 .sub 'test_set_string'
     .local pmc pf
     pf = new ['Packfile']
@@ -95,12 +95,11 @@
 .end
 
 
-
-
-# Packfile.set_string_native, Packfile.get_integer_keyed_str
 .sub 'test_get_integer'
     .local pmc pf
+    push_eh load_error
     pf  = _pbc()
+    pop_eh
     $I0 = pf["version_major"]
     ok(1, "get_integer_keyed_str(version_major)")
 
@@ -120,14 +119,23 @@
     pop_eh
     ok(1, "get_integer_keyed_str handle unknown key properly")
     .return ()
-
+load_error:
+    .get_results($P0)
+    pop_eh
+    report_load_error($P0, "get_integer_keyed_str(version_major)")
+    report_load_error($P0, "get_integer_keyed_str(version_minor)")
+    report_load_error($P0, "get_integer_keyed_str(version_patch)")
+    report_load_error($P0, "get_integer_keyed_str unknown key")
+    .return()
 .end
 
 
 # Packfile.set_integer_keyed_str
 .sub 'test_set_integer'
     .local pmc pf
+    push_eh load_error
     pf  = _pbc()
+    pop_eh
     $S1 = 'version_major'
     $I0 = pf[$S1]
     $I1 = $I0
@@ -137,6 +145,12 @@
     $I3 = cmp $I0, $I2
     $I3 = cmp $I3, 0
     ok($I3, 'set_integer_keyed_str version bumped')
+    .return()
+load_error:
+    .get_results($P0)
+    pop_eh
+    report_load_error($P0, 'set_integer_keyed_str version bumped')
+    .return()
 .end
 
 # Packfile.get_directory
@@ -151,12 +165,20 @@
 # PackfileSegment.pack (via subclass PackfileDirectory)
 .sub 'test_get_directory'
     .local pmc pf, pfdir
+    push_eh load_error
     pf    = _pbc()
+    pop_eh
     pfdir = pf.'get_directory'()
     $S0   = pfdir.'pack'()
     $I0   = length $S0
     $I1 = cmp $I0, 0
     ok($I1, 'get_directory')
+    .return()
+load_error:
+    .get_results($P0)
+    pop_eh
+    report_load_error($P0, 'get_directory')
+    .return()
 .end
 
 
@@ -164,9 +186,18 @@
 # Check that packfile was loaded properly and set various attributes
 .sub 'test_load'
     .local pmc pf
+    push_eh load_error
     pf = _pbc()
+    pop_eh
 
-    _check_header(pf)
+    .tailcall _check_header(pf)
+load_error:
+    .get_results($P0)
+    pop_eh
+    report_load_error($P0, "Wordsize set")
+    report_load_error($P0, "version_major set")
+    report_load_error($P0, "bytecode_major set")
+    .return()
 .end
 
 # Helper sub to check fields in Packfile header
@@ -265,6 +296,7 @@
 # Check that unpack-pack produce correct result.
 .sub 'test_pack'
     .local string filename, first
+    push_eh load_error
     $S0 = '_filename'()
     $P0 = open $S0, 'r'
 
@@ -273,6 +305,7 @@
     .local pmc packfile
     packfile = new 'Packfile'
     packfile = first
+    pop_eh
 
     # Packed file should be exactly the same as loaded
     .local string second
@@ -282,12 +315,20 @@
     $I0 = cmp first, second
     $I0 = not $I0
     todo($I0, 'pack produced same result twice')
+    .return()
+load_error:
+    .get_results($P0)
+    pop_eh
+    report_load_error($P0, 'pack produced same result twice')
+    .return()
 .end
 
 # Test pack/set_string unpack/get_string equivalency
 .sub 'test_synonyms'
     .local pmc pf
+    push_eh load_error
     pf = '_pbc'()
+    pop_eh
 
     $S0 = pf
     $S1 = pf.'pack'()
@@ -304,6 +345,13 @@
     $S1 = $P1
     $I0 = cmp $S0, $S1
     is($I0, 0, "unpack and set_string are synonyms")
+    .return()
+load_error:
+    .get_results($P0)
+    pop_eh
+    report_load_error($P0, "pack and get_string are synonyms")
+    report_load_error($P0, "unpack and set_string are synonyms")
+    .return()
 .end
 
 

Modified: branches/pbc_frozen_strings1/t/pmc/packfileannotations.t
==============================================================================
--- branches/pbc_frozen_strings1/t/pmc/packfileannotations.t	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/t/pmc/packfileannotations.t	Sun May  2 22:14:53 2010	(r46220)
@@ -40,11 +40,20 @@
 .sub 'test_unpack'
     .local pmc pf
 
+    push_eh load_error
     $P0 = open 't/native_pbc/annotations.pbc'
+    $P0.'encoding'('binary')
     $S0 = $P0.'readall'()
     pf = new 'Packfile'
     pf = $S0
+    pop_eh
     .tailcall '!test_unpack'(pf)
+load_error:
+    .get_results($P0)
+    pop_eh
+    report_load_error($P0, "PackfileAnnotations unpack failed to load test file")
+    skip(7, "PackfileAnnotations unpack tests failed")
+    .return()
 .end
 
 # Programatically create PBC same as t/native_pbc/annotations.pbc and check unpack of it.
@@ -146,7 +155,7 @@
   fail:
     nok(1, "PackfileAnnotations wasn't found in Directory")
     # BAIL_OUT
-    skip(9, "PackfileAnnotations tests failed")
+    skip(7, "PackfileAnnotations tests failed")
 .end
 
 # Local Variables:

Modified: branches/pbc_frozen_strings1/t/pmc/packfileconstanttable.t
==============================================================================
--- branches/pbc_frozen_strings1/t/pmc/packfileconstanttable.t	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/t/pmc/packfileconstanttable.t	Sun May  2 22:14:53 2010	(r46220)
@@ -36,14 +36,21 @@
 .end
 
 
-
 # sanity check we have a PackfileConstantTable
 .sub 'test_sanity'
     .local pmc pbc, pftable
     .local string name
+    push_eh load_error
     pbc     = _pbc()
+    pop_eh
     pftable = _get_consttable(pbc)
     isa_ok(pftable, "PackfileConstantTable")
+    .return ()
+load_error:
+    .get_results($P0)
+    pop_eh
+    report_load_error($P0, "PackfileConstantTable")
+    .return()
 .end
 
 
@@ -51,10 +58,18 @@
 .sub 'test_elements'
     .local pmc pf, pftable
     .local int size
+    push_eh load_error
     pf      = _pbc()
+    pop_eh
     pftable = _get_consttable(pf)
     size    = elements pftable
     ok(size, "PackfileConstantTable.elements returns non-zero")
+    .return ()
+load_error:
+    .get_results($P0)
+    pop_eh
+    report_load_error($P0, "PackfileConstantTable.elements returns non-zero")
+    .return()
 .end
 
 
@@ -62,7 +77,9 @@
 .sub 'test_get'
     .local pmc pf, pftable
     .local int size, this, type
+    push_eh load_error
     pf      = _pbc()
+    pop_eh
     pftable = _get_consttable(pf)
     size    = elements pftable
     this    = 0
@@ -103,6 +120,11 @@
   bad:
     ok(0, 'Unknown constant type')
     .return()
+load_error:
+    .get_results($P0)
+    pop_eh
+    report_load_error($P0, 'PackfileConstantTable.get_*_int works')
+    .return()
 .end
 
 # Test setting constants into PackfileConstantTable

Modified: branches/pbc_frozen_strings1/t/pmc/packfiledirectory.t
==============================================================================
--- branches/pbc_frozen_strings1/t/pmc/packfiledirectory.t	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/t/pmc/packfiledirectory.t	Sun May  2 22:14:53 2010	(r46220)
@@ -30,6 +30,7 @@
     'test_set_pmc_keyed_str'()
 .end
 
+
 # Test creation of fresh directory
 .sub 'test_create'
     .local pmc dir, seg
@@ -62,10 +63,18 @@
 # PackfileDirectory.elements
 .sub 'test_elements'
     .local pmc pf, pfdir
+    push_eh load_error
     pf    = _pbc()
+    pop_eh
     pfdir = pf.'get_directory'()
     $I0   = elements pfdir
     is($I0, 4, 'PackfileDirectory.elements')
+    .return()
+load_error:
+    .get_results($P0)
+    pop_eh
+    report_load_error($P0, 'PackfileDirectory.elements')
+    .return()
 .end
 
 
@@ -80,7 +89,9 @@
     expected["FIXUP"]    = 1
     expected["CONSTANT"] = 1
 
+    push_eh load_error
     pf    = _pbc()
+    pop_eh
     pfdir = pf.'get_directory'()
     $I0   = elements pfdir
     it    = iter pfdir
@@ -105,12 +116,20 @@
     goto loop
   done:
     .return ()
+load_error:
+    .get_results($P0)
+    pop_eh
+    report_load_error($P0, "can't run get_iter tests")
+    skip(11, "can't run get_iter tests")
+    .return()
 .end
 
 ## PackfileDirectory.set_pmc_keyed_str
 .sub 'test_set_pmc_keyed_str'
     .local pmc pf, pfdir, seg
+    push_eh load_error
     pf    = _pbc()
+    pop_eh
     pfdir = pf.'get_directory'()
     seg   = new [ 'PackfileRawSegment' ]
 
@@ -140,6 +159,13 @@
 
   done:
     .return()
+load_error:
+    .get_results($P0)
+    pop_eh
+    report_load_error($P0, "Segment with old name was added")
+    report_load_error($P0, "New segment added")
+    report_load_error($P0, "segment deleted")
+    .return()
 .end
 
 # Local Variables:

Modified: branches/pbc_frozen_strings1/t/pmc/packfilefixupentry.t
==============================================================================
--- branches/pbc_frozen_strings1/t/pmc/packfilefixupentry.t	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/t/pmc/packfilefixupentry.t	Sun May  2 22:14:53 2010	(r46220)
@@ -35,9 +35,17 @@
 .sub 'test_sanity'
     .local pmc pf, pftable
     .local string name
+    push_eh load_error
     pf      = _pbc()
+    pop_eh
     pftable = _get_fixup_table(pf)
     isa_ok(pftable, 'PackfileFixupTable')
+    .return()
+load_error:
+    .get_results($P0)
+    pop_eh
+    report_load_error($P0, 'PackfileFixupTable')
+    .return()
 .end
 
 
@@ -45,10 +53,18 @@
 .sub 'test_sanity_entry'
     .local pmc pf, pftable, pfentry
     .local string name
+    push_eh load_error
     pf      = _pbc()
+    pop_eh
     pftable = _get_fixup_table(pf)
     pfentry = pftable[0]
     isa_ok(pfentry, 'PackfileFixupEntry')
+    .return()
+load_error:
+    .get_results($P0)
+    pop_eh
+    report_load_error($P0, 'PackfileFixupEntry')
+    .return()
 .end
 
 
@@ -57,7 +73,9 @@
     .local pmc pf, pftable, pfentry
     .local int size, this, data
     .local string name, label
+    push_eh load_error
     pf      = _pbc()
+    pop_eh
     pftable = _get_fixup_table(pf)
     size    = elements pftable
     this    = 0
@@ -79,6 +97,12 @@
     gt size, 0, done
   done:
     ok(1, "Got entries")
+    .return()
+load_error:
+    .get_results($P0)
+    pop_eh
+    report_load_error($P0, "Got entries")
+    .return()
 .end
 
 # Local Variables:

Modified: branches/pbc_frozen_strings1/t/pmc/packfilefixuptable.t
==============================================================================
--- branches/pbc_frozen_strings1/t/pmc/packfilefixuptable.t	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/t/pmc/packfilefixuptable.t	Sun May  2 22:14:53 2010	(r46220)
@@ -28,12 +28,27 @@
     test_unpack()
 .end
 
+
+# Report no ok for loading packfile failures
+.sub report_load_error
+    .param pmc except
+    .param string desc
+    .local string msg, aux
+    msg = concat desc, ' - error loading packfile: '
+    aux = except['message']
+    msg = concat msg, aux
+    ok(0, msg)
+.end
+
+
 # Check unpackging FixupTable
 .sub 'test_unpack'
     .local pmc pf, pfdir, pftable, pfentry
     .local int size, this, data
     .local string name
+    push_eh load_error
     pf      = _pbc()
+    pop_eh
     pftable = _get_fixup_table(pf)
     isa_ok(pftable, 'PackfileFixupTable')
 
@@ -59,6 +74,13 @@
     gt size, 0, done
   done:
     ok(1, "All elements of Table are Entries")
+    .return()
+load_error:
+    .get_results($P0)
+    pop_eh
+    report_load_error($P0, "All elements of Table are Entries")
+    skip(2, "All elements of Table are Entries")
+    .return()
 .end
 
 # Local Variables:

Modified: branches/pbc_frozen_strings1/t/pmc/packfilerawsegment.t
==============================================================================
--- branches/pbc_frozen_strings1/t/pmc/packfilerawsegment.t	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/t/pmc/packfilerawsegment.t	Sun May  2 22:14:53 2010	(r46220)
@@ -35,17 +35,27 @@
 # PackfileRawSegment.elements
 .sub 'test_elements'
     .local pmc pf, pfdir, pfseg
+    push_eh load_error
     pf    = _pbc()
+    pop_eh
     pfdir = pf.'get_directory'()
     pfseg = '_find_segment_by_prefix'(pf, 'BYTECODE')
     $I0   = elements pfseg
     ok($I0, 'PackfileRawSegment contains some data')
+    .return()
+load_error:
+    .get_results($P0)
+    pop_eh
+    report_load_error($P0, 'PackfileRawSegment contains some data')
+    .return()
 .end
 
 # PackfileRawSegment.get_integer_keyed_int
 .sub 'test_get_integer'
     .local pmc pf, pfdir, pfseg
+    push_eh load_error
     pf    = _pbc()
+    pop_eh
     pfdir = pf.'get_directory'()
     pfseg = '_find_segment_by_prefix'(pf, 'BYTECODE')
 
@@ -61,6 +71,12 @@
     $I1   = pfseg[4]
     $I0   = $I0 + $I1
     ok($I0, "PackfileRawSegment.get_integer_keyed_int returns some data")
+    .return()
+load_error:
+    .get_results($P0)
+    pop_eh
+    report_load_error($P0, "PackfileRawSegment.get_integer_keyed_int returns some data")
+    .return()
 .end
 
 # PackfileRawSegment.push_integer
@@ -79,7 +95,9 @@
 # PackfileRawSegment.type
 .sub 'test_type'
     .local pmc pf, pfdir, pfseg, hash, it
+    push_eh load_error
     pf    = _pbc()
+    pop_eh
     pfdir = pf.'get_directory'()
     hash  = new ['Hash']
     # annotations.pbc contains all available segments. -1 for directory and unknown.
@@ -105,7 +123,13 @@
     $P0.'type'(.PF_DEBUG_SEG)
     $I0 = $P0.'type'()
     is($I0, .PF_DEBUG_SEG, "Type successfully changed")
-
+    .return()
+load_error:
+    .get_results($P0)
+    pop_eh
+    report_load_error($P0, "can't run test_type tests")
+    skip(2, "can't run test_type tests")
+    .return()
 .end
 
 

Deleted: branches/pbc_frozen_strings1/t/pmc/parrotrunningthread.t
==============================================================================
--- branches/pbc_frozen_strings1/t/pmc/parrotrunningthread.t	Sun May  2 22:14:53 2010	(r46219)
+++ /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/pbc_frozen_strings1/t/pmc/parrotthread.t
==============================================================================
--- branches/pbc_frozen_strings1/t/pmc/parrotthread.t	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/t/pmc/parrotthread.t	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/t/pmc/testlib/packfile_common.pir
==============================================================================
--- branches/pbc_frozen_strings1/t/pmc/testlib/packfile_common.pir	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/t/pmc/testlib/packfile_common.pir	Sun May  2 22:14:53 2010	(r46220)
@@ -70,6 +70,17 @@
 .end
 
 
+# Report no ok for loading packfile failures
+.sub report_load_error
+    .param pmc except
+    .param string desc
+    .local string msg, aux
+    msg = concat desc, ' - error loading packfile: '
+    aux = except['message']
+    msg = concat msg, aux
+    ok(0, msg)
+.end
+
 
 # Local Variables:
 #   mode: pir

Modified: branches/pbc_frozen_strings1/t/pmc/threads.t
==============================================================================
--- branches/pbc_frozen_strings1/t/pmc/threads.t	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/t/pmc/threads.t	Sun May  2 22:14:53 2010	(r46220)
@@ -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/pbc_frozen_strings1/t/src/embed.t
==============================================================================
--- branches/pbc_frozen_strings1/t/src/embed.t	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/t/src/embed.t	Sun May  2 22:14:53 2010	(r46220)
@@ -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>

Modified: branches/pbc_frozen_strings1/tools/dev/checkdepend.pl
==============================================================================
--- branches/pbc_frozen_strings1/tools/dev/checkdepend.pl	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/tools/dev/checkdepend.pl	Sun May  2 22:14:53 2010	(r46220)
@@ -49,7 +49,7 @@
 
 foreach my $file (sort grep /\.[hc]$/, @incfiles) {
     # For now, skip any files that have generated dependencies
-    next if $file =~ m{src/(ops|dynoplibs|dynpmc|pmc)/};
+    next if $file =~ m{src/(ops|dynoplibs|pmc)/};
     next if $file =~ m{src/string/(charset|encoding)/};
 
     open my $fh, '<', $file;

Modified: branches/pbc_frozen_strings1/tools/dev/mk_native_pbc
==============================================================================
--- branches/pbc_frozen_strings1/tools/dev/mk_native_pbc	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/tools/dev/mk_native_pbc	Sun May  2 22:14:53 2010	(r46220)
@@ -177,4 +177,4 @@
 
 echo ""
 echo "cd t/native_pbc"
-echo svn commit -m'native_pbc platform updates'
+echo "svn commit -m 'native_pbc platform updates'"

Deleted: branches/pbc_frozen_strings1/tools/docs/book-to-latex.pl
==============================================================================
--- branches/pbc_frozen_strings1/tools/docs/book-to-latex.pl	Sun May  2 22:14:53 2010	(r46219)
+++ /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/pbc_frozen_strings1/tools/docs/filename_and_chapter.pl
==============================================================================
--- branches/pbc_frozen_strings1/tools/docs/filename_and_chapter.pl	Sun May  2 19:09:36 2010	(r46219)
+++ branches/pbc_frozen_strings1/tools/docs/filename_and_chapter.pl	Sun May  2 22:14:53 2010	(r46220)
@@ -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( 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( IN_FH, "<$$item_list_ref[$_[0]][0]" ) ||
+        die( "$0: can't open $$item_list_ref[$_[0]][0] for reading ($!)\n" );
+    open( 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