[svn:parrot] r44252 - in branches/sys_mem_reduce: . compilers/data_json compilers/imcc compilers/pirc/src config/auto config/gen config/gen/call_list config/gen/crypto config/gen/makefiles config/gen/platform/generic config/gen/platform/openbsd docs docs/pdds/draft docs/project examples/c examples/embed examples/nci examples/pir examples/sdl ext/nqp-rx/src/stage0 include/parrot include/parrot/atomic lib/Parrot/Configure/Step lib/Parrot/Docs/Section lib/Parrot/Ops2c lib/Parrot/Pmc2c runtime/parrot/include runtime/parrot/library runtime/parrot/library/Math runtime/parrot/library/Math/Random runtime/parrot/library/Test src src/atomic src/call src/dynpmc src/gc src/interp src/io src/nci src/ops src/pmc src/runcore src/string t/codingstd t/library t/native_pbc t/op t/pmc t/src t/steps/gen tools/build tools/dev tools/util

bacek at svn.parrot.org bacek at svn.parrot.org
Sat Feb 20 22:13:10 UTC 2010


Author: bacek
Date: Sat Feb 20 22:12:51 2010
New Revision: 44252
URL: https://trac.parrot.org/parrot/changeset/44252

Log:
Bring branch up-to-date with trunk.

Conflicts:
	config/gen/crypto/digest_pmc.in
	src/pmc/orderedhash.pmc
	src/runcore/profiling.c
	tools/build/nativecall.pl

Added:
   branches/sys_mem_reduce/src/nci/
   branches/sys_mem_reduce/src/nci/api.c
   branches/sys_mem_reduce/src/nci/core_thunks.c
   branches/sys_mem_reduce/src/nci/core_thunks.nci
   branches/sys_mem_reduce/src/nci/extra_thunks.c
   branches/sys_mem_reduce/src/nci/extra_thunks.nci
      - copied, changed from r44242, branches/sys_mem_reduce/config/gen/call_list/misc.in
   branches/sys_mem_reduce/src/pmc/imageiosize.pmc
   branches/sys_mem_reduce/src/pmc/opcode.pmc
   branches/sys_mem_reduce/src/pmc/oplib.pmc
   branches/sys_mem_reduce/t/op/errorson.t
   branches/sys_mem_reduce/t/op/gc-leaky.t
   branches/sys_mem_reduce/t/pmc/imageio.t
   branches/sys_mem_reduce/t/pmc/imageiosize.t
   branches/sys_mem_reduce/t/pmc/opcode.t
   branches/sys_mem_reduce/t/pmc/oplib.t
   branches/sys_mem_reduce/tools/dev/mk_nci_thunks.pl
   branches/sys_mem_reduce/tools/dev/nci_thunk_gen.pir
      - copied, changed from r44242, branches/sys_mem_reduce/tools/build/nativecall.pir
Deleted:
   branches/sys_mem_reduce/config/gen/call_list.pm
   branches/sys_mem_reduce/config/gen/call_list/core.in
   branches/sys_mem_reduce/config/gen/call_list/misc.in
   branches/sys_mem_reduce/runtime/parrot/library/Math/Random/mt19937ar.pir
   branches/sys_mem_reduce/t/library/mt19937ar.t
   branches/sys_mem_reduce/t/library/mt19937ar.txt
   branches/sys_mem_reduce/t/steps/gen/call_list-01.t
   branches/sys_mem_reduce/tools/build/nativecall.pir
   branches/sys_mem_reduce/tools/build/nativecall.pl
Modified:
   branches/sys_mem_reduce/CREDITS
   branches/sys_mem_reduce/ChangeLog
   branches/sys_mem_reduce/Configure.pl
   branches/sys_mem_reduce/DEPRECATED.pod
   branches/sys_mem_reduce/MANIFEST
   branches/sys_mem_reduce/MANIFEST.SKIP
   branches/sys_mem_reduce/MANIFEST.generated
   branches/sys_mem_reduce/META.yml
   branches/sys_mem_reduce/NEWS
   branches/sys_mem_reduce/PBC_COMPAT
   branches/sys_mem_reduce/PLATFORMS
   branches/sys_mem_reduce/README
   branches/sys_mem_reduce/VERSION
   branches/sys_mem_reduce/compilers/data_json/Defines.mak
   branches/sys_mem_reduce/compilers/imcc/imcc.y
   branches/sys_mem_reduce/compilers/imcc/imcparser.c
   branches/sys_mem_reduce/compilers/imcc/imcparser.h
   branches/sys_mem_reduce/compilers/imcc/main.c
   branches/sys_mem_reduce/compilers/imcc/parser_util.c
   branches/sys_mem_reduce/compilers/imcc/pbc.c
   branches/sys_mem_reduce/compilers/pirc/src/bcgen.c
   branches/sys_mem_reduce/compilers/pirc/src/main.c
   branches/sys_mem_reduce/compilers/pirc/src/pir.y
   branches/sys_mem_reduce/compilers/pirc/src/pircompiler.c
   branches/sys_mem_reduce/compilers/pirc/src/pircompiler.h
   branches/sys_mem_reduce/compilers/pirc/src/pircompunit.c
   branches/sys_mem_reduce/compilers/pirc/src/pircompunit.h
   branches/sys_mem_reduce/compilers/pirc/src/piremit.c
   branches/sys_mem_reduce/compilers/pirc/src/piremit.h
   branches/sys_mem_reduce/compilers/pirc/src/pirmacro.c
   branches/sys_mem_reduce/compilers/pirc/src/pirmacro.h
   branches/sys_mem_reduce/compilers/pirc/src/pirparser.c
   branches/sys_mem_reduce/compilers/pirc/src/pirpcc.c
   branches/sys_mem_reduce/compilers/pirc/src/pirpcc.h
   branches/sys_mem_reduce/compilers/pirc/src/pirregalloc.c
   branches/sys_mem_reduce/compilers/pirc/src/pirregalloc.h
   branches/sys_mem_reduce/compilers/pirc/src/pirsymbol.c
   branches/sys_mem_reduce/compilers/pirc/src/pirsymbol.h
   branches/sys_mem_reduce/config/auto/perldoc.pm
   branches/sys_mem_reduce/config/gen/crypto/digest_pmc.in
   branches/sys_mem_reduce/config/gen/makefiles/docs.in
   branches/sys_mem_reduce/config/gen/makefiles/root.in
   branches/sys_mem_reduce/config/gen/opengl.pm
   branches/sys_mem_reduce/config/gen/platform/generic/env.c
   branches/sys_mem_reduce/config/gen/platform/generic/memexec.c
   branches/sys_mem_reduce/config/gen/platform/openbsd/memexec.c
   branches/sys_mem_reduce/docs/embed.pod
   branches/sys_mem_reduce/docs/parrothist.pod
   branches/sys_mem_reduce/docs/pdds/draft/pdd06_pasm.pod
   branches/sys_mem_reduce/docs/pdds/draft/pdd11_extending.pod
   branches/sys_mem_reduce/docs/project/release_manager_guide.pod
   branches/sys_mem_reduce/examples/c/nanoparrot.c
   branches/sys_mem_reduce/examples/c/pbc_info.c
   branches/sys_mem_reduce/examples/embed/cotorra.c
   branches/sys_mem_reduce/examples/nci/QtHelloWorld.pasm
   branches/sys_mem_reduce/examples/nci/QtHelloWorld.pir
   branches/sys_mem_reduce/examples/pir/make_hello_pbc.pir
   branches/sys_mem_reduce/examples/sdl/anim_image.pir
   branches/sys_mem_reduce/examples/sdl/bounce_parrot_logo.pir
   branches/sys_mem_reduce/examples/sdl/move_parrot_logo.pir
   branches/sys_mem_reduce/ext/nqp-rx/src/stage0/HLL-s0.pir
   branches/sys_mem_reduce/ext/nqp-rx/src/stage0/NQP-s0.pir
   branches/sys_mem_reduce/ext/nqp-rx/src/stage0/P6Regex-s0.pir
   branches/sys_mem_reduce/include/parrot/atomic/gcc_pcc.h
   branches/sys_mem_reduce/include/parrot/debugger.h
   branches/sys_mem_reduce/include/parrot/extend.h
   branches/sys_mem_reduce/include/parrot/imcc.h
   branches/sys_mem_reduce/include/parrot/interpreter.h
   branches/sys_mem_reduce/include/parrot/nci.h
   branches/sys_mem_reduce/include/parrot/oo.h
   branches/sys_mem_reduce/include/parrot/pmc.h
   branches/sys_mem_reduce/include/parrot/pmc_freeze.h
   branches/sys_mem_reduce/include/parrot/runcore_profiling.h
   branches/sys_mem_reduce/lib/Parrot/Configure/Step/List.pm
   branches/sys_mem_reduce/lib/Parrot/Docs/Section/Tools.pm
   branches/sys_mem_reduce/lib/Parrot/Ops2c/Utils.pm
   branches/sys_mem_reduce/lib/Parrot/Pmc2c/Attribute.pm
   branches/sys_mem_reduce/lib/Parrot/Pmc2c/MethodEmitter.pm
   branches/sys_mem_reduce/lib/Parrot/Pmc2c/PMCEmitter.pm
   branches/sys_mem_reduce/lib/Parrot/Pmc2c/UtilFunctions.pm
   branches/sys_mem_reduce/runtime/parrot/include/test_more.pir
   branches/sys_mem_reduce/runtime/parrot/library/Math/Rand.pir
   branches/sys_mem_reduce/runtime/parrot/library/OpenGL.pir
   branches/sys_mem_reduce/runtime/parrot/library/P6object.pir
   branches/sys_mem_reduce/runtime/parrot/library/SDL.pir
   branches/sys_mem_reduce/runtime/parrot/library/Test/More.pir
   branches/sys_mem_reduce/runtime/parrot/library/distutils.pir
   branches/sys_mem_reduce/src/atomic/gcc_x86.c
   branches/sys_mem_reduce/src/call/args.c
   branches/sys_mem_reduce/src/call/context.c
   branches/sys_mem_reduce/src/debug.c
   branches/sys_mem_reduce/src/dynext.c
   branches/sys_mem_reduce/src/dynpmc/dynlexpad.pmc
   branches/sys_mem_reduce/src/dynpmc/foo.pmc
   branches/sys_mem_reduce/src/dynpmc/gdbmhash.pmc
   branches/sys_mem_reduce/src/dynpmc/rational.pmc
   branches/sys_mem_reduce/src/embed.c
   branches/sys_mem_reduce/src/exceptions.c
   branches/sys_mem_reduce/src/extend.c
   branches/sys_mem_reduce/src/frame_builder.c
   branches/sys_mem_reduce/src/gc/alloc_resources.c
   branches/sys_mem_reduce/src/gc/gc_inf.c
   branches/sys_mem_reduce/src/gc/gc_ms.c
   branches/sys_mem_reduce/src/gc/gc_private.h
   branches/sys_mem_reduce/src/global.c
   branches/sys_mem_reduce/src/global_setup.c
   branches/sys_mem_reduce/src/hash.c
   branches/sys_mem_reduce/src/hll.c
   branches/sys_mem_reduce/src/interp/inter_cb.c
   branches/sys_mem_reduce/src/interp/inter_create.c
   branches/sys_mem_reduce/src/interp/inter_misc.c
   branches/sys_mem_reduce/src/io/api.c
   branches/sys_mem_reduce/src/io/socket_api.c
   branches/sys_mem_reduce/src/io/socket_unix.c
   branches/sys_mem_reduce/src/io/socket_win32.c
   branches/sys_mem_reduce/src/key.c
   branches/sys_mem_reduce/src/library.c
   branches/sys_mem_reduce/src/main.c
   branches/sys_mem_reduce/src/multidispatch.c
   branches/sys_mem_reduce/src/nci_test.c
   branches/sys_mem_reduce/src/oo.c
   branches/sys_mem_reduce/src/ops/bit.ops
   branches/sys_mem_reduce/src/ops/cmp.ops
   branches/sys_mem_reduce/src/ops/core.ops
   branches/sys_mem_reduce/src/ops/experimental.ops
   branches/sys_mem_reduce/src/ops/io.ops
   branches/sys_mem_reduce/src/ops/math.ops
   branches/sys_mem_reduce/src/ops/object.ops
   branches/sys_mem_reduce/src/ops/pmc.ops
   branches/sys_mem_reduce/src/packfile.c
   branches/sys_mem_reduce/src/pmc.c
   branches/sys_mem_reduce/src/pmc/arrayiterator.pmc
   branches/sys_mem_reduce/src/pmc/bigint.pmc
   branches/sys_mem_reduce/src/pmc/bignum.pmc
   branches/sys_mem_reduce/src/pmc/callcontext.pmc
   branches/sys_mem_reduce/src/pmc/capture.pmc
   branches/sys_mem_reduce/src/pmc/class.pmc
   branches/sys_mem_reduce/src/pmc/codestring.pmc
   branches/sys_mem_reduce/src/pmc/complex.pmc
   branches/sys_mem_reduce/src/pmc/continuation.pmc
   branches/sys_mem_reduce/src/pmc/coroutine.pmc
   branches/sys_mem_reduce/src/pmc/cpointer.pmc
   branches/sys_mem_reduce/src/pmc/default.pmc
   branches/sys_mem_reduce/src/pmc/env.pmc
   branches/sys_mem_reduce/src/pmc/exception.pmc
   branches/sys_mem_reduce/src/pmc/exporter.pmc
   branches/sys_mem_reduce/src/pmc/fixedbooleanarray.pmc
   branches/sys_mem_reduce/src/pmc/fixedfloatarray.pmc
   branches/sys_mem_reduce/src/pmc/fixedintegerarray.pmc
   branches/sys_mem_reduce/src/pmc/fixedpmcarray.pmc
   branches/sys_mem_reduce/src/pmc/fixedstringarray.pmc
   branches/sys_mem_reduce/src/pmc/float.pmc
   branches/sys_mem_reduce/src/pmc/hash.pmc
   branches/sys_mem_reduce/src/pmc/hashiterator.pmc
   branches/sys_mem_reduce/src/pmc/imageio.pmc
   branches/sys_mem_reduce/src/pmc/integer.pmc
   branches/sys_mem_reduce/src/pmc/key.pmc
   branches/sys_mem_reduce/src/pmc/lexinfo.pmc
   branches/sys_mem_reduce/src/pmc/managedstruct.pmc
   branches/sys_mem_reduce/src/pmc/namespace.pmc
   branches/sys_mem_reduce/src/pmc/nci.pmc
   branches/sys_mem_reduce/src/pmc/object.pmc
   branches/sys_mem_reduce/src/pmc/orderedhash.pmc
   branches/sys_mem_reduce/src/pmc/os.pmc
   branches/sys_mem_reduce/src/pmc/packfile.pmc
   branches/sys_mem_reduce/src/pmc/packfileannotations.pmc
   branches/sys_mem_reduce/src/pmc/packfileconstanttable.pmc
   branches/sys_mem_reduce/src/pmc/packfiledirectory.pmc
   branches/sys_mem_reduce/src/pmc/packfilefixuptable.pmc
   branches/sys_mem_reduce/src/pmc/packfilerawsegment.pmc
   branches/sys_mem_reduce/src/pmc/parrotinterpreter.pmc
   branches/sys_mem_reduce/src/pmc/parrotlibrary.pmc
   branches/sys_mem_reduce/src/pmc/parrotthread.pmc
   branches/sys_mem_reduce/src/pmc/pmc.num
   branches/sys_mem_reduce/src/pmc/pmcproxy.pmc
   branches/sys_mem_reduce/src/pmc/pointer.pmc
   branches/sys_mem_reduce/src/pmc/resizablebooleanarray.pmc
   branches/sys_mem_reduce/src/pmc/resizablepmcarray.pmc
   branches/sys_mem_reduce/src/pmc/resizablestringarray.pmc
   branches/sys_mem_reduce/src/pmc/role.pmc
   branches/sys_mem_reduce/src/pmc/scalar.pmc
   branches/sys_mem_reduce/src/pmc/scheduler.pmc
   branches/sys_mem_reduce/src/pmc/sockaddr.pmc
   branches/sys_mem_reduce/src/pmc/string.pmc
   branches/sys_mem_reduce/src/pmc/stringhandle.pmc
   branches/sys_mem_reduce/src/pmc/stringiterator.pmc
   branches/sys_mem_reduce/src/pmc/sub.pmc
   branches/sys_mem_reduce/src/pmc/task.pmc
   branches/sys_mem_reduce/src/pmc/undef.pmc
   branches/sys_mem_reduce/src/pmc/unmanagedstruct.pmc
   branches/sys_mem_reduce/src/pmc_freeze.c
   branches/sys_mem_reduce/src/runcore/profiling.c
   branches/sys_mem_reduce/src/scheduler.c
   branches/sys_mem_reduce/src/string/api.c
   branches/sys_mem_reduce/src/sub.c
   branches/sys_mem_reduce/src/thread.c
   branches/sys_mem_reduce/src/utils.c
   branches/sys_mem_reduce/t/codingstd/c_function_docs.t
   branches/sys_mem_reduce/t/codingstd/c_parens.t
   branches/sys_mem_reduce/t/codingstd/copyright.t
   branches/sys_mem_reduce/t/codingstd/linelength.t
   branches/sys_mem_reduce/t/codingstd/trailing_space.t
   branches/sys_mem_reduce/t/library/test_more.t
   branches/sys_mem_reduce/t/native_pbc/annotations.pbc
   branches/sys_mem_reduce/t/native_pbc/integer_1.pbc
   branches/sys_mem_reduce/t/native_pbc/number_1.pbc
   branches/sys_mem_reduce/t/native_pbc/string_1.pbc
   branches/sys_mem_reduce/t/op/string_mem.t
   branches/sys_mem_reduce/t/pmc/namespace.t
   branches/sys_mem_reduce/t/pmc/pmc.t
   branches/sys_mem_reduce/t/src/embed.t
   branches/sys_mem_reduce/t/src/extend.t
   branches/sys_mem_reduce/tools/dev/mk_language_shell.pl
   branches/sys_mem_reduce/tools/util/release.json

Modified: branches/sys_mem_reduce/CREDITS
==============================================================================
--- branches/sys_mem_reduce/CREDITS	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/CREDITS	Sat Feb 20 22:12:51 2010	(r44252)
@@ -136,10 +136,12 @@
 
 N: Austin Hastings
 U: Austin
+U: Austin_Hastings
 A: austin_hastings at yahoo.com
 A: austin_h... at yahoo.com
 E: austin_hastings at yahoo.com
 D: Close
+D: Kakapo
 
 N: Benjamin Goldberg
 D: Numerous improvements and proposals.
@@ -328,6 +330,14 @@
 D: POD for the Undef PMC
 E: david.romano+p6i at gmail.com
 
+N: David E. Wheeler
+E: david at justatheory.com
+W: http://justatheory.com/
+U: theory
+A: theory
+A: David Wheeler
+S: Portland, OR
+
 N: Dennis Rieks
 D: Win32 config and build
 
@@ -692,7 +702,10 @@
 
 N: Michael H. Hind
 U: mikehh
-D: codingstd patches
+D: testing parrot and some HLL's
+D: fixing codetest failures
+D: adding function documentation
+D: tracwiki additions
 E: mike.hind at gmail.com
 
 N: Michael G. Schwern

Modified: branches/sys_mem_reduce/ChangeLog
==============================================================================
--- branches/sys_mem_reduce/ChangeLog	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/ChangeLog	Sat Feb 20 22:12:51 2010	(r44252)
@@ -1,5 +1,9 @@
 #1 $Id$
 
+2010.02.16     darbelo
+	* Released 2.1.0
+	See NEWS for more.
+
 2010.01.19     chromatic
 	* Released 2.0.0
 	See NEWS for more.

Modified: branches/sys_mem_reduce/Configure.pl
==============================================================================
--- branches/sys_mem_reduce/Configure.pl	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/Configure.pl	Sat Feb 20 22:12:51 2010	(r44252)
@@ -646,7 +646,6 @@
     gen::core_pmcs
     gen::crypto
     gen::opengl
-    gen::call_list
     gen::makefiles
     gen::platform
     gen::config_pm

Modified: branches/sys_mem_reduce/DEPRECATED.pod
==============================================================================
--- branches/sys_mem_reduce/DEPRECATED.pod	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/DEPRECATED.pod	Sat Feb 20 22:12:51 2010	(r44252)
@@ -52,16 +52,6 @@
 
 L<https://trac.parrot.org/parrot/ticket/264>
 
-=item Use of undocumented variables in class_init [eligible in 2.1]
-
-The current implementation allows the class_init vtable function body to
-use local symbols from the generated part. For example, some PMC used
-to use the pass counter. In the future, the class_init body from the PMC
-file may not be inserted directly in the body of the generated one,
-so this usage will not be allowed.
-
-L<https://trac.parrot.org/parrot/ticket/918>
-
 =item Overriding vtable invoke in PIR objects [experimental]
 
 The VTABLE invoke in object.pmc puts SELF at the start of the
@@ -76,6 +66,22 @@
 
 L<https://trac.parrot.org/parrot/ticket/1407>
 
+=item Digest dynpmcs [eligible in 2.4]
+
+The digest dynpmcs are, since the posting of this notice, available on
+http://gitorious.org/digest-dynpmcs and will no longer be distributed
+with parrot after 2.3.
+
+L<https://trac.parrot.org/parrot/ticket/1467>
+
+=item gdbmhash dynpmc [eligible in 2.4]
+
+The gdbmhash dynpmc is, since the posting of this notice, available on
+http://gitorious.org/dbm-dynpmcs and will no longer be distributed
+with parrot after 2.3.
+
+L<https://trac.parrot.org/parrot/ticket/1469>
+
 =back
 
 =head1 Opcodes
@@ -117,6 +123,11 @@
 
 L<https://trac.parrot.org/parrot/ticket/1406>
 
+=item GC_SYS_NAME option to interpinfo_s_i [experimental]
+
+Ability to get the string name of the current GC core from the interpinfo_s_i.
+See r43900 and r43904 for details.
+
 =back
 
 =head1 Bytecode
@@ -149,27 +160,6 @@
 
 L<https://trac.parrot.org/parrot/ticket/906>
 
-=item named class/pmc lookup in pir syntax such as new, isa, subclass,
-    get_class, etc [eligible in 1.1]
-
-Class PMC name resolution will be the following.
-
-if the arg is a STRING
-  Relative to the current Namespace
-
-if the arg is a Array (of any sort) or Key
-  Relative to the current HLL Namespace
-
-if the arg is a Namespace or Class PMC
-  The passed in class or the class attached to the passed in namespace.
-
-L<https://trac.parrot.org/parrot/ticket/159>
-
-=item load or include paths prefixed with 'library/' or 'include/'
-[eligible in 1.5]
-
-L<https://trac.parrot.org/parrot/ticket/511>
-
 =item continuation-based ExceptionHandlers [eligible in 2.1]
 
 L<https://trac.parrot.org/parrot/ticket/1091>
@@ -199,44 +189,18 @@
 =item C API coding standards cleanup [eligible in 1.1]
 
 All C API functions that aren't currently named according to the
-'Parrot_<system>_*' scheme will be renamed. If you depend on these
-functions in an extending/embedding interface or C-level custom PMCs,
-check in 1.4 or 2.0 for the new names.
+'Parrot_<system>_*' scheme will be renamed. A list of renamed
+functions will be kept in the ticket at:
 
 L<https://trac.parrot.org/parrot/ticket/443>
 
-=item Sub/method invocation functions [eligible in 2.1]
-
-The old 'Parrot_call_*' functions for invoking a sub/method object from C are
-deprecated, replaced by 'Parrot_ext_call'.
-
-L<https://trac.parrot.org/parrot/ticket/1145>
-
 =item PMC Attributes Allocation Functions [experimental]
 
  Parrot_gc_allocate_pmc_attributes
  Parrot_gc_free_pmc_attributes
 
 These items and related helper functions are added as experimental support
-for TT #895
-
-=item PDB_compile and PDB_eval [eligible in 2.1]
-
-The function PDB_compile doesn't work since some time, and his implementation
-was a hack. His functionality may be reimplemented in another way. Until the
-end of deprecation cycle it just throws an exception.
-
-The PDB_eval function, that used in the debugger to support the eval
-command, was using PDB_compile. His functionality must be reimplemented
-in another way and with a name that follows current conventions, in the
-meantime and until the end of the deprecation cycle it just shows a
-diagnostic message.
-
-L<https://trac.parrot.org/parrot/ticket/872>
-
-=item Parrot_oo_get_namespace [eligible in 2.1]
-
-L<https://trac.parrot.org/parrot/ticket/1069>
+for L<https://trac.parrot.org/parrot/ticket/895>
 
 =item STRING Out parameters in Parrot_str_* functions [eligible in 2.1]
 
@@ -247,17 +211,6 @@
 
 =head1 Compiler tools
 
-=head2 PASM1 compiler
-
-=over 4
-
-=item C<PASM1 compiler> [eligible in 2.1]
-
-See PDB_compile. Note that the current version of the C<PASM1> compiler
-issues a warning and is not functional. (However, it used to segfault.)
-
-=back
-
 =head2 Parrot Grammar Engine (PGE)
 
 =over 4
@@ -306,35 +259,20 @@
 
 =back
 
-=head2 Not Quite Perl (NQP)
+=head1 Compilers
 
 =over 4
 
-=item C< $(...) > syntax  [eligible in 1.5]
+=item json [eligible in 2.4]
 
-The C< $(...) > syntax for obtaining a result object from a Match
-object will no longer work.  The new syntax is to invoke the
-C<.ast> method on the Match object.
+The json compiler was dupicated into data_json some time ago. If you're
+using json, just use data_json instead, it's the same code. See TT #1461.
 
-L<https://trac.parrot.org/parrot/ticket/459>
+=item nqp [eligible in 2.4]
 
-=item Quoted items [eligible in 1.5]
+Replaced by ext/nqp-rx and parrot-nqp.
 
-Double-quoted strings will interpret unescaped $-names
-as interpolated variables in the string.  Bare slashes
-will introduce regular expressions.  The C<< <foo bar> >>
-syntax will produce an array of strings instead of a single
-string.
-
-L<https://trac.parrot.org/parrot/ticket/837>
-
-=item C<< PIR q:to:<xyz> >> inline PIR [eligible in 1.5]
-
-The C<< PIR q:to:<xyz> >> form of inline PIR in NQP scripts is
-deprecated.  Use C< Q:PIR { ... } >  or C< Q:PIR {{ ... }} >
-instead.
-
-L<https://trac.parrot.org/parrot/ticket/842>
+L<http://trac.parrot.org/parrot/ticket/1462>
 
 =back
 
@@ -342,11 +280,12 @@
 
 =over 4
 
-=item MT19937 [eligible in 2.1]
+=item PARROT_LIBRARY and PARROT_INCLUDE environment variables [experimental]
+
+L<https://trac.parrot.org/parrot/ticket/1429>
 
-L<https://trac.parrot.org/parrot/ticket/1278> - latest version now hosted
-at L<http://github.com/fperrad/parrot-MT19937>. After 2.0, users will have
-to install via C<plumage>.
+A way to provide an equivalent of -L and -I parrot command line options
+to language that doesn't support it.
 
 =item JSON, JSON, and Config;JSON [eligible in 1.5]
 

Modified: branches/sys_mem_reduce/MANIFEST
==============================================================================
--- branches/sys_mem_reduce/MANIFEST	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/MANIFEST	Sat Feb 20 22:12:51 2010	(r44252)
@@ -1,7 +1,7 @@
 # ex: set ro:
 # $Id$
 #
-# generated by tools/dev/mk_manifest_and_skip.pl Sun Feb  7 21:29:31 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Sat Feb 20 18:21:54 2010 UT
 #
 # See below for documentation on the format of this file.
 #
@@ -303,9 +303,6 @@
 config/auto/va_ptr/test_c.in                                []
 config/auto/warnings.pm                                     []
 config/auto/warnings/test_c.in                              []
-config/gen/call_list.pm                                     []
-config/gen/call_list/core.in                                []
-config/gen/call_list/misc.in                                []
 config/gen/config_h.pm                                      []
 config/gen/config_h/config_h.in                             []
 config/gen/config_h/feature_h.in                            []
@@ -1232,7 +1229,6 @@
 runtime/parrot/library/JSON.pir                             [library]
 runtime/parrot/library/MIME/Base64.pir                      [library]
 runtime/parrot/library/Math/Rand.pir                        [library]
-runtime/parrot/library/Math/Random/mt19937ar.pir            [library]
 runtime/parrot/library/NCI/Utils.pir                        [library]
 runtime/parrot/library/OpenGL.pir                           [library]
 runtime/parrot/library/OpenGL/Math.pir                      [library]
@@ -1371,6 +1367,11 @@
 src/main.c                                                  []
 src/misc.c                                                  []
 src/multidispatch.c                                         []
+src/nci/api.c                                               []
+src/nci/core_thunks.c                                       []
+src/nci/core_thunks.nci                                     []
+src/nci/extra_thunks.c                                      []
+src/nci/extra_thunks.nci                                    []
 src/nci_test.c                                              []
 src/oo.c                                                    []
 src/ops/bit.ops                                             []
@@ -1430,6 +1431,7 @@
 src/pmc/hashiterator.pmc                                    [devel]src
 src/pmc/hashiteratorkey.pmc                                 [devel]src
 src/pmc/imageio.pmc                                         [devel]src
+src/pmc/imageiosize.pmc                                     [devel]src
 src/pmc/integer.pmc                                         [devel]src
 src/pmc/iterator.pmc                                        [devel]src
 src/pmc/key.pmc                                             [devel]src
@@ -1441,6 +1443,8 @@
 src/pmc/nci.pmc                                             [devel]src
 src/pmc/null.pmc                                            [devel]src
 src/pmc/object.pmc                                          [devel]src
+src/pmc/opcode.pmc                                          [devel]src
+src/pmc/oplib.pmc                                           [devel]src
 src/pmc/orderedhash.pmc                                     [devel]src
 src/pmc/orderedhashiterator.pmc                             [devel]src
 src/pmc/os.pmc                                              [devel]src
@@ -1723,8 +1727,6 @@
 t/library/iter.t                                            [test]
 t/library/md5.t                                             [test]
 t/library/mime_base64.t                                     [test]
-t/library/mt19937ar.t                                       [test]
-t/library/mt19937ar.txt                                     [test]
 t/library/p6object.t                                        [test]
 t/library/parrotlib.t                                       [test]
 t/library/pcre.t                                            [test]
@@ -1810,9 +1812,11 @@
 t/op/comp.t                                                 [test]
 t/op/copy.t                                                 [test]
 t/op/debuginfo.t                                            [test]
+t/op/errorson.t                                             [test]
 t/op/exceptions.t                                           [test]
 t/op/exit.t                                                 [test]
 t/op/fetch.t                                                [test]
+t/op/gc-leaky.t                                             [test]
 t/op/gc.t                                                   [test]
 t/op/globals.t                                              [test]
 t/op/ifunless.t                                             [test]
@@ -1896,6 +1900,8 @@
 t/pmc/hash.t                                                [test]
 t/pmc/hashiterator.t                                        [test]
 t/pmc/hashiteratorkey.t                                     [test]
+t/pmc/imageio.t                                             [test]
+t/pmc/imageiosize.t                                         [test]
 t/pmc/integer.t                                             [test]
 t/pmc/io.t                                                  [test]
 t/pmc/io_iterator.t                                         [test]
@@ -1915,6 +1921,8 @@
 t/pmc/object-mro.t                                          [test]
 t/pmc/object.t                                              [test]
 t/pmc/objects.t                                             [test]
+t/pmc/opcode.t                                              [test]
+t/pmc/oplib.t                                               [test]
 t/pmc/orderedhash.t                                         [test]
 t/pmc/orderedhashiterator.t                                 [test]
 t/pmc/os.t                                                  [test]
@@ -2018,7 +2026,6 @@
 t/steps/auto/thread-01.t                                    [test]
 t/steps/auto/va_ptr-01.t                                    [test]
 t/steps/auto/warnings-01.t                                  [test]
-t/steps/gen/call_list-01.t                                  [test]
 t/steps/gen/config_h-01.t                                   [test]
 t/steps/gen/config_pm-01.t                                  [test]
 t/steps/gen/core_pmcs-01.t                                  [test]
@@ -2132,8 +2139,6 @@
 tools/build/fixup_gen_file.pl                               []
 tools/build/h2inc.pl                                        []
 tools/build/headerizer.pl                                   []
-tools/build/nativecall.pir                                  []
-tools/build/nativecall.pl                                   []
 tools/build/ops2c.pl                                        [devel]
 tools/build/ops2pm.pl                                       []
 tools/build/parrot_config_c.pl                              []
@@ -2165,8 +2170,10 @@
 tools/dev/mk_language_shell.pl                              [devel]
 tools/dev/mk_manifest_and_skip.pl                           []
 tools/dev/mk_native_pbc                                     []
+tools/dev/mk_nci_thunks.pl                                  []
 tools/dev/mk_rpm_manifests.pl                               []
 tools/dev/nci_test_gen.pl                                   []
+tools/dev/nci_thunk_gen.pir                                 []
 tools/dev/nm.pl                                             []
 tools/dev/nopaste.pl                                        []
 tools/dev/ops_not_tested.pl                                 []

Modified: branches/sys_mem_reduce/MANIFEST.SKIP
==============================================================================
--- branches/sys_mem_reduce/MANIFEST.SKIP	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/MANIFEST.SKIP	Sat Feb 20 22:12:51 2010	(r44252)
@@ -1,6 +1,6 @@
 # ex: set ro:
 # $Id$
-# generated by tools/dev/mk_manifest_and_skip.pl Mon Feb  8 05:37:36 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Sat Feb 20 19:47:32 2010 UT
 #
 # This file should contain a transcript of the svn:ignore properties
 # of the directories in the Parrot subversion repository. (Needed for
@@ -105,6 +105,12 @@
 ^parrot_config\.pbc/
 ^parrot_debugger$
 ^parrot_debugger/
+^parrot_nci_thunk_gen$
+^parrot_nci_thunk_gen/
+^parrot_nci_thunk_gen\.c$
+^parrot_nci_thunk_gen\.c/
+^parrot_nci_thunk_gen\.pbc$
+^parrot_nci_thunk_gen\.pbc/
 ^parrot_test_run\.tar\.gz$
 ^parrot_test_run\.tar\.gz/
 ^pbc_disassemble$
@@ -258,9 +264,6 @@
 # generated from svn:ignore of 'compilers/tge/TGE/'
 ^compilers/tge/TGE/Parser\.pir$
 ^compilers/tge/TGE/Parser\.pir/
-# generated from svn:ignore of 'config/gen/call_list/'
-^config/gen/call_list/opengl\.in$
-^config/gen/call_list/opengl\.in/
 # generated from svn:ignore of 'docs/'
 ^docs/.*\.tmp$
 ^docs/.*\.tmp/
@@ -581,9 +584,6 @@
 # generated from svn:ignore of 'runtime/parrot/library/Math/'
 ^runtime/parrot/library/Math/.*\.pbc$
 ^runtime/parrot/library/Math/.*\.pbc/
-# generated from svn:ignore of 'runtime/parrot/library/Math/Random/'
-^runtime/parrot/library/Math/Random/.*\.pbc$
-^runtime/parrot/library/Math/Random/.*\.pbc/
 # generated from svn:ignore of 'runtime/parrot/library/NCI/'
 ^runtime/parrot/library/NCI/.*\.pbc$
 ^runtime/parrot/library/NCI/.*\.pbc/
@@ -632,8 +632,6 @@
 ^src/.*\.str/
 ^src/asmfun\..*$
 ^src/asmfun\..*/
-^src/call_list\.txt$
-^src/call_list\.txt/
 ^src/core_pmcs\.c$
 ^src/core_pmcs\.c/
 ^src/exec_cpu\.c$
@@ -648,6 +646,10 @@
 ^src/fingerprint\.c/
 ^src/glut_callbacks\.c$
 ^src/glut_callbacks\.c/
+^src/glut_nci_thunks\.c$
+^src/glut_nci_thunks\.c/
+^src/glut_nci_thunks\.nci$
+^src/glut_nci_thunks\.nci/
 ^src/install_config\.c$
 ^src/install_config\.c/
 ^src/jit_cpu\.c$
@@ -656,8 +658,6 @@
 ^src/jit_defs\.c/
 ^src/jit_emit\.h$
 ^src/jit_emit\.h/
-^src/nci\.c$
-^src/nci\.c/
 ^src/null_config\.c$
 ^src/null_config\.c/
 ^src/parrot_config\.c$
@@ -807,6 +807,13 @@
 ^src/io/.*\.obj/
 ^src/io/.*\.str$
 ^src/io/.*\.str/
+# generated from svn:ignore of 'src/nci/'
+^src/nci/.*\.o$
+^src/nci/.*\.o/
+^src/nci/.*\.obj$
+^src/nci/.*\.obj/
+^src/nci/.*\.str$
+^src/nci/.*\.str/
 # generated from svn:ignore of 'src/ops/'
 ^src/ops/.*\.c$
 ^src/ops/.*\.c/

Modified: branches/sys_mem_reduce/MANIFEST.generated
==============================================================================
--- branches/sys_mem_reduce/MANIFEST.generated	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/MANIFEST.generated	Sat Feb 20 22:12:51 2010	(r44252)
@@ -2,10 +2,10 @@
 # See tools/dev/install_files.pl for documentation on the
 # format of this file.
 # Please re-sort this file after *EVERY* modification
-blib/lib/libparrot.2.0.0.dylib                    [main]lib
+blib/lib/libparrot.2.1.0.dylib                    [main]lib
 blib/lib/libparrot.a                              [main]lib
 blib/lib/libparrot.dylib                          [main]lib
-blib/lib/libparrot.so.2.0.0                       [main]lib
+blib/lib/libparrot.so.2.1.0                       [main]lib
 blib/lib/libparrot.so                             [main]lib
 compilers/data_json/data_json.pbc                 [data_json]
 compilers/json/JSON.pbc                           [json]
@@ -56,6 +56,7 @@
 installable_parrot_debugger                       [main]bin
 installable_parrot.exe                            [main]bin
 installable_parrot                                [main]bin
+installable_parrot_nci_thunk_gen                  [main]bin
 installable_pbc_disassemble.exe                   [main]bin
 installable_pbc_disassemble                       [main]bin
 installable_pbc_dump.exe                          [main]bin
@@ -162,7 +163,6 @@
 runtime/parrot/library/Iter.pbc                   [main]
 runtime/parrot/library/JSON.pbc                   [main]
 runtime/parrot/library/libpcre.pbc                [main]
-runtime/parrot/library/Math/Random/mt19937ar.pbc  [main]
 runtime/parrot/library/Math/Rand.pbc              [main]
 runtime/parrot/library/MIME/Base64.pbc            [main]
 runtime/parrot/library/NCI/call_toolkit_init.pbc  [main]

Modified: branches/sys_mem_reduce/META.yml
==============================================================================
--- branches/sys_mem_reduce/META.yml	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/META.yml	Sat Feb 20 22:12:51 2010	(r44252)
@@ -4,7 +4,7 @@
 # See http://module-build.sourceforge.net/META-spec-current.html for details.
 ---
 name: parrot
-version: 2.0.0
+version: 2.1.0
 author: parrot-dev at lists.parrot.org
 abstract: a virtual machine designed for dynamic languages
 license: artistic2

Modified: branches/sys_mem_reduce/NEWS
==============================================================================
--- branches/sys_mem_reduce/NEWS	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/NEWS	Sat Feb 20 22:12:51 2010	(r44252)
@@ -1,5 +1,21 @@
 # $Id$
 
+New in 2.1.0
+- Core changes
+  + GC performance and encapsulation were greatly improved.
+  + PMC freeze refactored.
+  + More Makefile and build improvements.
+- API Changes
+  + The Array PMC was removed.
+  + Several deprecated vtables were removed.
+  + The OrderedHash PMC was substantialy improved.
+- Platforms
+  + Packaging improvements on some operating systems.
+- Tools
+  + Some cases in pbc_merge are now handled.
+  + Improvements were made to the dependency checker.
+  + New tool nativecall.pir added.
+
 New in 2.0.0
 - Features
   + Context PMCs now support attribute-based introspection

Modified: branches/sys_mem_reduce/PBC_COMPAT
==============================================================================
--- branches/sys_mem_reduce/PBC_COMPAT	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/PBC_COMPAT	Sat Feb 20 22:12:51 2010	(r44252)
@@ -27,6 +27,7 @@
 
 # please insert tab separated entries at the top of the list
 
+6.3	2010.02.16	whiteknight	Add OpLib and Opcode PMCs
 6.2	2010.01.31	cotto	serialization-related changes to ParrotInterpreter
 6.1	2010.01.30	whiteknight	remove Array PMC
 6.0	2010.01.19	chromatic	released 2.0.0

Modified: branches/sys_mem_reduce/PLATFORMS
==============================================================================
--- branches/sys_mem_reduce/PLATFORMS	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/PLATFORMS	Sat Feb 20 22:12:51 2010	(r44252)
@@ -33,6 +33,7 @@
                                 CGoto EXEC   Thr Sig
 --------------------------------------------------------------------------------
 cygwin1.7.0-x86-gcc4.3.2      4   Y    -     -   -   Y    Y     Y  20090315
+darwin9.8.0-x86-gcc4.0.1          Y    ?     Y   ?   Y    Y     Y  20100215
 dragonfly2.2.0-i386-gcc-4.1.2 4   Y    -     Y   Y   Y    Y     ?  20090427
 freebsd-x86-gcc-4.2.1         4   Y    Y     ?   ?   Y    Y     Y  20090415
 freebsd-amd64-gcc-4.2.1       8   Y    -     ?   ?   Y    Y     Y  20090720
@@ -40,7 +41,7 @@
 linux-amd64-clang-r75433      8   Y    ?     ?   ?   Y    Y*2   ?  20090913
 linux-amd64-gcc4.3.2          8   Y    -     Y   Y   Y    Y/1   Y  20091020
 linux-amd64-gcc4.3.3          8   Y    ?     Y   Y   Y    Y     ?  20090712
-linux-amd64-gcc4.4.1          8   Y    ?     Y   Y   Y    Y     Y  20091020
+linux-amd64-gcc4.4.1          8   Y    ?     Y   ?   Y    Y     Y  20100215
 linux-amd64-g++4.4.1          8   Y    ?     Y   Y   Y    Y     Y  20091116
 linux-ppc-gcc_4.4.2               Y    Y     Y   Y   Y    Y     Y  20100118
 linux-ppc64-gcc_4.4.2             Y    Y     Y   Y   Y    Y     Y  20100118

Modified: branches/sys_mem_reduce/README
==============================================================================
--- branches/sys_mem_reduce/README	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/README	Sat Feb 20 22:12:51 2010	(r44252)
@@ -1,4 +1,4 @@
-This is Parrot, version 2.0.0
+This is Parrot, version 2.1.0
 ------------------------------
 
 Parrot is Copyright (C) 2001-2010, Parrot Foundation.

Modified: branches/sys_mem_reduce/VERSION
==============================================================================
--- branches/sys_mem_reduce/VERSION	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/VERSION	Sat Feb 20 22:12:51 2010	(r44252)
@@ -1 +1 @@
-2.0.0
+2.1.0

Modified: branches/sys_mem_reduce/compilers/data_json/Defines.mak
==============================================================================
--- branches/sys_mem_reduce/compilers/data_json/Defines.mak	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/data_json/Defines.mak	Sat Feb 20 22:12:51 2010	(r44252)
@@ -1 +1,4 @@
 DATA_JSON_LIB_PBCS = compilers/data_json/data_json.pbc
+DATA_JSON_CLEANUPS = compilers/data_json/data_json.pbc \
+    compilers/data_json/data_json/grammar.pir \
+    compilers/data_json/data_json/pge2pir.pir

Modified: branches/sys_mem_reduce/compilers/imcc/imcc.y
==============================================================================
--- branches/sys_mem_reduce/compilers/imcc/imcc.y	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/imcc/imcc.y	Sat Feb 20 22:12:51 2010	(r44252)
@@ -532,7 +532,7 @@
     }
 
     r[1]          = rhs;
-    rhs->pmc_type = pmc_type(interp,
+    rhs->pmc_type = Parrot_pmc_get_type_str(interp,
         Parrot_str_new(interp, unquoted_name, name_length));
 
     mem_sys_free(unquoted_name);
@@ -2026,7 +2026,7 @@
          {
            /* there'd normally be a mem_sys_strdup() here, but the lexer already
             * copied the string, so it's safe to use directly */
-           if ((IMCC_INFO(interp)->cur_pmc_type = pmc_type(interp,
+           if ((IMCC_INFO(interp)->cur_pmc_type = Parrot_pmc_get_type_str(interp,
                Parrot_str_new(interp, $1, 0))) <= 0) {
                IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
                     "Unknown PMC type '%s'\n", $1);

Modified: branches/sys_mem_reduce/compilers/imcc/imcparser.c
==============================================================================
--- branches/sys_mem_reduce/compilers/imcc/imcparser.c	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/imcc/imcparser.c	Sat Feb 20 22:12:51 2010	(r44252)
@@ -9,27 +9,26 @@
  */
 /* HEADERIZER HFILE: none */
 /* HEADERIZER STOP */
-/* A Bison parser, made by GNU Bison 2.3.  */
 
-/* Skeleton implementation for Bison's Yacc-like parsers in C
+/* A Bison parser, made by GNU Bison 2.4.1.  */
 
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+/* Skeleton implementation for Bison's Yacc-like parsers in C
+   
+      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
+   
+   This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
@@ -40,7 +39,7 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-
+   
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
@@ -58,7 +57,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.3"
+#define YYBISON_VERSION "2.4.1"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -66,263 +65,20 @@
 /* Pure parsers.  */
 #define YYPURE 1
 
-/* Using locations.  */
-#define YYLSP_NEEDED 0
-
+/* Push parsers.  */
+#define YYPUSH 0
 
+/* Pull parsers.  */
+#define YYPULL 1
 
-/* Tokens.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     LOW_PREC = 258,
-     PARAM = 259,
-     HLL = 260,
-     TK_LINE = 261,
-     TK_FILE = 262,
-     GOTO = 263,
-     ARG = 264,
-     IF = 265,
-     UNLESS = 266,
-     PNULL = 267,
-     SET_RETURN = 268,
-     SET_YIELD = 269,
-     ADV_FLAT = 270,
-     ADV_SLURPY = 271,
-     ADV_OPTIONAL = 272,
-     ADV_OPT_FLAG = 273,
-     ADV_NAMED = 274,
-     ADV_ARROW = 275,
-     NEW = 276,
-     ADV_INVOCANT = 277,
-     ADV_CALL_SIG = 278,
-     NAMESPACE = 279,
-     DOT_METHOD = 280,
-     SUB = 281,
-     SYM = 282,
-     LOCAL = 283,
-     LEXICAL = 284,
-     CONST = 285,
-     ANNOTATE = 286,
-     INC = 287,
-     DEC = 288,
-     GLOBAL_CONST = 289,
-     PLUS_ASSIGN = 290,
-     MINUS_ASSIGN = 291,
-     MUL_ASSIGN = 292,
-     DIV_ASSIGN = 293,
-     CONCAT_ASSIGN = 294,
-     BAND_ASSIGN = 295,
-     BOR_ASSIGN = 296,
-     BXOR_ASSIGN = 297,
-     FDIV = 298,
-     FDIV_ASSIGN = 299,
-     MOD_ASSIGN = 300,
-     SHR_ASSIGN = 301,
-     SHL_ASSIGN = 302,
-     SHR_U_ASSIGN = 303,
-     SHIFT_LEFT = 304,
-     SHIFT_RIGHT = 305,
-     INTV = 306,
-     FLOATV = 307,
-     STRINGV = 308,
-     PMCV = 309,
-     LOG_XOR = 310,
-     RELOP_EQ = 311,
-     RELOP_NE = 312,
-     RELOP_GT = 313,
-     RELOP_GTE = 314,
-     RELOP_LT = 315,
-     RELOP_LTE = 316,
-     RESULT = 317,
-     RETURN = 318,
-     TAILCALL = 319,
-     YIELDT = 320,
-     GET_RESULTS = 321,
-     POW = 322,
-     SHIFT_RIGHT_U = 323,
-     LOG_AND = 324,
-     LOG_OR = 325,
-     COMMA = 326,
-     ESUB = 327,
-     DOTDOT = 328,
-     PCC_BEGIN = 329,
-     PCC_END = 330,
-     PCC_CALL = 331,
-     PCC_SUB = 332,
-     PCC_BEGIN_RETURN = 333,
-     PCC_END_RETURN = 334,
-     PCC_BEGIN_YIELD = 335,
-     PCC_END_YIELD = 336,
-     NCI_CALL = 337,
-     METH_CALL = 338,
-     INVOCANT = 339,
-     MAIN = 340,
-     LOAD = 341,
-     INIT = 342,
-     IMMEDIATE = 343,
-     POSTCOMP = 344,
-     METHOD = 345,
-     ANON = 346,
-     OUTER = 347,
-     NEED_LEX = 348,
-     MULTI = 349,
-     VTABLE_METHOD = 350,
-     LOADLIB = 351,
-     SUB_INSTANCE_OF = 352,
-     SUBID = 353,
-     NS_ENTRY = 354,
-     UNIQUE_REG = 355,
-     LABEL = 356,
-     EMIT = 357,
-     EOM = 358,
-     IREG = 359,
-     NREG = 360,
-     SREG = 361,
-     PREG = 362,
-     IDENTIFIER = 363,
-     REG = 364,
-     MACRO = 365,
-     ENDM = 366,
-     STRINGC = 367,
-     INTC = 368,
-     FLOATC = 369,
-     USTRINGC = 370,
-     PARROT_OP = 371,
-     VAR = 372,
-     LINECOMMENT = 373,
-     FILECOMMENT = 374,
-     DOT = 375,
-     CONCAT = 376
-   };
-#endif
-/* Tokens.  */
-#define LOW_PREC 258
-#define PARAM 259
-#define HLL 260
-#define TK_LINE 261
-#define TK_FILE 262
-#define GOTO 263
-#define ARG 264
-#define IF 265
-#define UNLESS 266
-#define PNULL 267
-#define SET_RETURN 268
-#define SET_YIELD 269
-#define ADV_FLAT 270
-#define ADV_SLURPY 271
-#define ADV_OPTIONAL 272
-#define ADV_OPT_FLAG 273
-#define ADV_NAMED 274
-#define ADV_ARROW 275
-#define NEW 276
-#define ADV_INVOCANT 277
-#define ADV_CALL_SIG 278
-#define NAMESPACE 279
-#define DOT_METHOD 280
-#define SUB 281
-#define SYM 282
-#define LOCAL 283
-#define LEXICAL 284
-#define CONST 285
-#define ANNOTATE 286
-#define INC 287
-#define DEC 288
-#define GLOBAL_CONST 289
-#define PLUS_ASSIGN 290
-#define MINUS_ASSIGN 291
-#define MUL_ASSIGN 292
-#define DIV_ASSIGN 293
-#define CONCAT_ASSIGN 294
-#define BAND_ASSIGN 295
-#define BOR_ASSIGN 296
-#define BXOR_ASSIGN 297
-#define FDIV 298
-#define FDIV_ASSIGN 299
-#define MOD_ASSIGN 300
-#define SHR_ASSIGN 301
-#define SHL_ASSIGN 302
-#define SHR_U_ASSIGN 303
-#define SHIFT_LEFT 304
-#define SHIFT_RIGHT 305
-#define INTV 306
-#define FLOATV 307
-#define STRINGV 308
-#define PMCV 309
-#define LOG_XOR 310
-#define RELOP_EQ 311
-#define RELOP_NE 312
-#define RELOP_GT 313
-#define RELOP_GTE 314
-#define RELOP_LT 315
-#define RELOP_LTE 316
-#define RESULT 317
-#define RETURN 318
-#define TAILCALL 319
-#define YIELDT 320
-#define GET_RESULTS 321
-#define POW 322
-#define SHIFT_RIGHT_U 323
-#define LOG_AND 324
-#define LOG_OR 325
-#define COMMA 326
-#define ESUB 327
-#define DOTDOT 328
-#define PCC_BEGIN 329
-#define PCC_END 330
-#define PCC_CALL 331
-#define PCC_SUB 332
-#define PCC_BEGIN_RETURN 333
-#define PCC_END_RETURN 334
-#define PCC_BEGIN_YIELD 335
-#define PCC_END_YIELD 336
-#define NCI_CALL 337
-#define METH_CALL 338
-#define INVOCANT 339
-#define MAIN 340
-#define LOAD 341
-#define INIT 342
-#define IMMEDIATE 343
-#define POSTCOMP 344
-#define METHOD 345
-#define ANON 346
-#define OUTER 347
-#define NEED_LEX 348
-#define MULTI 349
-#define VTABLE_METHOD 350
-#define LOADLIB 351
-#define SUB_INSTANCE_OF 352
-#define SUBID 353
-#define NS_ENTRY 354
-#define UNIQUE_REG 355
-#define LABEL 356
-#define EMIT 357
-#define EOM 358
-#define IREG 359
-#define NREG 360
-#define SREG 361
-#define PREG 362
-#define IDENTIFIER 363
-#define REG 364
-#define MACRO 365
-#define ENDM 366
-#define STRINGC 367
-#define INTC 368
-#define FLOATC 369
-#define USTRINGC 370
-#define PARROT_OP 371
-#define VAR 372
-#define LINECOMMENT 373
-#define FILECOMMENT 374
-#define DOT 375
-#define CONCAT 376
-
+/* Using locations.  */
+#define YYLSP_NEEDED 0
 
 
 
 /* Copy the first part of user declarations.  */
+
+/* Line 189 of yacc.c  */
 #line 1 "compilers/imcc/imcc.y"
 
 /*
@@ -858,7 +614,7 @@
     }
 
     r[1]          = rhs;
-    rhs->pmc_type = pmc_type(interp,
+    rhs->pmc_type = Parrot_pmc_get_type_str(interp,
         Parrot_str_new(interp, unquoted_name, name_length));
 
     mem_sys_free(unquoted_name);
@@ -1382,49 +1138,308 @@
 
 
 
+/* Line 189 of yacc.c  */
+#line 1132 "compilers/imcc/imcparser.c"
+
 /* Enabling traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
 #endif
 
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     LOW_PREC = 258,
+     PARAM = 259,
+     HLL = 260,
+     TK_LINE = 261,
+     TK_FILE = 262,
+     GOTO = 263,
+     ARG = 264,
+     IF = 265,
+     UNLESS = 266,
+     PNULL = 267,
+     SET_RETURN = 268,
+     SET_YIELD = 269,
+     ADV_FLAT = 270,
+     ADV_SLURPY = 271,
+     ADV_OPTIONAL = 272,
+     ADV_OPT_FLAG = 273,
+     ADV_NAMED = 274,
+     ADV_ARROW = 275,
+     NEW = 276,
+     ADV_INVOCANT = 277,
+     ADV_CALL_SIG = 278,
+     NAMESPACE = 279,
+     DOT_METHOD = 280,
+     SUB = 281,
+     SYM = 282,
+     LOCAL = 283,
+     LEXICAL = 284,
+     CONST = 285,
+     ANNOTATE = 286,
+     INC = 287,
+     DEC = 288,
+     GLOBAL_CONST = 289,
+     PLUS_ASSIGN = 290,
+     MINUS_ASSIGN = 291,
+     MUL_ASSIGN = 292,
+     DIV_ASSIGN = 293,
+     CONCAT_ASSIGN = 294,
+     BAND_ASSIGN = 295,
+     BOR_ASSIGN = 296,
+     BXOR_ASSIGN = 297,
+     FDIV = 298,
+     FDIV_ASSIGN = 299,
+     MOD_ASSIGN = 300,
+     SHR_ASSIGN = 301,
+     SHL_ASSIGN = 302,
+     SHR_U_ASSIGN = 303,
+     SHIFT_LEFT = 304,
+     SHIFT_RIGHT = 305,
+     INTV = 306,
+     FLOATV = 307,
+     STRINGV = 308,
+     PMCV = 309,
+     LOG_XOR = 310,
+     RELOP_EQ = 311,
+     RELOP_NE = 312,
+     RELOP_GT = 313,
+     RELOP_GTE = 314,
+     RELOP_LT = 315,
+     RELOP_LTE = 316,
+     RESULT = 317,
+     RETURN = 318,
+     TAILCALL = 319,
+     YIELDT = 320,
+     GET_RESULTS = 321,
+     POW = 322,
+     SHIFT_RIGHT_U = 323,
+     LOG_AND = 324,
+     LOG_OR = 325,
+     COMMA = 326,
+     ESUB = 327,
+     DOTDOT = 328,
+     PCC_BEGIN = 329,
+     PCC_END = 330,
+     PCC_CALL = 331,
+     PCC_SUB = 332,
+     PCC_BEGIN_RETURN = 333,
+     PCC_END_RETURN = 334,
+     PCC_BEGIN_YIELD = 335,
+     PCC_END_YIELD = 336,
+     NCI_CALL = 337,
+     METH_CALL = 338,
+     INVOCANT = 339,
+     MAIN = 340,
+     LOAD = 341,
+     INIT = 342,
+     IMMEDIATE = 343,
+     POSTCOMP = 344,
+     METHOD = 345,
+     ANON = 346,
+     OUTER = 347,
+     NEED_LEX = 348,
+     MULTI = 349,
+     VTABLE_METHOD = 350,
+     LOADLIB = 351,
+     SUB_INSTANCE_OF = 352,
+     SUBID = 353,
+     NS_ENTRY = 354,
+     UNIQUE_REG = 355,
+     LABEL = 356,
+     EMIT = 357,
+     EOM = 358,
+     IREG = 359,
+     NREG = 360,
+     SREG = 361,
+     PREG = 362,
+     IDENTIFIER = 363,
+     REG = 364,
+     MACRO = 365,
+     ENDM = 366,
+     STRINGC = 367,
+     INTC = 368,
+     FLOATC = 369,
+     USTRINGC = 370,
+     PARROT_OP = 371,
+     VAR = 372,
+     LINECOMMENT = 373,
+     FILECOMMENT = 374,
+     DOT = 375,
+     CONCAT = 376
+   };
+#endif
+/* Tokens.  */
+#define LOW_PREC 258
+#define PARAM 259
+#define HLL 260
+#define TK_LINE 261
+#define TK_FILE 262
+#define GOTO 263
+#define ARG 264
+#define IF 265
+#define UNLESS 266
+#define PNULL 267
+#define SET_RETURN 268
+#define SET_YIELD 269
+#define ADV_FLAT 270
+#define ADV_SLURPY 271
+#define ADV_OPTIONAL 272
+#define ADV_OPT_FLAG 273
+#define ADV_NAMED 274
+#define ADV_ARROW 275
+#define NEW 276
+#define ADV_INVOCANT 277
+#define ADV_CALL_SIG 278
+#define NAMESPACE 279
+#define DOT_METHOD 280
+#define SUB 281
+#define SYM 282
+#define LOCAL 283
+#define LEXICAL 284
+#define CONST 285
+#define ANNOTATE 286
+#define INC 287
+#define DEC 288
+#define GLOBAL_CONST 289
+#define PLUS_ASSIGN 290
+#define MINUS_ASSIGN 291
+#define MUL_ASSIGN 292
+#define DIV_ASSIGN 293
+#define CONCAT_ASSIGN 294
+#define BAND_ASSIGN 295
+#define BOR_ASSIGN 296
+#define BXOR_ASSIGN 297
+#define FDIV 298
+#define FDIV_ASSIGN 299
+#define MOD_ASSIGN 300
+#define SHR_ASSIGN 301
+#define SHL_ASSIGN 302
+#define SHR_U_ASSIGN 303
+#define SHIFT_LEFT 304
+#define SHIFT_RIGHT 305
+#define INTV 306
+#define FLOATV 307
+#define STRINGV 308
+#define PMCV 309
+#define LOG_XOR 310
+#define RELOP_EQ 311
+#define RELOP_NE 312
+#define RELOP_GT 313
+#define RELOP_GTE 314
+#define RELOP_LT 315
+#define RELOP_LTE 316
+#define RESULT 317
+#define RETURN 318
+#define TAILCALL 319
+#define YIELDT 320
+#define GET_RESULTS 321
+#define POW 322
+#define SHIFT_RIGHT_U 323
+#define LOG_AND 324
+#define LOG_OR 325
+#define COMMA 326
+#define ESUB 327
+#define DOTDOT 328
+#define PCC_BEGIN 329
+#define PCC_END 330
+#define PCC_CALL 331
+#define PCC_SUB 332
+#define PCC_BEGIN_RETURN 333
+#define PCC_END_RETURN 334
+#define PCC_BEGIN_YIELD 335
+#define PCC_END_YIELD 336
+#define NCI_CALL 337
+#define METH_CALL 338
+#define INVOCANT 339
+#define MAIN 340
+#define LOAD 341
+#define INIT 342
+#define IMMEDIATE 343
+#define POSTCOMP 344
+#define METHOD 345
+#define ANON 346
+#define OUTER 347
+#define NEED_LEX 348
+#define MULTI 349
+#define VTABLE_METHOD 350
+#define LOADLIB 351
+#define SUB_INSTANCE_OF 352
+#define SUBID 353
+#define NS_ENTRY 354
+#define UNIQUE_REG 355
+#define LABEL 356
+#define EMIT 357
+#define EOM 358
+#define IREG 359
+#define NREG 360
+#define SREG 361
+#define PREG 362
+#define IDENTIFIER 363
+#define REG 364
+#define MACRO 365
+#define ENDM 366
+#define STRINGC 367
+#define INTC 368
+#define FLOATC 369
+#define USTRINGC 370
+#define PARROT_OP 371
+#define VAR 372
+#define LINECOMMENT 373
+#define FILECOMMENT 374
+#define DOT 375
+#define CONCAT 376
+
+
 
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
-#endif
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 1059 "compilers/imcc/imcc.y"
 {
+
+/* Line 214 of yacc.c  */
+#line 1059 "compilers/imcc/imcc.y"
+
     IdList * idlist;
     int t;
     char * s;
     SymReg * sr;
     Instruction *i;
-}
-/* Line 187 of yacc.c.  */
-#line 1404 "compilers/imcc/imcparser.c"
-	YYSTYPE;
+
+
+
+/* Line 214 of yacc.c  */
+#line 1420 "compilers/imcc/imcparser.c"
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
 
-
 /* Copy the second part of user declarations.  */
 
 
-/* Line 216 of yacc.c.  */
-#line 1417 "compilers/imcc/imcparser.c"
+/* Line 264 of yacc.c  */
+#line 1432 "compilers/imcc/imcparser.c"
 
 #ifdef short
 # undef short
@@ -1499,14 +1514,14 @@
 #if (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 static int
-YYID (int i)
+YYID (int yyi)
 #else
 static int
-YYID (i)
-    int i;
+YYID (yyi)
+    int yyi;
 #endif
 {
-  return i;
+  return yyi;
 }
 #endif
 
@@ -1587,9 +1602,9 @@
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss;
-  YYSTYPE yyvs;
-  };
+  yytype_int16 yyss_alloc;
+  YYSTYPE yyvs_alloc;
+};
 
 /* The size of the maximum gap between one aligned stack and the next.  */
 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
@@ -1623,12 +1638,12 @@
    elements in the stack, and YYPTR gives the new location of the
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack)					\
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
     do									\
       {									\
 	YYSIZE_T yynewbytes;						\
-	YYCOPY (&yyptr->Stack, Stack, yysize);				\
-	Stack = &yyptr->Stack;						\
+	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
+	Stack = &yyptr->Stack_alloc;					\
 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
 	yyptr += yynewbytes / sizeof (*yyptr);				\
       }									\
@@ -1908,30 +1923,31 @@
   "EMIT", "EOM", "IREG", "NREG", "SREG", "PREG", "IDENTIFIER", "REG",
   "MACRO", "ENDM", "STRINGC", "INTC", "FLOATC", "USTRINGC", "PARROT_OP",
   "VAR", "LINECOMMENT", "FILECOMMENT", "DOT", "CONCAT", "'='", "'['",
-  "']'", "'('", "')'", "'new'", "'!'", "'~'", "'-'", "'+'", "'*'", "'/'",
+  "']'", "'('", "')'", "'n'", "'!'", "'~'", "'-'", "'+'", "'*'", "'/'",
   "'%'", "'&'", "'|'", "';'", "$accept", "program", "compilation_units",
   "compilation_unit", "pragma", "location_directive", "annotate_directive",
-  "hll_def", "constdef", "@1", "pmc_const", "@2", "@3", "any_string",
-  "pasmcode", "pasmline", "pasm_inst", "@4", "@5", "pasm_args", "emit",
-  "@6", "opt_pasmcode", "class_namespace", "maybe_ns", "sub", "@7", "@8",
-  "@9", "sub_params", "sub_param", "@10", "sub_param_type_def", "multi",
-  "outer", "vtable", "method", "ns_entry_name", "instanceof", "subid",
-  "multi_types", "multi_type", "sub_body", "pcc_sub_call", "@11",
+  "hll_def", "constdef", "$@1", "pmc_const", "$@2", "$@3", "any_string",
+  "pasmcode", "pasmline", "pasm_inst", "$@4", "$@5", "pasm_args", "emit",
+  "$@6", "opt_pasmcode", "class_namespace", "maybe_ns", "sub", "$@7",
+  "$@8", "$@9", "sub_params", "sub_param", "$@10", "sub_param_type_def",
+  "multi", "outer", "vtable", "method", "ns_entry_name", "instanceof",
+  "subid", "multi_types", "multi_type", "sub_body", "pcc_sub_call", "@11",
   "opt_label", "opt_invocant", "sub_proto", "sub_proto_list", "proto",
-  "pcc_call", "pcc_args", "pcc_arg", "pcc_results", "pcc_result", "@12",
-  "paramtype_list", "paramtype", "pcc_ret", "@13", "pcc_yield", "@14",
+  "pcc_call", "pcc_args", "pcc_arg", "pcc_results", "pcc_result", "$@12",
+  "paramtype_list", "paramtype", "pcc_ret", "$@13", "pcc_yield", "$@14",
   "pcc_returns", "pcc_yields", "pcc_return", "pcc_set_yield",
-  "pcc_return_many", "@15", "return_or_yield", "var_returns", "statements",
-  "helper_clear_state", "statement", "labels", "_labels", "label",
-  "instruction", "id_list", "id_list_id", "opt_unique_reg", "labeled_inst",
-  "@16", "@17", "@18", "type", "classname", "assignment", "@19", "un_op",
-  "bin_op", "get_results", "@20", "op_assign", "assign_op", "func_assign",
-  "the_sub", "sub_call", "@21", "arglist", "arg", "argtype_list",
-  "argtype", "result", "targetlist", "conditional_statement",
-  "unless_statement", "if_statement", "comma_or_goto", "relop", "target",
-  "vars", "_vars", "_var_or_i", "sub_label_op_c", "sub_label_op",
-  "label_op", "var_or_i", "var", "keylist", "@22", "keylist_force", "@23",
-  "_keylist", "key", "reg", "const", 0
+  "pcc_return_many", "$@15", "return_or_yield", "var_returns",
+  "statements", "helper_clear_state", "statement", "labels", "_labels",
+  "label", "instruction", "id_list", "id_list_id", "opt_unique_reg",
+  "labeled_inst", "$@16", "$@17", "$@18", "type", "classname",
+  "assignment", "@19", "un_op", "bin_op", "get_results", "@20",
+  "op_assign", "assign_op", "func_assign", "the_sub", "sub_call", "@21",
+  "arglist", "arg", "argtype_list", "argtype", "result", "targetlist",
+  "conditional_statement", "unless_statement", "if_statement",
+  "comma_or_goto", "relop", "target", "vars", "_vars", "_var_or_i",
+  "sub_label_op_c", "sub_label_op", "label_op", "var_or_i", "var",
+  "keylist", "$@22", "keylist_force", "$@23", "_keylist", "key", "reg",
+  "const", 0
 };
 #endif
 
@@ -2589,17 +2605,20 @@
 #if (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 static void
-yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
 #else
 static void
-yy_stack_print (bottom, top)
-    yytype_int16 *bottom;
-    yytype_int16 *top;
+yy_stack_print (yybottom, yytop)
+    yytype_int16 *yybottom;
+    yytype_int16 *yytop;
 #endif
 {
   YYFPRINTF (stderr, "Stack now");
-  for (; bottom <= top; ++bottom)
-    YYFPRINTF (stderr, " %d", *bottom);
+  for (; yybottom <= yytop; yybottom++)
+    {
+      int yybot = *yybottom;
+      YYFPRINTF (stderr, " %d", yybot);
+    }
   YYFPRINTF (stderr, "\n");
 }
 
@@ -2635,11 +2654,11 @@
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
-      fprintf (stderr, "   $%d = ", yyi + 1);
+      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
 		       &(yyvsp[(yyi + 1) - (yynrhs)])
 		       		       , yyscanner, interp);
-      fprintf (stderr, "\n");
+      YYFPRINTF (stderr, "\n");
     }
 }
 
@@ -2923,10 +2942,8 @@
 	break;
     }
 }
-
 
 /* Prevent warnings from -Wmissing-prototypes.  */
-
 #ifdef YYPARSE_PARAM
 #if defined __STDC__ || defined __cplusplus
 int yyparse (void *YYPARSE_PARAM);
@@ -2945,10 +2962,9 @@
 
 
 
-
-/*----------.
-| yyparse.  |
-`----------*/
+/*-------------------------.
+| yyparse or yypush_parse.  |
+`-------------------------*/
 
 #ifdef YYPARSE_PARAM
 #if (defined __STDC__ || defined __C99__FUNC__ \
@@ -2973,22 +2989,46 @@
 #endif
 #endif
 {
-  /* The look-ahead symbol.  */
+/* The lookahead symbol.  */
 int yychar;
 
-/* The semantic value of the look-ahead symbol.  */
+/* The semantic value of the lookahead symbol.  */
 YYSTYPE yylval;
 
-/* Number of syntax errors so far.  */
-int yynerrs;
+    /* Number of syntax errors so far.  */
+    int yynerrs;
+
+    int yystate;
+    /* Number of tokens to shift before error messages enabled.  */
+    int yyerrstatus;
+
+    /* The stacks and their tools:
+       `yyss': related to states.
+       `yyvs': related to semantic values.
+
+       Refer to the stacks thru separate pointers, to allow yyoverflow
+       to reallocate them elsewhere.  */
+
+    /* The state stack.  */
+    yytype_int16 yyssa[YYINITDEPTH];
+    yytype_int16 *yyss;
+    yytype_int16 *yyssp;
+
+    /* The semantic value stack.  */
+    YYSTYPE yyvsa[YYINITDEPTH];
+    YYSTYPE *yyvs;
+    YYSTYPE *yyvsp;
+
+    YYSIZE_T yystacksize;
 
-  int yystate;
   int yyn;
   int yyresult;
-  /* Number of tokens to shift before error messages enabled.  */
-  int yyerrstatus;
-  /* Look-ahead token as an internal (translated) token number.  */
-  int yytoken = 0;
+  /* Lookahead token as an internal (translated) token number.  */
+  int yytoken;
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
 #if YYERROR_VERBOSE
   /* Buffer for error messages, and its allocated size.  */
   char yymsgbuf[128];
@@ -2996,51 +3036,28 @@
   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
 #endif
 
-  /* Three stacks and their tools:
-     `yyss': related to states,
-     `yyvs': related to semantic values,
-     `yyls': related to locations.
-
-     Refer to the stacks thru separate pointers, to allow yyoverflow
-     to reallocate them elsewhere.  */
-
-  /* The state stack.  */
-  yytype_int16 yyssa[YYINITDEPTH];
-  yytype_int16 *yyss = yyssa;
-  yytype_int16 *yyssp;
-
-  /* The semantic value stack.  */
-  YYSTYPE yyvsa[YYINITDEPTH];
-  YYSTYPE *yyvs = yyvsa;
-  YYSTYPE *yyvsp;
-
-
-
 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 
-  YYSIZE_T yystacksize = YYINITDEPTH;
-
-  /* The variables used to return semantic value and location from the
-     action routines.  */
-  YYSTYPE yyval;
-
-
   /* The number of symbols on the RHS of the reduced rule.
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
+  yytoken = 0;
+  yyss = yyssa;
+  yyvs = yyvsa;
+  yystacksize = YYINITDEPTH;
+
   YYDPRINTF ((stderr, "Starting parse\n"));
 
   yystate = 0;
   yyerrstatus = 0;
   yynerrs = 0;
-  yychar = YYEMPTY;		/* Cause a token to be read.  */
+  yychar = YYEMPTY; /* Cause a token to be read.  */
 
   /* Initialize stack pointers.
      Waste one element of value and location stack
      so that they stay on the same level as the state stack.
      The wasted elements are never initialized.  */
-
   yyssp = yyss;
   yyvsp = yyvs;
 
@@ -3070,7 +3087,6 @@
 	YYSTYPE *yyvs1 = yyvs;
 	yytype_int16 *yyss1 = yyss;
 
-
 	/* Each stack pointer address is followed by the size of the
 	   data in use in that stack, in bytes.  This used to be a
 	   conditional around just the two extra args, but that might
@@ -3078,7 +3094,6 @@
 	yyoverflow (YY_("memory exhausted"),
 		    &yyss1, yysize * sizeof (*yyssp),
 		    &yyvs1, yysize * sizeof (*yyvsp),
-
 		    &yystacksize);
 
 	yyss = yyss1;
@@ -3101,9 +3116,8 @@
 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
 	if (! yyptr)
 	  goto yyexhaustedlab;
-	YYSTACK_RELOCATE (yyss);
-	YYSTACK_RELOCATE (yyvs);
-
+	YYSTACK_RELOCATE (yyss_alloc, yyss);
+	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
 #  undef YYSTACK_RELOCATE
 	if (yyss1 != yyssa)
 	  YYSTACK_FREE (yyss1);
@@ -3114,7 +3128,6 @@
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
-
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
 		  (unsigned long int) yystacksize));
 
@@ -3124,6 +3137,9 @@
 
   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
 
+  if (yystate == YYFINAL)
+    YYACCEPT;
+
   goto yybackup;
 
 /*-----------.
@@ -3132,16 +3148,16 @@
 yybackup:
 
   /* Do appropriate processing given the current state.  Read a
-     look-ahead token if we need one and don't already have one.  */
+     lookahead token if we need one and don't already have one.  */
 
-  /* First try to decide what to do without reference to look-ahead token.  */
+  /* First try to decide what to do without reference to lookahead token.  */
   yyn = yypact[yystate];
   if (yyn == YYPACT_NINF)
     goto yydefault;
 
-  /* Not known => get a look-ahead token if don't already have one.  */
+  /* Not known => get a lookahead token if don't already have one.  */
 
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
   if (yychar == YYEMPTY)
     {
       YYDPRINTF ((stderr, "Reading a token: "));
@@ -3173,20 +3189,16 @@
       goto yyreduce;
     }
 
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
   /* Count tokens shifted since error; after three, turn off error
      status.  */
   if (yyerrstatus)
     yyerrstatus--;
 
-  /* Shift the look-ahead token.  */
+  /* Shift the lookahead token.  */
   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
 
-  /* Discard the shifted token unless it is eof.  */
-  if (yychar != YYEOF)
-    yychar = YYEMPTY;
+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
 
   yystate = yyn;
   *++yyvsp = yylval;
@@ -3226,21 +3238,29 @@
   switch (yyn)
     {
         case 2:
+
+/* Line 1455 of yacc.c  */
 #line 1154 "compilers/imcc/imcc.y"
     { if (yynerrs) YYABORT; (yyval.i) = 0; }
     break;
 
   case 5:
+
+/* Line 1455 of yacc.c  */
 #line 1163 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 6:
+
+/* Line 1455 of yacc.c  */
 #line 1164 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 7:
+
+/* Line 1455 of yacc.c  */
 #line 1166 "compilers/imcc/imcc.y"
     {
            (yyval.i) = (yyvsp[(1) - (1)].i);
@@ -3250,6 +3270,8 @@
     break;
 
   case 8:
+
+/* Line 1455 of yacc.c  */
 #line 1172 "compilers/imcc/imcc.y"
     {
            (yyval.i) = (yyvsp[(1) - (1)].i);
@@ -3259,31 +3281,43 @@
     break;
 
   case 9:
+
+/* Line 1455 of yacc.c  */
 #line 1177 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 10:
+
+/* Line 1455 of yacc.c  */
 #line 1178 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 11:
+
+/* Line 1455 of yacc.c  */
 #line 1179 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 12:
+
+/* Line 1455 of yacc.c  */
 #line 1180 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 13:
+
+/* Line 1455 of yacc.c  */
 #line 1184 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 14:
+
+/* Line 1455 of yacc.c  */
 #line 1186 "compilers/imcc/imcc.y"
     {
            (yyval.i) = 0;
@@ -3293,6 +3327,8 @@
     break;
 
   case 15:
+
+/* Line 1455 of yacc.c  */
 #line 1195 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->line = atoi((yyvsp[(2) - (5)].s));
@@ -3302,6 +3338,8 @@
     break;
 
   case 16:
+
+/* Line 1455 of yacc.c  */
 #line 1201 "compilers/imcc/imcc.y"
     {
            /* set_filename() frees the STRINGC */
@@ -3310,6 +3348,8 @@
     break;
 
   case 17:
+
+/* Line 1455 of yacc.c  */
 #line 1209 "compilers/imcc/imcc.y"
     {
           /* We'll want to store an entry while emitting instructions, so just
@@ -3321,6 +3361,8 @@
     break;
 
   case 18:
+
+/* Line 1455 of yacc.c  */
 #line 1221 "compilers/imcc/imcc.y"
     {
             STRING * const hll_name = Parrot_str_unescape(interp, (yyvsp[(2) - (2)].s) + 1, '"', NULL);
@@ -3334,11 +3376,15 @@
     break;
 
   case 19:
+
+/* Line 1455 of yacc.c  */
 #line 1233 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 20:
+
+/* Line 1455 of yacc.c  */
 #line 1234 "compilers/imcc/imcc.y"
     {
              mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
@@ -3348,11 +3394,15 @@
     break;
 
   case 21:
+
+/* Line 1455 of yacc.c  */
 #line 1242 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 22:
+
+/* Line 1455 of yacc.c  */
 #line 1243 "compilers/imcc/imcc.y"
     {
            (yyval.i) = mk_pmc_const(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s));
@@ -3362,11 +3412,15 @@
     break;
 
   case 23:
+
+/* Line 1455 of yacc.c  */
 #line 1249 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 24:
+
+/* Line 1455 of yacc.c  */
 #line 1250 "compilers/imcc/imcc.y"
     {
            (yyval.i) = mk_pmc_const_named(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s));
@@ -3377,36 +3431,50 @@
     break;
 
   case 29:
+
+/* Line 1455 of yacc.c  */
 #line 1268 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 30:
+
+/* Line 1455 of yacc.c  */
 #line 1269 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 31:
+
+/* Line 1455 of yacc.c  */
 #line 1270 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 32:
+
+/* Line 1455 of yacc.c  */
 #line 1271 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 33:
+
+/* Line 1455 of yacc.c  */
 #line 1272 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 36:
+
+/* Line 1455 of yacc.c  */
 #line 1277 "compilers/imcc/imcc.y"
     { clear_state(interp); }
     break;
 
   case 37:
+
+/* Line 1455 of yacc.c  */
 #line 1279 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp, IMCC_INFO(interp)->cur_unit,
@@ -3417,6 +3485,8 @@
     break;
 
   case 38:
+
+/* Line 1455 of yacc.c  */
 #line 1286 "compilers/imcc/imcc.y"
     {
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3425,6 +3495,8 @@
     break;
 
   case 39:
+
+/* Line 1455 of yacc.c  */
 #line 1291 "compilers/imcc/imcc.y"
     {
            (yyval.i) = iSUBROUTINE(interp,
@@ -3436,6 +3508,8 @@
     break;
 
   case 40:
+
+/* Line 1455 of yacc.c  */
 #line 1299 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr));
@@ -3443,6 +3517,8 @@
     break;
 
   case 41:
+
+/* Line 1455 of yacc.c  */
 #line 1303 "compilers/imcc/imcc.y"
     {
            char   *name = mem_sys_strdup((yyvsp[(2) - (4)].s) + 1);
@@ -3459,16 +3535,22 @@
     break;
 
   case 42:
+
+/* Line 1455 of yacc.c  */
 #line 1315 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;}
     break;
 
   case 44:
+
+/* Line 1455 of yacc.c  */
 #line 1323 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); }
     break;
 
   case 45:
+
+/* Line 1455 of yacc.c  */
 #line 1326 "compilers/imcc/imcc.y"
     {
            /* if (optimizer_level & OPT_PASM)
@@ -3480,6 +3562,8 @@
     break;
 
   case 48:
+
+/* Line 1455 of yacc.c  */
 #line 1342 "compilers/imcc/imcc.y"
     {
            int re_open = 0;
@@ -3495,6 +3579,8 @@
     break;
 
   case 49:
+
+/* Line 1455 of yacc.c  */
 #line 1357 "compilers/imcc/imcc.y"
     {
             (yyval.sr) = (yyvsp[(2) - (3)].sr);
@@ -3502,11 +3588,15 @@
     break;
 
   case 50:
+
+/* Line 1455 of yacc.c  */
 #line 1360 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; }
     break;
 
   case 51:
+
+/* Line 1455 of yacc.c  */
 #line 1365 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PCCSUB);
@@ -3514,6 +3604,8 @@
     break;
 
   case 52:
+
+/* Line 1455 of yacc.c  */
 #line 1369 "compilers/imcc/imcc.y"
     {
            iSUBROUTINE(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (3)].sr));
@@ -3521,6 +3613,8 @@
     break;
 
   case 53:
+
+/* Line 1455 of yacc.c  */
 #line 1373 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->cur_call->pcc_sub->pragma = (yyvsp[(5) - (6)].t);
@@ -3532,21 +3626,29 @@
     break;
 
   case 54:
+
+/* Line 1455 of yacc.c  */
 #line 1381 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 55:
+
+/* Line 1455 of yacc.c  */
 #line 1385 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 56:
+
+/* Line 1455 of yacc.c  */
 #line 1386 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 57:
+
+/* Line 1455 of yacc.c  */
 #line 1388 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -3560,16 +3662,22 @@
     break;
 
   case 58:
+
+/* Line 1455 of yacc.c  */
 #line 1400 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 59:
+
+/* Line 1455 of yacc.c  */
 #line 1400 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(3) - (3)].sr); IMCC_INFO(interp)->is_def = 0; }
     break;
 
   case 60:
+
+/* Line 1455 of yacc.c  */
 #line 1405 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(3) - (3)].t) & VT_UNIQUE_REG)
@@ -3594,11 +3702,15 @@
     break;
 
   case 61:
+
+/* Line 1455 of yacc.c  */
 #line 1430 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 62:
+
+/* Line 1455 of yacc.c  */
 #line 1435 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3608,6 +3720,8 @@
     break;
 
   case 63:
+
+/* Line 1455 of yacc.c  */
 #line 1441 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3617,6 +3731,8 @@
     break;
 
   case 64:
+
+/* Line 1455 of yacc.c  */
 #line 1450 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_VTABLE;
@@ -3626,6 +3742,8 @@
     break;
 
   case 65:
+
+/* Line 1455 of yacc.c  */
 #line 1456 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_VTABLE;
@@ -3635,6 +3753,8 @@
     break;
 
   case 66:
+
+/* Line 1455 of yacc.c  */
 #line 1465 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
@@ -3644,6 +3764,8 @@
     break;
 
   case 67:
+
+/* Line 1455 of yacc.c  */
 #line 1471 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
@@ -3653,6 +3775,8 @@
     break;
 
   case 68:
+
+/* Line 1455 of yacc.c  */
 #line 1480 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3662,6 +3786,8 @@
     break;
 
   case 69:
+
+/* Line 1455 of yacc.c  */
 #line 1486 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3671,6 +3797,8 @@
     break;
 
   case 70:
+
+/* Line 1455 of yacc.c  */
 #line 1495 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3679,6 +3807,8 @@
     break;
 
   case 71:
+
+/* Line 1455 of yacc.c  */
 #line 1503 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3687,6 +3817,8 @@
     break;
 
   case 72:
+
+/* Line 1455 of yacc.c  */
 #line 1508 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3697,6 +3829,8 @@
     break;
 
   case 73:
+
+/* Line 1455 of yacc.c  */
 #line 1518 "compilers/imcc/imcc.y"
     {
            add_pcc_multi(IMCC_INFO(interp)->cur_call, NULL);
@@ -3704,6 +3838,8 @@
     break;
 
   case 74:
+
+/* Line 1455 of yacc.c  */
 #line 1522 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3712,6 +3848,8 @@
     break;
 
   case 75:
+
+/* Line 1455 of yacc.c  */
 #line 1527 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3720,26 +3858,36 @@
     break;
 
   case 76:
+
+/* Line 1455 of yacc.c  */
 #line 1534 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "INTVAL",   'S'); }
     break;
 
   case 77:
+
+/* Line 1455 of yacc.c  */
 #line 1535 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); }
     break;
 
   case 78:
+
+/* Line 1455 of yacc.c  */
 #line 1536 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "PMC",      'S'); }
     break;
 
   case 79:
+
+/* Line 1455 of yacc.c  */
 #line 1537 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "STRING",   'S'); }
     break;
 
   case 80:
+
+/* Line 1455 of yacc.c  */
 #line 1539 "compilers/imcc/imcc.y"
     {
            SymReg *r;
@@ -3754,6 +3902,8 @@
     break;
 
   case 81:
+
+/* Line 1455 of yacc.c  */
 #line 1550 "compilers/imcc/imcc.y"
     {
            SymReg *r;
@@ -3768,11 +3918,15 @@
     break;
 
   case 82:
+
+/* Line 1455 of yacc.c  */
 #line 1560 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); }
     break;
 
   case 85:
+
+/* Line 1455 of yacc.c  */
 #line 1570 "compilers/imcc/imcc.y"
     {
            char name[128];
@@ -3800,81 +3954,113 @@
     break;
 
   case 86:
+
+/* Line 1455 of yacc.c  */
 #line 1598 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 87:
+
+/* Line 1455 of yacc.c  */
 #line 1602 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; }
     break;
 
   case 88:
+
+/* Line 1455 of yacc.c  */
 #line 1603 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; }
     break;
 
   case 89:
+
+/* Line 1455 of yacc.c  */
 #line 1607 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; }
     break;
 
   case 90:
+
+/* Line 1455 of yacc.c  */
 #line 1608 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); }
     break;
 
   case 91:
+
+/* Line 1455 of yacc.c  */
 #line 1612 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 93:
+
+/* Line 1455 of yacc.c  */
 #line 1617 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (1)].t); }
     break;
 
   case 94:
+
+/* Line 1455 of yacc.c  */
 #line 1618 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 95:
+
+/* Line 1455 of yacc.c  */
 #line 1622 "compilers/imcc/imcc.y"
     { (yyval.t) = P_LOAD; }
     break;
 
   case 96:
+
+/* Line 1455 of yacc.c  */
 #line 1623 "compilers/imcc/imcc.y"
     { (yyval.t) = P_INIT; }
     break;
 
   case 97:
+
+/* Line 1455 of yacc.c  */
 #line 1624 "compilers/imcc/imcc.y"
     { (yyval.t) = P_MAIN; }
     break;
 
   case 98:
+
+/* Line 1455 of yacc.c  */
 #line 1625 "compilers/imcc/imcc.y"
     { (yyval.t) = P_IMMEDIATE; }
     break;
 
   case 99:
+
+/* Line 1455 of yacc.c  */
 #line 1626 "compilers/imcc/imcc.y"
     { (yyval.t) = P_POSTCOMP; }
     break;
 
   case 100:
+
+/* Line 1455 of yacc.c  */
 #line 1627 "compilers/imcc/imcc.y"
     { (yyval.t) = P_ANON; }
     break;
 
   case 101:
+
+/* Line 1455 of yacc.c  */
 #line 1628 "compilers/imcc/imcc.y"
     { (yyval.t) = P_NEED_LEX; }
     break;
 
   case 109:
+
+/* Line 1455 of yacc.c  */
 #line 1640 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
@@ -3883,6 +4069,8 @@
     break;
 
   case 110:
+
+/* Line 1455 of yacc.c  */
 #line 1645 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
@@ -3890,6 +4078,8 @@
     break;
 
   case 111:
+
+/* Line 1455 of yacc.c  */
 #line 1649 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
@@ -3898,6 +4088,8 @@
     break;
 
   case 112:
+
+/* Line 1455 of yacc.c  */
 #line 1654 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
@@ -3905,6 +4097,8 @@
     break;
 
   case 113:
+
+/* Line 1455 of yacc.c  */
 #line 1658 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (3)].s), 'S'));
@@ -3912,6 +4106,8 @@
     break;
 
   case 114:
+
+/* Line 1455 of yacc.c  */
 #line 1662 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
@@ -3920,6 +4116,8 @@
     break;
 
   case 115:
+
+/* Line 1455 of yacc.c  */
 #line 1667 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (5)].s), 'S'));
@@ -3928,26 +4126,36 @@
     break;
 
   case 116:
+
+/* Line 1455 of yacc.c  */
 #line 1675 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 117:
+
+/* Line 1455 of yacc.c  */
 #line 1676 "compilers/imcc/imcc.y"
     { add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); }
     break;
 
   case 118:
+
+/* Line 1455 of yacc.c  */
 #line 1680 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (2)].sr); }
     break;
 
   case 119:
+
+/* Line 1455 of yacc.c  */
 #line 1685 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 120:
+
+/* Line 1455 of yacc.c  */
 #line 1687 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
@@ -3956,16 +4164,22 @@
     break;
 
   case 121:
+
+/* Line 1455 of yacc.c  */
 #line 1694 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 122:
+
+/* Line 1455 of yacc.c  */
 #line 1695 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 123:
+
+/* Line 1455 of yacc.c  */
 #line 1696 "compilers/imcc/imcc.y"
     {
            IdList * const l = (yyvsp[(4) - (4)].idlist);
@@ -3981,66 +4195,92 @@
     break;
 
   case 124:
+
+/* Line 1455 of yacc.c  */
 #line 1710 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 125:
+
+/* Line 1455 of yacc.c  */
 #line 1711 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 126:
+
+/* Line 1455 of yacc.c  */
 #line 1715 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT;   }
     break;
 
   case 127:
+
+/* Line 1455 of yacc.c  */
 #line 1716 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPTIONAL; }
     break;
 
   case 128:
+
+/* Line 1455 of yacc.c  */
 #line 1717 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPT_FLAG; }
     break;
 
   case 129:
+
+/* Line 1455 of yacc.c  */
 #line 1718 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED; }
     break;
 
   case 130:
+
+/* Line 1455 of yacc.c  */
 #line 1719 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s));   (yyval.t) = 0; mem_sys_free((yyvsp[(3) - (4)].s)); }
     break;
 
   case 131:
+
+/* Line 1455 of yacc.c  */
 #line 1720 "compilers/imcc/imcc.y"
     { adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; mem_sys_free((yyvsp[(3) - (4)].s)); }
     break;
 
   case 132:
+
+/* Line 1455 of yacc.c  */
 #line 1721 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_UNIQUE_REG; }
     break;
 
   case 133:
+
+/* Line 1455 of yacc.c  */
 #line 1722 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_CALL_SIG; }
     break;
 
   case 134:
+
+/* Line 1455 of yacc.c  */
 #line 1727 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 0); }
     break;
 
   case 135:
+
+/* Line 1455 of yacc.c  */
 #line 1729 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
   case 136:
+
+/* Line 1455 of yacc.c  */
 #line 1731 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->asm_state = AsmDefault;
@@ -4049,21 +4289,29 @@
     break;
 
   case 137:
+
+/* Line 1455 of yacc.c  */
 #line 1738 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 1); }
     break;
 
   case 138:
+
+/* Line 1455 of yacc.c  */
 #line 1740 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
   case 139:
+
+/* Line 1455 of yacc.c  */
 #line 1744 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 140:
+
+/* Line 1455 of yacc.c  */
 #line 1746 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
@@ -4072,6 +4320,8 @@
     break;
 
   case 141:
+
+/* Line 1455 of yacc.c  */
 #line 1751 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
@@ -4080,11 +4330,15 @@
     break;
 
   case 142:
+
+/* Line 1455 of yacc.c  */
 #line 1758 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 143:
+
+/* Line 1455 of yacc.c  */
 #line 1760 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
@@ -4093,6 +4347,8 @@
     break;
 
   case 144:
+
+/* Line 1455 of yacc.c  */
 #line 1765 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
@@ -4101,16 +4357,22 @@
     break;
 
   case 145:
+
+/* Line 1455 of yacc.c  */
 #line 1772 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 146:
+
+/* Line 1455 of yacc.c  */
 #line 1776 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 147:
+
+/* Line 1455 of yacc.c  */
 #line 1781 "compilers/imcc/imcc.y"
     {
           if (IMCC_INFO(interp)->asm_state == AsmDefault)
@@ -4119,6 +4381,8 @@
     break;
 
   case 148:
+
+/* Line 1455 of yacc.c  */
 #line 1786 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->asm_state = AsmDefault;
@@ -4127,21 +4391,29 @@
     break;
 
   case 149:
+
+/* Line 1455 of yacc.c  */
 #line 1793 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 150:
+
+/* Line 1455 of yacc.c  */
 #line 1794 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; }
     break;
 
   case 151:
+
+/* Line 1455 of yacc.c  */
 #line 1798 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 152:
+
+/* Line 1455 of yacc.c  */
 #line 1800 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4155,6 +4427,8 @@
     break;
 
   case 153:
+
+/* Line 1455 of yacc.c  */
 #line 1810 "compilers/imcc/imcc.y"
     {
             SymReg * const name = mk_const(interp, (yyvsp[(1) - (3)].s), 'S');
@@ -4163,6 +4437,8 @@
     break;
 
   case 154:
+
+/* Line 1455 of yacc.c  */
 #line 1815 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4176,6 +4452,8 @@
     break;
 
   case 155:
+
+/* Line 1455 of yacc.c  */
 #line 1825 "compilers/imcc/imcc.y"
     {
            SymReg * const name = mk_const(interp, (yyvsp[(3) - (5)].s), 'S');
@@ -4184,46 +4462,64 @@
     break;
 
   case 158:
+
+/* Line 1455 of yacc.c  */
 #line 1846 "compilers/imcc/imcc.y"
     { clear_state(interp); }
     break;
 
   case 159:
+
+/* Line 1455 of yacc.c  */
 #line 1851 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (2)].i); }
     break;
 
   case 160:
+
+/* Line 1455 of yacc.c  */
 #line 1852 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 161:
+
+/* Line 1455 of yacc.c  */
 #line 1853 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 162:
+
+/* Line 1455 of yacc.c  */
 #line 1854 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 163:
+
+/* Line 1455 of yacc.c  */
 #line 1855 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 164:
+
+/* Line 1455 of yacc.c  */
 #line 1856 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 165:
+
+/* Line 1455 of yacc.c  */
 #line 1860 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; }
     break;
 
   case 169:
+
+/* Line 1455 of yacc.c  */
 #line 1871 "compilers/imcc/imcc.y"
     {
              Instruction * const i = iLABEL(interp, IMCC_INFO(interp)->cur_unit, mk_local_label(interp, (yyvsp[(1) - (1)].s)));
@@ -4233,11 +4529,15 @@
     break;
 
   case 170:
+
+/* Line 1455 of yacc.c  */
 #line 1881 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (3)].i); }
     break;
 
   case 171:
+
+/* Line 1455 of yacc.c  */
 #line 1883 "compilers/imcc/imcc.y"
     {
            if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) {
@@ -4249,6 +4549,8 @@
     break;
 
   case 172:
+
+/* Line 1455 of yacc.c  */
 #line 1894 "compilers/imcc/imcc.y"
     {
            IdList* const l = (yyvsp[(1) - (1)].idlist);
@@ -4258,6 +4560,8 @@
     break;
 
   case 173:
+
+/* Line 1455 of yacc.c  */
 #line 1901 "compilers/imcc/imcc.y"
     {
            IdList* const l = (yyvsp[(3) - (3)].idlist);
@@ -4267,6 +4571,8 @@
     break;
 
   case 174:
+
+/* Line 1455 of yacc.c  */
 #line 1910 "compilers/imcc/imcc.y"
     {
            IdList* const l = mem_allocate_n_zeroed_typed(1, IdList);
@@ -4277,21 +4583,29 @@
     break;
 
   case 175:
+
+/* Line 1455 of yacc.c  */
 #line 1919 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 176:
+
+/* Line 1455 of yacc.c  */
 #line 1920 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; }
     break;
 
   case 179:
+
+/* Line 1455 of yacc.c  */
 #line 1927 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 180:
+
+/* Line 1455 of yacc.c  */
 #line 1928 "compilers/imcc/imcc.y"
     {
            IdList *l = (yyvsp[(4) - (4)].idlist);
@@ -4311,6 +4625,8 @@
     break;
 
   case 181:
+
+/* Line 1455 of yacc.c  */
 #line 1944 "compilers/imcc/imcc.y"
     {
             if ((yyvsp[(4) - (4)].sr)->set != 'P') {
@@ -4331,6 +4647,8 @@
     break;
 
   case 182:
+
+/* Line 1455 of yacc.c  */
 #line 1961 "compilers/imcc/imcc.y"
     {
             if ((yyvsp[(4) - (4)].sr)->set != 'P') {
@@ -4347,11 +4665,15 @@
     break;
 
   case 183:
+
+/* Line 1455 of yacc.c  */
 #line 1973 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 184:
+
+/* Line 1455 of yacc.c  */
 #line 1974 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0);
@@ -4361,11 +4683,15 @@
     break;
 
   case 186:
+
+/* Line 1455 of yacc.c  */
 #line 1981 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 187:
+
+/* Line 1455 of yacc.c  */
 #line 1982 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
@@ -4375,6 +4701,8 @@
     break;
 
   case 188:
+
+/* Line 1455 of yacc.c  */
 #line 1988 "compilers/imcc/imcc.y"
     {
            (yyval.i) = NULL;
@@ -4384,6 +4712,8 @@
     break;
 
   case 189:
+
+/* Line 1455 of yacc.c  */
 #line 1994 "compilers/imcc/imcc.y"
     {
             (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr));
@@ -4391,6 +4721,8 @@
     break;
 
   case 190:
+
+/* Line 1455 of yacc.c  */
 #line 1998 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp,
@@ -4406,51 +4738,69 @@
     break;
 
   case 191:
+
+/* Line 1455 of yacc.c  */
 #line 2009 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); }
     break;
 
   case 192:
+
+/* Line 1455 of yacc.c  */
 #line 2010 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 193:
+
+/* Line 1455 of yacc.c  */
 #line 2011 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 196:
+
+/* Line 1455 of yacc.c  */
 #line 2014 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;}
     break;
 
   case 197:
+
+/* Line 1455 of yacc.c  */
 #line 2018 "compilers/imcc/imcc.y"
     { (yyval.t) = 'I'; }
     break;
 
   case 198:
+
+/* Line 1455 of yacc.c  */
 #line 2019 "compilers/imcc/imcc.y"
     { (yyval.t) = 'N'; }
     break;
 
   case 199:
+
+/* Line 1455 of yacc.c  */
 #line 2020 "compilers/imcc/imcc.y"
     { (yyval.t) = 'S'; }
     break;
 
   case 200:
+
+/* Line 1455 of yacc.c  */
 #line 2021 "compilers/imcc/imcc.y"
     { (yyval.t) = 'P'; }
     break;
 
   case 201:
+
+/* Line 1455 of yacc.c  */
 #line 2026 "compilers/imcc/imcc.y"
     {
            /* there'd normally be a mem_sys_strdup() here, but the lexer already
             * copied the string, so it's safe to use directly */
-           if ((IMCC_INFO(interp)->cur_pmc_type = pmc_type(interp,
+           if ((IMCC_INFO(interp)->cur_pmc_type = Parrot_pmc_get_type_str(interp,
                Parrot_str_new(interp, (yyvsp[(1) - (1)].s), 0))) <= 0) {
                IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
                     "Unknown PMC type '%s'\n", (yyvsp[(1) - (1)].s));
@@ -4459,36 +4809,50 @@
     break;
 
   case 202:
+
+/* Line 1455 of yacc.c  */
 #line 2039 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "set", 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));  }
     break;
 
   case 203:
+
+/* Line 1455 of yacc.c  */
 #line 2041 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (4)].s), 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr));  }
     break;
 
   case 204:
+
+/* Line 1455 of yacc.c  */
 #line 2043 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(4) - (5)].s), 3, (yyvsp[(1) - (5)].sr), (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr)); }
     break;
 
   case 205:
+
+/* Line 1455 of yacc.c  */
 #line 2045 "compilers/imcc/imcc.y"
     { (yyval.i) = iINDEXFETCH(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(5) - (6)].sr)); }
     break;
 
   case 206:
+
+/* Line 1455 of yacc.c  */
 #line 2047 "compilers/imcc/imcc.y"
     { (yyval.i) = iINDEXSET(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
     break;
 
   case 207:
+
+/* Line 1455 of yacc.c  */
 #line 2052 "compilers/imcc/imcc.y"
     { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (7)].sr), (yyvsp[(4) - (7)].s), (yyvsp[(6) - (7)].sr), 1); }
     break;
 
   case 208:
+
+/* Line 1455 of yacc.c  */
 #line 2055 "compilers/imcc/imcc.y"
     {
            add_pcc_result((yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr));
@@ -4498,6 +4862,8 @@
     break;
 
   case 209:
+
+/* Line 1455 of yacc.c  */
 #line 2061 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
@@ -4505,6 +4871,8 @@
     break;
 
   case 210:
+
+/* Line 1455 of yacc.c  */
 #line 2065 "compilers/imcc/imcc.y"
     {
            IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr));
@@ -4513,6 +4881,8 @@
     break;
 
   case 214:
+
+/* Line 1455 of yacc.c  */
 #line 2073 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr));
@@ -4520,136 +4890,190 @@
     break;
 
   case 215:
+
+/* Line 1455 of yacc.c  */
 #line 2080 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"not"; }
     break;
 
   case 216:
+
+/* Line 1455 of yacc.c  */
 #line 2081 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bnot"; }
     break;
 
   case 217:
+
+/* Line 1455 of yacc.c  */
 #line 2082 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"neg"; }
     break;
 
   case 218:
+
+/* Line 1455 of yacc.c  */
 #line 2086 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
   case 219:
+
+/* Line 1455 of yacc.c  */
 #line 2087 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
   case 220:
+
+/* Line 1455 of yacc.c  */
 #line 2088 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
   case 221:
+
+/* Line 1455 of yacc.c  */
 #line 2089 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
   case 222:
+
+/* Line 1455 of yacc.c  */
 #line 2090 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
   case 223:
+
+/* Line 1455 of yacc.c  */
 #line 2091 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
   case 224:
+
+/* Line 1455 of yacc.c  */
 #line 2092 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"pow"; }
     break;
 
   case 225:
+
+/* Line 1455 of yacc.c  */
 #line 2093 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
   case 226:
+
+/* Line 1455 of yacc.c  */
 #line 2094 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"iseq"; }
     break;
 
   case 227:
+
+/* Line 1455 of yacc.c  */
 #line 2095 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isne"; }
     break;
 
   case 228:
+
+/* Line 1455 of yacc.c  */
 #line 2096 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isgt"; }
     break;
 
   case 229:
+
+/* Line 1455 of yacc.c  */
 #line 2097 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isge"; }
     break;
 
   case 230:
+
+/* Line 1455 of yacc.c  */
 #line 2098 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"islt"; }
     break;
 
   case 231:
+
+/* Line 1455 of yacc.c  */
 #line 2099 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isle"; }
     break;
 
   case 232:
+
+/* Line 1455 of yacc.c  */
 #line 2100 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
   case 233:
+
+/* Line 1455 of yacc.c  */
 #line 2101 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
   case 234:
+
+/* Line 1455 of yacc.c  */
 #line 2102 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
   case 235:
+
+/* Line 1455 of yacc.c  */
 #line 2103 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"and"; }
     break;
 
   case 236:
+
+/* Line 1455 of yacc.c  */
 #line 2104 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"or"; }
     break;
 
   case 237:
+
+/* Line 1455 of yacc.c  */
 #line 2105 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"xor"; }
     break;
 
   case 238:
+
+/* Line 1455 of yacc.c  */
 #line 2106 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
   case 239:
+
+/* Line 1455 of yacc.c  */
 #line 2107 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
   case 240:
+
+/* Line 1455 of yacc.c  */
 #line 2108 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
   case 241:
+
+/* Line 1455 of yacc.c  */
 #line 2114 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
@@ -4659,81 +5083,113 @@
     break;
 
   case 242:
+
+/* Line 1455 of yacc.c  */
 #line 2119 "compilers/imcc/imcc.y"
     {  (yyval.i) = 0; }
     break;
 
   case 243:
+
+/* Line 1455 of yacc.c  */
 #line 2126 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(2) - (3)].s), 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); }
     break;
 
   case 244:
+
+/* Line 1455 of yacc.c  */
 #line 2130 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
   case 245:
+
+/* Line 1455 of yacc.c  */
 #line 2131 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
   case 246:
+
+/* Line 1455 of yacc.c  */
 #line 2132 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
   case 247:
+
+/* Line 1455 of yacc.c  */
 #line 2133 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
   case 248:
+
+/* Line 1455 of yacc.c  */
 #line 2134 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
   case 249:
+
+/* Line 1455 of yacc.c  */
 #line 2135 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
   case 250:
+
+/* Line 1455 of yacc.c  */
 #line 2136 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
   case 251:
+
+/* Line 1455 of yacc.c  */
 #line 2137 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
   case 252:
+
+/* Line 1455 of yacc.c  */
 #line 2138 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
   case 253:
+
+/* Line 1455 of yacc.c  */
 #line 2139 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
   case 254:
+
+/* Line 1455 of yacc.c  */
 #line 2140 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
   case 255:
+
+/* Line 1455 of yacc.c  */
 #line 2141 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
   case 256:
+
+/* Line 1455 of yacc.c  */
 #line 2142 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
   case 257:
+
+/* Line 1455 of yacc.c  */
 #line 2148 "compilers/imcc/imcc.y"
     {
         (yyval.i) = func_ins(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(3) - (4)].s),
@@ -4745,21 +5201,29 @@
     break;
 
   case 258:
+
+/* Line 1455 of yacc.c  */
 #line 2158 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s));       mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 259:
+
+/* Line 1455 of yacc.c  */
 #line 2159 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 260:
+
+/* Line 1455 of yacc.c  */
 #line 2160 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));     mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 261:
+
+/* Line 1455 of yacc.c  */
 #line 2162 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
@@ -4769,6 +5233,8 @@
     break;
 
   case 262:
+
+/* Line 1455 of yacc.c  */
 #line 2168 "compilers/imcc/imcc.y"
     {
             /* disallow bareword method names; SREG name constants are fine */
@@ -4786,6 +5252,8 @@
     break;
 
   case 263:
+
+/* Line 1455 of yacc.c  */
 #line 2182 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
@@ -4795,6 +5263,8 @@
     break;
 
   case 264:
+
+/* Line 1455 of yacc.c  */
 #line 2188 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
@@ -4804,11 +5274,15 @@
     break;
 
   case 265:
+
+/* Line 1455 of yacc.c  */
 #line 2193 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); }
     break;
 
   case 266:
+
+/* Line 1455 of yacc.c  */
 #line 2199 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
@@ -4817,16 +5291,22 @@
     break;
 
   case 267:
+
+/* Line 1455 of yacc.c  */
 #line 2203 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (5)].i); }
     break;
 
   case 268:
+
+/* Line 1455 of yacc.c  */
 #line 2207 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 269:
+
+/* Line 1455 of yacc.c  */
 #line 2209 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -4840,6 +5320,8 @@
     break;
 
   case 270:
+
+/* Line 1455 of yacc.c  */
 #line 2219 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -4853,6 +5335,8 @@
     break;
 
   case 271:
+
+/* Line 1455 of yacc.c  */
 #line 2229 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -4863,6 +5347,8 @@
     break;
 
   case 272:
+
+/* Line 1455 of yacc.c  */
 #line 2236 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -4871,6 +5357,8 @@
     break;
 
   case 273:
+
+/* Line 1455 of yacc.c  */
 #line 2241 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -4881,51 +5369,71 @@
     break;
 
   case 274:
+
+/* Line 1455 of yacc.c  */
 #line 2250 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
   case 275:
+
+/* Line 1455 of yacc.c  */
 #line 2254 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 276:
+
+/* Line 1455 of yacc.c  */
 #line 2255 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 277:
+
+/* Line 1455 of yacc.c  */
 #line 2259 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT;     }
     break;
 
   case 278:
+
+/* Line 1455 of yacc.c  */
 #line 2260 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED;    }
     break;
 
   case 279:
+
+/* Line 1455 of yacc.c  */
 #line 2261 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_CALL_SIG; }
     break;
 
   case 280:
+
+/* Line 1455 of yacc.c  */
 #line 2264 "compilers/imcc/imcc.y"
     { adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
   case 281:
+
+/* Line 1455 of yacc.c  */
 #line 2265 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s));   (yyval.t) = 0; }
     break;
 
   case 282:
+
+/* Line 1455 of yacc.c  */
 #line 2269 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
   case 283:
+
+/* Line 1455 of yacc.c  */
 #line 2274 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -4939,6 +5447,8 @@
     break;
 
   case 284:
+
+/* Line 1455 of yacc.c  */
 #line 2284 "compilers/imcc/imcc.y"
     {
             add_pcc_named_result(IMCC_INFO(interp)->cur_call,
@@ -4948,6 +5458,8 @@
     break;
 
   case 285:
+
+/* Line 1455 of yacc.c  */
 #line 2290 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -4961,6 +5473,8 @@
     break;
 
   case 286:
+
+/* Line 1455 of yacc.c  */
 #line 2300 "compilers/imcc/imcc.y"
     {
            add_pcc_named_result(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(1) - (3)].s), 'S'), (yyvsp[(3) - (3)].sr));
@@ -4969,21 +5483,29 @@
     break;
 
   case 287:
+
+/* Line 1455 of yacc.c  */
 #line 2304 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 288:
+
+/* Line 1455 of yacc.c  */
 #line 2308 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 289:
+
+/* Line 1455 of yacc.c  */
 #line 2309 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 290:
+
+/* Line 1455 of yacc.c  */
 #line 2314 "compilers/imcc/imcc.y"
     {
            (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, inv_op((yyvsp[(3) - (6)].s)), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
@@ -4991,6 +5513,8 @@
     break;
 
   case 291:
+
+/* Line 1455 of yacc.c  */
 #line 2318 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
@@ -4998,6 +5522,8 @@
     break;
 
   case 292:
+
+/* Line 1455 of yacc.c  */
 #line 2322 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
@@ -5005,6 +5531,8 @@
     break;
 
   case 293:
+
+/* Line 1455 of yacc.c  */
 #line 2329 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
@@ -5012,6 +5540,8 @@
     break;
 
   case 294:
+
+/* Line 1455 of yacc.c  */
 #line 2333 "compilers/imcc/imcc.y"
     {
            (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
@@ -5019,6 +5549,8 @@
     break;
 
   case 295:
+
+/* Line 1455 of yacc.c  */
 #line 2337 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
@@ -5026,66 +5558,92 @@
     break;
 
   case 296:
+
+/* Line 1455 of yacc.c  */
 #line 2343 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 297:
+
+/* Line 1455 of yacc.c  */
 #line 2344 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 298:
+
+/* Line 1455 of yacc.c  */
 #line 2348 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"eq"; }
     break;
 
   case 299:
+
+/* Line 1455 of yacc.c  */
 #line 2349 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ne"; }
     break;
 
   case 300:
+
+/* Line 1455 of yacc.c  */
 #line 2350 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"gt"; }
     break;
 
   case 301:
+
+/* Line 1455 of yacc.c  */
 #line 2351 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ge"; }
     break;
 
   case 302:
+
+/* Line 1455 of yacc.c  */
 #line 2352 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lt"; }
     break;
 
   case 303:
+
+/* Line 1455 of yacc.c  */
 #line 2353 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"le"; }
     break;
 
   case 306:
+
+/* Line 1455 of yacc.c  */
 #line 2362 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; }
     break;
 
   case 307:
+
+/* Line 1455 of yacc.c  */
 #line 2363 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 308:
+
+/* Line 1455 of yacc.c  */
 #line 2367 "compilers/imcc/imcc.y"
     { (yyval.sr) = IMCC_INFO(interp)->regs[0]; }
     break;
 
   case 310:
+
+/* Line 1455 of yacc.c  */
 #line 2372 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 311:
+
+/* Line 1455 of yacc.c  */
 #line 2374 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (4)].sr);
@@ -5096,6 +5654,8 @@
     break;
 
   case 312:
+
+/* Line 1455 of yacc.c  */
 #line 2381 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr);
@@ -5104,36 +5664,50 @@
     break;
 
   case 314:
+
+/* Line 1455 of yacc.c  */
 #line 2388 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 315:
+
+/* Line 1455 of yacc.c  */
 #line 2389 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 316:
+
+/* Line 1455 of yacc.c  */
 #line 2393 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 317:
+
+/* Line 1455 of yacc.c  */
 #line 2394 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 318:
+
+/* Line 1455 of yacc.c  */
 #line 2398 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 319:
+
+/* Line 1455 of yacc.c  */
 #line 2399 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 324:
+
+/* Line 1455 of yacc.c  */
 #line 2413 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys    = 0;
@@ -5141,6 +5715,8 @@
     break;
 
   case 325:
+
+/* Line 1455 of yacc.c  */
 #line 2417 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
@@ -5150,6 +5726,8 @@
     break;
 
   case 326:
+
+/* Line 1455 of yacc.c  */
 #line 2425 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys = 0;
@@ -5157,6 +5735,8 @@
     break;
 
   case 327:
+
+/* Line 1455 of yacc.c  */
 #line 2429 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
@@ -5166,11 +5746,15 @@
     break;
 
   case 328:
+
+/* Line 1455 of yacc.c  */
 #line 2437 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 329:
+
+/* Line 1455 of yacc.c  */
 #line 2439 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr);
@@ -5179,6 +5763,8 @@
     break;
 
   case 330:
+
+/* Line 1455 of yacc.c  */
 #line 2447 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
@@ -5186,53 +5772,72 @@
     break;
 
   case 331:
+
+/* Line 1455 of yacc.c  */
 #line 2453 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
     break;
 
   case 332:
+
+/* Line 1455 of yacc.c  */
 #line 2454 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
     break;
 
   case 333:
+
+/* Line 1455 of yacc.c  */
 #line 2455 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
     break;
 
   case 334:
+
+/* Line 1455 of yacc.c  */
 #line 2456 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
     break;
 
   case 335:
+
+/* Line 1455 of yacc.c  */
 #line 2457 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 336:
+
+/* Line 1455 of yacc.c  */
 #line 2461 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 337:
+
+/* Line 1455 of yacc.c  */
 #line 2462 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 338:
+
+/* Line 1455 of yacc.c  */
 #line 2463 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 339:
+
+/* Line 1455 of yacc.c  */
 #line 2464 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
 
-/* Line 1267 of yacc.c.  */
-#line 5225 "compilers/imcc/imcparser.c"
+
+/* Line 1455 of yacc.c  */
+#line 5830 "compilers/imcc/imcparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5243,7 +5848,6 @@
 
   *++yyvsp = yyval;
 
-
   /* Now `shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
@@ -5308,7 +5912,7 @@
 
   if (yyerrstatus == 3)
     {
-      /* If just tried and failed to reuse look-ahead token after an
+      /* If just tried and failed to reuse lookahead token after an
 	 error, discard it.  */
 
       if (yychar <= YYEOF)
@@ -5325,7 +5929,7 @@
 	}
     }
 
-  /* Else will try to reuse look-ahead token after shifting the error
+  /* Else will try to reuse lookahead token after shifting the error
      token.  */
   goto yyerrlab1;
 
@@ -5382,9 +5986,6 @@
       YY_STACK_PRINT (yyss, yyssp);
     }
 
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
   *++yyvsp = yylval;
 
 
@@ -5409,7 +6010,7 @@
   yyresult = 1;
   goto yyreturn;
 
-#ifndef yyoverflow
+#if !defined(yyoverflow) || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -5420,7 +6021,7 @@
 #endif
 
 yyreturn:
-  if (yychar != YYEOF && yychar != YYEMPTY)
+  if (yychar != YYEMPTY)
      yydestruct ("Cleanup: discarding lookahead",
 		 yytoken, &yylval, yyscanner, interp);
   /* Do not reclaim the symbols of the rule which action triggered
@@ -5446,6 +6047,8 @@
 }
 
 
+
+/* Line 1675 of yacc.c  */
 #line 2470 "compilers/imcc/imcc.y"
 
 

Modified: branches/sys_mem_reduce/compilers/imcc/imcparser.h
==============================================================================
--- branches/sys_mem_reduce/compilers/imcc/imcparser.h	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/imcc/imcparser.h	Sat Feb 20 22:12:51 2010	(r44252)
@@ -9,27 +9,26 @@
  */
 /* HEADERIZER HFILE: none */
 /* HEADERIZER STOP */
-/* A Bison parser, made by GNU Bison 2.3.  */
 
-/* Skeleton interface for Bison's Yacc-like parsers in C
+/* A Bison parser, made by GNU Bison 2.4.1.  */
 
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+/* Skeleton interface for Bison's Yacc-like parsers in C
+   
+      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
    Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
+   
+   This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
@@ -40,10 +39,11 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-
+   
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
+
 /* Tokens.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
@@ -297,21 +297,27 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 1059 "compilers/imcc/imcc.y"
 {
+
+/* Line 1676 of yacc.c  */
+#line 1059 "compilers/imcc/imcc.y"
+
     IdList * idlist;
     int t;
     char * s;
     SymReg * sr;
     Instruction *i;
-}
-/* Line 1489 of yacc.c.  */
-#line 299 "compilers/imcc/imcparser.h"
-	YYSTYPE;
+
+
+
+/* Line 1676 of yacc.c  */
+#line 304 "compilers/imcc/imcparser.h"
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
 
 
+

Modified: branches/sys_mem_reduce/compilers/imcc/main.c
==============================================================================
--- branches/sys_mem_reduce/compilers/imcc/main.c	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/imcc/main.c	Sat Feb 20 22:12:51 2010	(r44252)
@@ -164,8 +164,8 @@
 
 /*
 
-=item C<int imcc_handle_flag(PARROT_INTERP, struct longopt_opt_info *opt, INTVAL
-*core)>
+=item C<int imcc_handle_flag(PARROT_INTERP, struct longopt_opt_info *opt,
+Parrot_Run_core_t *core)>
 
 Handle Parrot's command line for IMCC related option and set appropriate flags.
 
@@ -178,7 +178,8 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 int
-imcc_handle_flag(PARROT_INTERP, struct longopt_opt_info *opt, INTVAL *core)
+imcc_handle_flag(PARROT_INTERP, struct longopt_opt_info *opt,
+    Parrot_Run_core_t *core)
 {
     PARROT_ASSERT(opt);
     PARROT_ASSERT(core);

Modified: branches/sys_mem_reduce/compilers/imcc/parser_util.c
==============================================================================
--- branches/sys_mem_reduce/compilers/imcc/parser_util.c	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/imcc/parser_util.c	Sat Feb 20 22:12:51 2010	(r44252)
@@ -154,7 +154,7 @@
     SymReg *regs[3];
     SymReg *pmc;
     int nargs;
-    const int pmc_num = pmc_type(interp,
+    const int pmc_num = Parrot_pmc_get_type_str(interp,
             Parrot_str_new(interp, *type == '.' ? type + 1 : type, 0));
 
     snprintf(fmt, sizeof (fmt), "%d", pmc_num);
@@ -703,7 +703,7 @@
          *
          * TODO if a sub was denoted :main return that instead
          */
-        sub                  = pmc_new(interp, enum_class_Eval);
+        sub                  = Parrot_pmc_new(interp, enum_class_Eval);
         PMC_get_sub(interp, sub, sub_data);
         sub_data->seg        = new_cs;
         sub_data->start_offs = 0;

Modified: branches/sys_mem_reduce/compilers/imcc/pbc.c
==============================================================================
--- branches/sys_mem_reduce/compilers/imcc/pbc.c	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/imcc/pbc.c	Sat Feb 20 22:12:51 2010	(r44252)
@@ -1044,9 +1044,9 @@
 
     /* a :multi sub with no arguments */
     if (!pcc_sub->multi[0])
-        return pmc_new(interp, enum_class_FixedIntegerArray);
+        return Parrot_pmc_new(interp, enum_class_FixedIntegerArray);
 
-    multi_sig = pmc_new(interp, enum_class_FixedPMCArray);
+    multi_sig = Parrot_pmc_new(interp, enum_class_FixedPMCArray);
     VTABLE_set_integer_native(interp, multi_sig, n);
     ct        = interp->code->const_table;
 
@@ -1058,14 +1058,14 @@
 
         if (r->set == 'S') {
             STRING * const type_name = ct->constants[r->color]->u.string;
-            const INTVAL type_num    = pmc_type(interp, type_name);
+            const INTVAL type_num    = Parrot_pmc_get_type_str(interp, type_name);
 
             if (type_num == enum_type_undef) {
-                sig_pmc = pmc_new(interp, enum_class_String);
+                sig_pmc = Parrot_pmc_new(interp, enum_class_String);
                 VTABLE_set_string_native(interp, sig_pmc, type_name);
             }
             else {
-                sig_pmc = pmc_new(interp, enum_class_Integer);
+                sig_pmc = Parrot_pmc_new(interp, enum_class_Integer);
                 VTABLE_set_integer_native(interp, sig_pmc, type_num);
             }
         }
@@ -1116,7 +1116,7 @@
             if (r->set == 'P' && r->usage & U_LEXICAL) {
                 SymReg *n;
                 if (!lex_info) {
-                    lex_info = pmc_new_noinit(interp, lex_info_id);
+                    lex_info = Parrot_pmc_new_noinit(interp, lex_info_id);
                     VTABLE_init_pmc(interp, lex_info, sub_pmc);
                 }
 
@@ -1149,7 +1149,7 @@
     }
 
     if (!lex_info && (unit->outer || need_lex)) {
-        lex_info = pmc_new_noinit(interp, lex_info_id);
+        lex_info = Parrot_pmc_new_noinit(interp, lex_info_id);
         VTABLE_init_pmc(interp, lex_info, sub_pmc);
     }
 
@@ -1292,12 +1292,12 @@
         if (!PMC_IS_NULL(classobj))
             sub_pmc = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type(interp, classname);
+            const INTVAL type = Parrot_pmc_get_type_str(interp, classname);
             if (type <= 0)
                 Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_NO_CLASS,
                     "Class '%Ss' specified in :instanceof(...) not found",
                     classname);
-            sub_pmc = pmc_new(interp, type);
+            sub_pmc = Parrot_pmc_new(interp, type);
         }
     }
     else {
@@ -1305,7 +1305,7 @@
         type = Parrot_get_ctx_HLL_type(interp, type);
 
         /* TODO create constant - see also src/packfile.c */
-        sub_pmc = pmc_new(interp, type);
+        sub_pmc = Parrot_pmc_new(interp, type);
     }
 
     /* Set flags and get the sub info. */
@@ -1348,7 +1348,7 @@
             ns_pmc = ct->constants[ns_const]->u.key;
             break;
           case PFC_STRING:
-            ns_pmc = constant_pmc_new(interp, enum_class_String);
+            ns_pmc = Parrot_pmc_new_constant(interp, enum_class_String);
             VTABLE_set_string_native(interp, ns_pmc, ct->constants[ns_const]->u.string);
             break;
           default:
@@ -1805,7 +1805,7 @@
     else
         s = Parrot_str_unescape(interp, r->name, 0, NULL);
 
-    p  = constant_pmc_new(interp, r->pmc_type);
+    p  = Parrot_pmc_new_constant(interp, r->pmc_type);
 
     switch (r->pmc_type) {
       case enum_class_Integer:

Modified: branches/sys_mem_reduce/compilers/pirc/src/bcgen.c
==============================================================================
--- branches/sys_mem_reduce/compilers/pirc/src/bcgen.c	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/pirc/src/bcgen.c	Sat Feb 20 22:12:51 2010	(r44252)
@@ -798,10 +798,10 @@
     /* A type_count of 1 means there was a :multi flag, but no :multi types.
      * therefore, create a special signature and return that.  */
     if (type_count == 1)
-        return pmc_new(bc->interp, enum_class_FixedIntegerArray);
+        return Parrot_pmc_new(bc->interp, enum_class_FixedIntegerArray);
 
     /* create a FixedPMCArray to store all multi types */
-    multi_signature = pmc_new(bc->interp, enum_class_FixedPMCArray);
+    multi_signature = Parrot_pmc_new(bc->interp, enum_class_FixedPMCArray);
 
     /* set its size as specified in type_count */
     VTABLE_set_integer_native(bc->interp, multi_signature, type_count);
@@ -818,7 +818,7 @@
                 /* add the string to the constant table, retrieve a pointer to the STRING */
                 STRING * typestring = add_string_const_from_cstring(bc, types[i].entry.ident);
                 /* create a new String PMC. */
-                sig_pmc = pmc_new(bc->interp, enum_class_String);
+                sig_pmc = Parrot_pmc_new(bc->interp, enum_class_String);
                 /* set the STRING in the String PMC */
                 VTABLE_set_string_native(bc->interp, sig_pmc, typestring);
                 break;
@@ -977,7 +977,7 @@
     STRING * const method      = string_from_literal(bc->interp, "declare_lex_preg");
 
     /* create a lexinfo PMC */
-    PMC * lex_info             = pmc_new_noinit(bc->interp, lex_info_id);
+    PMC * lex_info             = Parrot_pmc_new_noinit(bc->interp, lex_info_id);
     VTABLE_init_pmc(bc->interp, lex_info, sub);
 
     /* walk through the list of lexicals and register them */
@@ -1001,7 +1001,7 @@
      * :lex flag, then create the lex_info anyway.
      */
     if (lex_info == NULL && needlex) {
-        lex_info = pmc_new_noinit(bc->interp, lex_info_id);
+        lex_info = Parrot_pmc_new_noinit(bc->interp, lex_info_id);
         VTABLE_init_pmc(bc->interp, lex_info, sub);
     }
 
@@ -1108,7 +1108,7 @@
 
     switch (ns->entry_type) {
         case MULTI_TYPE_IDENT: {
-            PMC *namespace_pmc = constant_pmc_new(bc->interp, enum_class_String);
+            PMC *namespace_pmc = Parrot_pmc_new_constant(bc->interp, enum_class_String);
             PARROT_NAMESPACE(namespace_pmc)->name =
                 add_string_const_from_cstring(bc, ns->entry.ident);
             break;
@@ -1161,7 +1161,7 @@
                 Parrot_ex_throw_from_c_args(bc->interp, NULL, EXCEPTION_NO_CLASS,
                     "Requested sub class '%Ss' in :instanceof() not found", classname);
 
-            return pmc_new(bc->interp, type);
+            return Parrot_pmc_new(bc->interp, type);
         }
 
     }
@@ -1175,7 +1175,7 @@
      * TODO create constant - see also src/packfile.c
      * XXX is this (still) necessary?
      */
-    return pmc_new(bc->interp, type);
+    return Parrot_pmc_new(bc->interp, type);
 }
 
 /*

Modified: branches/sys_mem_reduce/compilers/pirc/src/main.c
==============================================================================
--- branches/sys_mem_reduce/compilers/pirc/src/main.c	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/pirc/src/main.c	Sat Feb 20 22:12:51 2010	(r44252)
@@ -27,7 +27,7 @@
 
 #endif
 
-
+/* HEADERIZER HFILE: none */
 
 /* XXX use pthreads library to test thread safety.
    does not work currently on windows.
@@ -49,6 +49,24 @@
 
 /* HEADERIZER HFILE: none */
 
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+static void print_help(ARGIN(char const * const program_name))
+        __attribute__nonnull__(1);
+
+static void runcode(PARROT_INTERP, int argc, ARGIN(char *argv[]))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(3);
+
+#define ASSERT_ARGS_print_help __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(program_name))
+#define ASSERT_ARGS_runcode __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(argv))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: static */
+
 /*
 
 =head1 FUNCTIONS
@@ -64,7 +82,7 @@
 
 */
 static void
-print_help(char const * const program_name)
+print_help(ARGIN(char const * const program_name))
 {
     fprintf(stderr, "Usage: %s [options] <file>\n", program_name);
     fprintf(stderr, "Options:\n\n"
@@ -117,8 +135,10 @@
 Unpack the arguments and invoke parse_file().
 
 */
+PARROT_CAN_RETURN_NULL
 void *
-process_file(void *a) {
+process_file(ARGIN(void *a))
+{
 
 
     /* unpack the arguments from the structure parser_args */
@@ -147,7 +167,8 @@
 
 */
 static void
-runcode(PARROT_INTERP, int argc, char *argv[]) {
+runcode(PARROT_INTERP, int argc, ARGIN(char *argv[]))
+{
 
     /* runs :init functions */
     PackFile_fixup_subs(interp, PBC_MAIN, NULL);
@@ -159,8 +180,7 @@
 
 /*
 
-=item C<int
-main(int argc, char *argv[])>
+=item C<int main(int argc, char *argv[])>
 
 Main compiler driver.
 

Modified: branches/sys_mem_reduce/compilers/pirc/src/pir.y
==============================================================================
--- branches/sys_mem_reduce/compilers/pirc/src/pir.y	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/pirc/src/pir.y	Sat Feb 20 22:12:51 2010	(r44252)
@@ -88,6 +88,14 @@
 
 #endif
 
+/* HEADERIZER HFILE: none */
+
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: static */
+
 char *expand_macro(yyscan_t yyscanner, macro_def * const macro, macro_param * args);
 
 /* Enumeration of mathematical operator types; these are used to index the opnames array. */

Modified: branches/sys_mem_reduce/compilers/pirc/src/pircompiler.c
==============================================================================
--- branches/sys_mem_reduce/compilers/pirc/src/pircompiler.c	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/pirc/src/pircompiler.c	Sat Feb 20 22:12:51 2010	(r44252)
@@ -15,6 +15,47 @@
 #include "pirregalloc.h"
 #include "pirerr.h"
 
+/* HEADERIZER HFILE: compilers/pirc/src/pircompiler.h */
+
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+static char const * find_string(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const str))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_MALLOC
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+static allocated_mem_ptrs * new_mem_ptrs_block(void);
+
+static void register_ptr(ARGIN(lexer_state *lexer), ARGIN(void *ptr))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static void store_string(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const str))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+#define ASSERT_ARGS_find_string __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(str))
+#define ASSERT_ARGS_new_mem_ptrs_block __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_register_ptr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(ptr))
+#define ASSERT_ARGS_store_string __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(str))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: static */
+
 /* XXX count memory, so we can check out mem. savings of string reuse
  * Only temporarily used, so no need to "fix" this.
  */
@@ -26,8 +67,7 @@
 
 =over 4
 
-=item C<static allocated_mem_ptrs *
-new_mem_ptrs_block(void)>
+=item C<static allocated_mem_ptrs * new_mem_ptrs_block(void)>
 
 Create a new C<allocated_mem_ptrs> block; all pointers to allocated memory
 within pirc are stored in such blocks. One block has space for a number of
@@ -41,14 +81,15 @@
 PARROT_CANNOT_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
 static allocated_mem_ptrs *
-new_mem_ptrs_block(void) {
+new_mem_ptrs_block(void)
+{
+    ASSERT_ARGS(new_mem_ptrs_block)
     return mem_allocate_zeroed_typed(allocated_mem_ptrs);
 }
 
 /*
 
-=item C<static void
-register_ptr(lexer_state *lexer, void *ptr)>
+=item C<static void register_ptr(lexer_state *lexer, void *ptr)>
 
 Store the pointer C<ptr> in a datastructure; whenever C<release_resources()>
 is invoked, C<ptr> will be freed through C<mem_sys_free()>.
@@ -57,7 +98,9 @@
 
 */
 static void
-register_ptr(NOTNULL(lexer_state *lexer), ARGIN(void *ptr)) {
+register_ptr(ARGIN(lexer_state *lexer), ARGIN(void *ptr))
+{
+    ASSERT_ARGS(register_ptr)
     allocated_mem_ptrs *ptrs = lexer->mem_allocations;
 
     PARROT_ASSERT(ptrs);
@@ -75,8 +118,8 @@
 
 /*
 
-=item C<void *
-pir_mem_allocate_zeroed(lexer_state * const lexer, size_t numbytes)>
+=item C<void * pir_mem_allocate_zeroed(lexer_state * const lexer, size_t
+numbytes)>
 
 Memory allocation function for all PIR internal functions. Memory is allocated
 through Parrot's allocation functions, but the pointer to the allocated memory
@@ -92,7 +135,8 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 void *
-pir_mem_allocate_zeroed(NOTNULL(lexer_state * const lexer), size_t numbytes) {
+pir_mem_allocate_zeroed(ARGIN(lexer_state * const lexer), size_t numbytes)
+{
     void *ptr = mem_sys_allocate_zeroed(numbytes);
 
     totalmem += numbytes;
@@ -103,8 +147,7 @@
 
 /*
 
-=item C<void *
-pir_mem_allocate(NOTNULL(lexer_state * const lexer), size_t numbytes)>
+=item C<void * pir_mem_allocate(lexer_state * const lexer, size_t numbytes)>
 
 See C<pir_mem_allocate_zeroed()>. Memory is C<not> guaranteed to be zeroed.
 (It might, it might not, depending on what your system finds appropriate.
@@ -117,7 +160,8 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 void *
-pir_mem_allocate(NOTNULL(lexer_state * const lexer), size_t numbytes) {
+pir_mem_allocate(ARGIN(lexer_state * const lexer), size_t numbytes)
+{
     void *ptr = mem_sys_allocate(numbytes);
 
     totalmem += numbytes;
@@ -129,8 +173,8 @@
 
 /*
 
-=item C<void
-init_hashtable(lexer_state * const lexer, hashtable * const table, unsigned size)>
+=item C<void init_hashtable(lexer_state * const lexer, hashtable * const table,
+unsigned size)>
 
 Initialize the hashtable C<table> with space for C<size> buckets.
 
@@ -138,7 +182,7 @@
 
 */
 void
-init_hashtable(NOTNULL(lexer_state * const lexer), NOTNULL(hashtable * const table),
+init_hashtable(ARGIN(lexer_state * const lexer), ARGIN(hashtable * const table),
                unsigned size)
 {
     table->contents  = (bucket **)pir_mem_allocate_zeroed(lexer, size * sizeof (bucket *));
@@ -148,8 +192,8 @@
 
 /*
 
-=item C<lexer_state *
-new_lexer(char * const filename, int flags)>
+=item C<lexer_state * new_lexer(PARROT_INTERP, char * const filename, int
+flags)>
 
 Constructor for a lexer structure. Initializes all fields, creates
 a Parrot interpreter structure.
@@ -161,7 +205,8 @@
 PARROT_CANNOT_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
 lexer_state *
-new_lexer(PARROT_INTERP, NULLOK(char * const filename), int flags) {
+new_lexer(PARROT_INTERP, ARGIN_NULLOK(char * const filename), int flags)
+{
     lexer_state *lexer       = mem_allocate_zeroed_typed(lexer_state);
     lexer->filename          = filename;
     lexer->interp            = interp;
@@ -207,8 +252,7 @@
 
 /*
 
-=item C<bucket *
-new_bucket(lexer_state * const lexer)>
+=item C<bucket * new_bucket(lexer_state * const lexer)>
 
 Constructor for a bucket object.
 
@@ -218,14 +262,15 @@
 PARROT_CANNOT_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
 bucket *
-new_bucket(NOTNULL(lexer_state * const lexer)) {
+new_bucket(ARGIN(lexer_state * const lexer))
+{
     return pir_mem_allocate_zeroed_typed(lexer, bucket);
 }
 
 /*
 
-=item C<static void
-store_string(lexer_state * const lexer, char const * const str)>
+=item C<static void store_string(lexer_state * const lexer, char const * const
+str)>
 
 Store the string C<str> in a hashtable; whenever this string is needed, a pointer
 to the same physical string is returned, preventing allocating different buffers
@@ -236,7 +281,9 @@
 
 */
 static void
-store_string(NOTNULL(lexer_state * const lexer), NOTNULL(char const * const str)) {
+store_string(ARGIN(lexer_state * const lexer), ARGIN(char const * const str))
+{
+    ASSERT_ARGS(store_string)
     hashtable    *table = &lexer->strings;
     unsigned long hash  = get_hashcode(str, table->size);
     bucket *b           = new_bucket(lexer);
@@ -246,8 +293,8 @@
 
 /*
 
-=item C<static char const *
-find_string(lexer_state * const lexer, char const * const str)>
+=item C<static char const * find_string(lexer_state * const lexer, char const *
+const str)>
 
 Find the string C<str> in the lexer's string hashtable. If the string was found,
 then a pointer to that buffer is returned. So, whenever for instance the string
@@ -260,7 +307,9 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 static char const *
-find_string(NOTNULL(lexer_state * const lexer), NOTNULL(char const * const str)) {
+find_string(ARGIN(lexer_state * const lexer), ARGIN(char const * const str))
+{
+    ASSERT_ARGS(find_string)
     hashtable    *table = &lexer->strings;
     unsigned long hash  = get_hashcode(str, table->size);
     bucket *b           = get_bucket(table, hash);
@@ -278,8 +327,8 @@
 
 /*
 
-=item C<char *
-dupstrn(lexer_state * const lexer, char const * const source, size_t slen)>
+=item C<char const * dupstrn(lexer_state * const lexer, char * const source,
+size_t slen)>
 
 See dupstr, except that this version takes the number of characters to be
 copied. Easy for copying a string except the quotes, for instance.
@@ -293,7 +342,8 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 char const *
-dupstrn(NOTNULL(lexer_state * const lexer), NOTNULL(char * const source), size_t slen) {
+dupstrn(ARGIN(lexer_state * const lexer), ARGIN(char * const source), size_t slen)
+{
     char const * result = find_string(lexer, source);
     /* make sure the string is terminated in time */
     source[slen] = '\0';
@@ -313,8 +363,7 @@
 
 /*
 
-=item C<char *
-dupstr(lexer_state * const lexer, char const * const source)>
+=item C<char const * dupstr(lexer_state * const lexer, char * const source)>
 
 The C89 standard does not define a strdup() in the C library,
 so define our own strdup. Function names beginning with "str"
@@ -327,14 +376,14 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 char const *
-dupstr(NOTNULL(lexer_state * const lexer), NOTNULL(char * const source)) {
+dupstr(ARGIN(lexer_state * const lexer), ARGIN(char * const source))
+{
     return dupstrn(lexer, source, strlen(source));
 }
 
 /*
 
-=item C<void
-release_resources(lexer_state *lexer)>
+=item C<void release_resources(lexer_state *lexer)>
 
 Release all resources pointed to by C<lexer>.
 Free all memory that was allocated through C<pir_mem_allocate_zeroed()>.
@@ -344,7 +393,8 @@
 
 */
 void
-release_resources(NOTNULL(lexer_state *lexer)) {
+release_resources(ARGIN(lexer_state *lexer))
+{
     allocated_mem_ptrs *iter;
 
     if (TEST_FLAG(lexer->flags, LEXER_FLAG_VERBOSE))
@@ -375,8 +425,8 @@
 
 /*
 
-=item C<void
-pirwarning(lexer_state * const lexer, int lineno, char const * const message, ...)>
+=item C<void pirwarning(lexer_state * const lexer, int lineno, char const *
+const message, ...)>
 
 Emit a warning message to C<stderr>. The line number (passed in C<lineno>) is reported,
 together with the message. The message can be formatted, meaning it can contain
@@ -387,7 +437,11 @@
 
 */
 void
-pirwarning(lexer_state * const lexer, int lineno, char const * const message, ...) {
+pirwarning(ARGIN(lexer_state * const lexer),
+        int lineno,
+        ARGIN(char const * const message),
+        ...)
+{
     va_list arg_ptr;
     fprintf(stderr, "warning (line %d): ", lineno);
     va_start(arg_ptr, message);

Modified: branches/sys_mem_reduce/compilers/pirc/src/pircompiler.h
==============================================================================
--- branches/sys_mem_reduce/compilers/pirc/src/pircompiler.h	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/pirc/src/pircompiler.h	Sat Feb 20 22:12:51 2010	(r44252)
@@ -158,20 +158,6 @@
 /* accessor for current macro; always first on the list. */
 #define CURRENT_MACRO(X)    (X)->macros->definitions
 
-
-/* constructor for a lexer_state object */
-lexer_state *new_lexer(PARROT_INTERP, char * const filename, int flags);
-
-void release_resources(lexer_state *lexer);
-
-char const *dupstr(lexer_state * const lexer, char * const str);
-
-char const *dupstrn(lexer_state * const lexer, char * const str, size_t numchars);
-
-bucket *new_bucket(lexer_state * const lexer);
-
-void init_hashtable(lexer_state * const lexer, hashtable * const table, unsigned size);
-
 /* same trick as in parrot's memory system, for "automagic" casting */
 #define pir_mem_allocate_zeroed_typed(lxr, type) (type *)pir_mem_allocate_zeroed(lxr, sizeof (type))
 
@@ -179,11 +165,97 @@
  * allocated will be freed after the compilation. If you only need some memory temporarily
  * and freeing can be done soon after (manually), then use parrot's mem_sys_allocate().
  */
-void *pir_mem_allocate_zeroed(lexer_state * const lexer, size_t numbytes);
 
-void *pir_mem_allocate(lexer_state * const lexer, size_t numbytes);
+/* HEADERIZER BEGIN: compilers/pirc/src/pircompiler.c */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+char const * dupstr(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char * const source))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+char const * dupstrn(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char * const source),
+    size_t slen)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void init_hashtable(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(hashtable * const table),
+    unsigned size)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+bucket * new_bucket(ARGIN(lexer_state * const lexer))
+        __attribute__nonnull__(1);
+
+PARROT_MALLOC
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+lexer_state * new_lexer(PARROT_INTERP,
+    ARGIN_NULLOK(char * const filename),
+    int flags)
+        __attribute__nonnull__(1);
+
+PARROT_MALLOC
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+void * pir_mem_allocate(ARGIN(lexer_state * const lexer), size_t numbytes)
+        __attribute__nonnull__(1);
+
+PARROT_MALLOC
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+void * pir_mem_allocate_zeroed(
+    ARGIN(lexer_state * const lexer),
+    size_t numbytes)
+        __attribute__nonnull__(1);
+
+void pirwarning(
+    ARGIN(lexer_state * const lexer),
+    int lineno,
+    ARGIN(char const * const message),
+    ...)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(3);
+
+void release_resources(ARGIN(lexer_state *lexer))
+        __attribute__nonnull__(1);
+
+#define ASSERT_ARGS_dupstr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(source))
+#define ASSERT_ARGS_dupstrn __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(source))
+#define ASSERT_ARGS_init_hashtable __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(table))
+#define ASSERT_ARGS_new_bucket __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_new_lexer __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_pir_mem_allocate __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_pir_mem_allocate_zeroed __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_pirwarning __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(message))
+#define ASSERT_ARGS_release_resources __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: compilers/pirc/src/pircompiler.c */
 
-void pirwarning(lexer_state * const lexer, int lineno, char const * const message, ...);
 
 #endif /* PARROT_PIR_PIRCOMPILER_H_GUARD */
 

Modified: branches/sys_mem_reduce/compilers/pirc/src/pircompunit.c
==============================================================================
--- branches/sys_mem_reduce/compilers/pirc/src/pircompunit.c	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/pirc/src/pircompunit.c	Sat Feb 20 22:12:51 2010	(r44252)
@@ -44,6 +44,93 @@
 #include "parrot/dynext.h"
 #include "pmc/pmc_callcontext.h"
 
+/* HEADERIZER HFILE: compilers/pirc/src/pircompunit.h */
+
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+static void add_self_parameter(ARGIN(lexer_state * const lexer))
+        __attribute__nonnull__(1);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+static constant * create_const(
+    ARGIN(lexer_state * const lexer),
+    value_type type,
+    va_list arg_ptr)
+        __attribute__nonnull__(1);
+
+static void fixup_local_labels(ARGIN(lexer_state * const lexer))
+        __attribute__nonnull__(1);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+static expression * new_expr(
+    ARGIN(lexer_state * const lexer),
+    expr_type type)
+        __attribute__nonnull__(1);
+
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+static instruction * new_instruction(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const opname))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+static invocation * new_invocation(ARGIN(lexer_state * const lexer))
+        __attribute__nonnull__(1);
+
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+static key_entry * new_key_entry(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(expression * const expr))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_MALLOC
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+static label * new_label(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const labelid),
+    int offset)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static void new_statement(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const opname))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+#define ASSERT_ARGS_add_self_parameter __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_create_const __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_fixup_local_labels __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_new_expr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_new_instruction __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(opname))
+#define ASSERT_ARGS_new_invocation __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_new_key_entry __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(expr))
+#define ASSERT_ARGS_new_label __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(labelid))
+#define ASSERT_ARGS_new_statement __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(opname))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: static */
 
 static unsigned const prime_numbers[] = {113 /* XXX think of more primes */ };
 
@@ -53,8 +140,7 @@
 
 =over 4
 
-=item C<void
-reset_register_allocator(lexer_state * const lexer)>
+=item C<void reset_register_allocator(lexer_state * const lexer)>
 
 Reset the register numbers for all types. After this
 function has been invoked, the next request for a new
@@ -65,7 +151,8 @@
 
 */
 void
-reset_register_allocator(lexer_state * const lexer) {
+reset_register_allocator(ARGIN(lexer_state * const lexer))
+{
     /* set register allocator to 0 for all register types. */
     int i;
     for (i = 0; i < NUM_PARROT_TYPES; ++i)
@@ -75,8 +162,7 @@
 
 /*
 
-=item C<void
-set_namespace(lexer_state * const lexer, key * const ns)>
+=item C<void set_namespace(lexer_state * const lexer, key * const ns)>
 
 Set the current namespace in the lexer state, so that it is
 available when needed, i.e. when a new subroutine node is
@@ -86,14 +172,15 @@
 
 */
 void
-set_namespace(lexer_state * const lexer, key * const ns) {
+set_namespace(ARGIN(lexer_state * const lexer), ARGIN(key * const ns))
+{
     lexer->current_ns = ns;
 }
 
 /*
 
-=item C<void
-set_sub_outer(lexer_state * const lexer, char const * const outersub)>
+=item C<void set_sub_outer(lexer_state * const lexer, char const * const
+outersub)>
 
 Set the lexically enclosing sub for the current sub.
 Thus, set the :outer() argument to the current subroutine.
@@ -102,7 +189,9 @@
 
 */
 void
-set_sub_outer(lexer_state * const lexer, char const * const outersub) {
+set_sub_outer(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const outersub))
+{
     CURRENT_SUB(lexer)->info.outersub = outersub;
     SET_FLAG(lexer->subs->flags, PIRC_SUB_FLAG_HAS_OUTER);
 }
@@ -112,7 +201,7 @@
 /*
 
 =item C<void
-set_sub_multi_type(lexer_state * const lexer, expression * const multitype)>
+set_sub_multi_type(ARGIN(lexer_state * const lexer), expression * const multitype)>
 
 Add the multi-method signature type in C<multitype> to the current subroutine.
 
@@ -120,7 +209,9 @@
 
 */
 void
-set_sub_multi_types(lexer_state * const lexer, expression * const multitype) {
+set_sub_multi_types(ARGIN(lexer_state * const lexer),
+        ARGIN(expression * const multitype))
+{
     /* info.num_types is 1 higher than the actual number of types;
      * n=1 means :multi() without any types; therefore, subtract 1 for actual number.
      */
@@ -159,8 +250,7 @@
 
 /*
 
-=item C<static void
-add_self_parameter(lexer_state * const lexer)>
+=item C<static void add_self_parameter(lexer_state * const lexer)>
 
 Add a parameter named C<"self"> to the current subroutine, but only
 if both :vtable and :method flags have I<not> been set yet. If either
@@ -170,7 +260,8 @@
 
 */
 static void
-add_self_parameter(lexer_state * const lexer) {
+add_self_parameter(ARGIN(lexer_state * const lexer))
+{
     /* only add "self" parameter if :vtable and :method flags have not been set yet */
     if (!TEST_FLAG(CURRENT_SUB(lexer)->flags, (PIRC_SUB_FLAG_VTABLE | PIRC_SUB_FLAG_METHOD))) {
 
@@ -180,8 +271,7 @@
 
 /*
 
-=item C<void
-set_sub_vtable(lexer_state * const lexer, char const * vtablename)>
+=item C<void set_sub_vtable(lexer_state * const lexer, char const * vtablename)>
 
 Set the :vtable() flag argument to the current subroutine. If C<vtablename>
 is NULL, the name of the current sub is taken to be the vtable method name.
@@ -192,7 +282,9 @@
 
 */
 void
-set_sub_vtable(lexer_state * const lexer, char const * vtablename) {
+set_sub_vtable(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * vtablename))
+{
     int vtable_index;
 
     if (vtablename == NULL)  /* the sub's name I<is> the vtablename */
@@ -226,8 +318,7 @@
 
 /*
 
-=item C<void
-set_sub_subid(lexer_state * const lexer, char const * const subid)>
+=item C<void set_sub_subid(lexer_state * const lexer, char const * const subid)>
 
 Set the name specified in the :subid flag on the sub.
 
@@ -235,15 +326,17 @@
 
 */
 void
-set_sub_subid(lexer_state * const lexer, char const * const subid) {
+set_sub_subid(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const subid))
+{
     CURRENT_SUB(lexer)->info.subid = subid;
     SET_FLAG(lexer->subs->flags, PIRC_SUB_FLAG_SUBID);
 }
 
 /*
 
-=item C<void
-set_sub_methodname(lexer_state * const lexer, char const * const methodname)>
+=item C<void set_sub_methodname(lexer_state * const lexer, char const * const
+methodname)>
 
 Set the :method flag on a sub; if C<methodname> is not NULL, then it contains
 the name by which the sub is stored as a method.
@@ -252,7 +345,9 @@
 
 */
 void
-set_sub_methodname(lexer_state * const lexer, char const * const methodname) {
+set_sub_methodname(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const methodname))
+{
     if (methodname) /* :method("foo") */
         CURRENT_SUB(lexer)->methodname = methodname;
     else /* :method without a value defaults to the subname. */
@@ -268,8 +363,8 @@
 
 /*
 
-=item C<void
-set_sub_instanceof(lexer_state * const lexer, char const * const classname)>
+=item C<void set_sub_instanceof(lexer_state * const lexer, char const * const
+classname)>
 
 Set the value of the C<:instanceof> flag on a sub. Note that this flag
 is experimental, and not actually used at this point.
@@ -278,14 +373,16 @@
 
 */
 void
-set_sub_instanceof(lexer_state * const lexer, char const * const classname) {
+set_sub_instanceof(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const classname))
+{
     CURRENT_SUB(lexer)->info.instanceof = classname;
 }
 
 /*
 
-=item C<void
-set_sub_nsentry(lexer_state * const lexer, char const * const nsentry)>
+=item C<void set_sub_nsentry(lexer_state * const lexer, char const * const
+nsentry)>
 
 Set the value of the C<:nsentry> flag on a sub. The value of C<nsentry> is the name
 by which the sub is stored in the namespace.
@@ -294,14 +391,15 @@
 
 */
 void
-set_sub_nsentry(lexer_state * const lexer, char const * const nsentry) {
+set_sub_nsentry(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const nsentry))
+{
     CURRENT_SUB(lexer)->info.nsentry = nsentry;
 }
 
 /*
 
-=item C<void
-set_sub_flag(lexer_state * const lexer, sub_flag flag)>
+=item C<void set_sub_flag(lexer_state * const lexer, sub_flag flag)>
 
 Set a subroutine flag on the current sub. The C<flag> parameter may encode
 multiple flags.
@@ -310,7 +408,8 @@
 
 */
 void
-set_sub_flag(lexer_state * const lexer, sub_flag flag) {
+set_sub_flag(ARGIN(lexer_state * const lexer), sub_flag flag)
+{
     /* set the specified flag in the current subroutine */
     SET_FLAG(CURRENT_SUB(lexer)->flags, flag);
 
@@ -318,8 +417,7 @@
 
 /*
 
-=item C<void
-new_subr(lexer_state * const lexer, char const * const subname)>
+=item C<void new_subr(lexer_state * const lexer, STRING *subname)>
 
 Create a new subroutine node, and set it as the "current"
 subroutine, on which all other sub-related operations do
@@ -329,7 +427,8 @@
 
 */
 void
-new_subr(lexer_state * const lexer, STRING *subname) {
+new_subr(ARGIN(lexer_state * const lexer), ARGIN(STRING *subname))
+{
     subroutine *newsub       = pir_mem_allocate_zeroed_typed(lexer, subroutine);
     int         index;
 
@@ -380,8 +479,8 @@
 
 /*
 
-=item C<void
-set_sub_name(lexer_state * const lexer, char const * const subname)>
+=item C<void set_sub_name(lexer_state * const lexer, char const * const
+subname)>
 
 Set the current subroutine's name to C<subname>.
 
@@ -389,23 +488,29 @@
 
 */
 void
-set_sub_name(lexer_state * const lexer, char const * const subname) {
+set_sub_name(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const subname))
+{
     CURRENT_SUB(lexer)->info.subname = subname;
 }
 
 
 /*
 
-=item C<static instruction *
-new_instruction(lexer_state * const lexer, char const * const opname)>
+=item C<static instruction * new_instruction(lexer_state * const lexer, char
+const * const opname)>
 
 Create a new instruction node and set C<opname> as the instruction.
 
 =cut
 
 */
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
 static instruction *
-new_instruction(lexer_state * const lexer, char const * const opname) {
+new_instruction(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const opname))
+{
     instruction *ins = pir_mem_allocate_zeroed_typed(lexer, instruction);
     ins->opname      = opname;
     ins->opcode      = -1; /* make sure this field is properly initialized;
@@ -416,8 +521,8 @@
 
 /*
 
-=item C<static void
-new_statement(lexer_state * const lexer, char const * const opname)>
+=item C<static void new_statement(lexer_state * const lexer, char const * const
+opname)>
 
 Constructor for a statement. The newly allocated statement will be inserted
 into the current subroutine's statements list.
@@ -426,7 +531,9 @@
 
 */
 static void
-new_statement(lexer_state * const lexer, char const * const opname) {
+new_statement(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const opname))
+{
     instruction *instr = new_instruction(lexer, opname);
 
     /* Each instruction has a sequence number to be able to
@@ -458,8 +565,7 @@
 
 /*
 
-=item C<void
-set_curtarget(lexer_state * const lexer, target * const t)>
+=item C<target * set_curtarget(lexer_state * const lexer, target * const t)>
 
 Sets the target C<t> as the current target in C<lexer> to
 make it accessible to other parse actions. C<t> is returned.
@@ -470,15 +576,15 @@
 PARROT_IGNORABLE_RESULT
 PARROT_CANNOT_RETURN_NULL
 target *
-set_curtarget(lexer_state * const lexer, target * const t) {
+set_curtarget(ARGIN(lexer_state * const lexer), ARGIN(target * const t))
+{
     lexer->curtarget = t;
     return t;
 }
 
 /*
 
-=item C<argument *
-set_curarg(lexer_state * const lexer, argument * const arg)>
+=item C<argument * set_curarg(lexer_state * const lexer, argument * const arg)>
 
 Sets the argument C<arg> as the current argument in C<lexer>
 to make it accessible to other parse actions. C<arg> is returned.
@@ -489,15 +595,17 @@
 PARROT_IGNORABLE_RESULT
 PARROT_CANNOT_RETURN_NULL
 argument *
-set_curarg(lexer_state * const lexer, argument * const arg) {
+set_curarg(ARGIN(lexer_state * const lexer),
+        ARGIN(argument * const arg))
+{
     lexer->curarg = arg;
     return arg;
 }
 
 /*
 
-=item C<int
-targets_equal(target const * const left, target const * const right)>
+=item C<int targets_equal(target const * const left, target const * const
+right)>
 
 Returns true if C<left> equals C<right>, false otherwise. C<left> is
 considered to be equal to C<right> if any of the following conditions
@@ -519,7 +627,9 @@
 PARROT_PURE_FUNCTION
 PARROT_WARN_UNUSED_RESULT
 int
-targets_equal(target const * const left, target const * const right) {
+targets_equal(ARGIN(target const * const left),
+        ARGIN(target const * const right))
+{
 
 
     if (TEST_FLAG(left->flags, TARGET_FLAG_IS_REG)) {      /* if left is a reg */
@@ -550,8 +660,7 @@
 
 /*
 
-=item C<target *
-new_target(lexer_state * const lexer)>
+=item C<target * new_target(lexer_state * const lexer)>
 
 Create a new target node. The node's next pointer is initialized to itself.
 
@@ -561,7 +670,8 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 target *
-new_target(lexer_state * const lexer) {
+new_target(ARGIN(lexer_state * const lexer))
+{
     target *t       = pir_mem_allocate_zeroed_typed(lexer, target);
     t->key          = NULL;
     t->next         = t; /* circly linked list */
@@ -569,8 +679,7 @@
 }
 
 /*
-=item C<void
-set_target_key(target * const t, key * const k)>
+=item C<void set_target_key(target * const t, key * const k)>
 
 Set the key C<k> on target C<t>. For instance:
 
@@ -582,14 +691,15 @@
 
 */
 void
-set_target_key(target * const t, key * const k) {
+set_target_key(ARGIN(target * const t), ARGIN(key * const k))
+{
     t->key = k;
 }
 
 /*
 
-=item C<target *
-target_from_symbol(lexer_state * const lexer, symbol * const sym)>
+=item C<target * target_from_symbol(lexer_state * const lexer, symbol * const
+sym)>
 
 Convert symbol C<sym> into a target node. The resulting target has
 a pointer to C<sym>.
@@ -600,7 +710,9 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 target *
-target_from_symbol(lexer_state * const lexer, symbol * const sym) {
+target_from_symbol(ARGIN(lexer_state * const lexer),
+        ARGIN(symbol * const sym))
+{
     target *t  = new_target(lexer);
 
     t->flags   = sym->flags; /* copy the flags */
@@ -611,8 +723,8 @@
 
 /*
 
-=item C<target *
-add_target(lexer_state * const lexer, target *last, target * const t)>
+=item C<target * add_target(lexer_state * const lexer, target *last, target *
+const t)>
 
 Add a new target to the list pointed to by C<list>. C<list> points to
 the last element, C<<last->next>> points to the first. The list is
@@ -626,7 +738,9 @@
 PARROT_IGNORABLE_RESULT
 PARROT_CANNOT_RETURN_NULL
 target *
-add_target(lexer_state * const lexer, target *last, target * const t) {
+add_target(ARGIN(lexer_state * const lexer),
+        ARGMOD(target *last), ARGIN(target * const t))
+{
     PARROT_ASSERT(last);
     PARROT_ASSERT(t);
 
@@ -640,8 +754,8 @@
 
 /*
 
-=item C<target *
-add_param(lexer_state * const lexer, pir_type type, char const * const name)>
+=item C<target * add_param(lexer_state * const lexer, pir_type type, char const
+* const name)>
 
 Add a parameter of type C<type> and named C<name> to the current
 subroutine. The parameter will be declared as a local symbol in the
@@ -653,7 +767,9 @@
 PARROT_IGNORABLE_RESULT
 PARROT_CANNOT_RETURN_NULL
 target *
-add_param(lexer_state * const lexer, pir_type type, char const * const name) {
+add_param(ARGIN(lexer_state * const lexer), pir_type type,
+        ARGIN(char const * const name))
+{
     target *targ = new_target(lexer);
     symbol *sym  = new_symbol(lexer, name, type);
 
@@ -688,8 +804,8 @@
 
 /*
 
-=item C<void
-set_param_alias(lexer_state * const lexer, char const * const alias)>
+=item C<target * set_param_alias(lexer_state * const lexer, char const * const
+alias)>
 
 Set the argument of the :named flag for the current target
 (parameter). Returns the current target (parameter). This function assumes
@@ -702,7 +818,9 @@
 PARROT_IGNORABLE_RESULT
 PARROT_CANNOT_RETURN_NULL
 target *
-set_param_alias(lexer_state * const lexer, char const * const alias) {
+set_param_alias(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const alias))
+{
     PARROT_ASSERT(lexer->curtarget != NULL);
 
     /* if no alias was specified, default to the target's name, if it's not a register. */
@@ -722,8 +840,8 @@
 
 /*
 
-=item C<void
-set_param_flag(lexer_state * const lexer, target * const param, target_flag flag)>
+=item C<target * set_param_flag(lexer_state * const lexer, target * const param,
+target_flag flag)>
 
 Set the flag C<flag> on parameter C<param>. The actual value
 of C<flag> may encode several flags at a time. Returns C<param>.
@@ -734,7 +852,9 @@
 PARROT_IGNORABLE_RESULT
 PARROT_CANNOT_RETURN_NULL
 target *
-set_param_flag(lexer_state * const lexer, target * const param, target_flag flag) {
+set_param_flag(ARGIN(lexer_state * const lexer),
+        ARGIN(target * const param), target_flag flag)
+{
     SET_FLAG(param->flags, flag);
 
     /* note that param is always an identifier; registers are not allowed as parameters.
@@ -757,8 +877,8 @@
 
 /*
 
-=item C<argument *
-new_argument(lexer_state * const lexer, expression * const expr)>
+=item C<argument * new_argument(lexer_state * const lexer, expression * const
+expr)>
 
 Create a new argument node which wraps C<expr>. The new argument node
 is circular linked, meaning its C<next> pointer points to itself.
@@ -769,7 +889,9 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 argument *
-new_argument(lexer_state * const lexer, expression * const expr) {
+new_argument(ARGIN(lexer_state * const lexer),
+        ARGIN(expression * const expr))
+{
     argument *arg = pir_mem_allocate_zeroed_typed(lexer, argument);
     arg->value    = expr;
     arg->next     = arg;
@@ -780,8 +902,7 @@
 
 /*
 
-=item C<argument *
-add_arg(argument *last, argument * const newarg)>
+=item C<argument * add_arg(argument *last, argument * const newarg)>
 
 Add argument C<newarg> at the end of the list pointed to by C<last>.
 The list is circular linked, and C<last> points to the last item.
@@ -796,7 +917,8 @@
 PARROT_IGNORABLE_RESULT
 PARROT_CANNOT_RETURN_NULL
 argument *
-add_arg(argument *last, argument * const newarg) {
+add_arg(ARGMOD(argument *last), ARGIN(argument * const newarg))
+{
     PARROT_ASSERT(last);
     PARROT_ASSERT(newarg);
 
@@ -809,8 +931,7 @@
 
 /*
 
-=item C<void
-unshift_arg(invocation * const inv, argument * const newarg)>
+=item C<argument * unshift_arg(invocation * const inv, argument * const newarg)>
 
 Unshift argument C<newarg> on an invocation object. The number
 of arguments in the list of C<inv> is incremented to reflect
@@ -839,7 +960,8 @@
 PARROT_IGNORABLE_RESULT
 PARROT_CANNOT_RETURN_NULL
 argument *
-unshift_arg(invocation * const inv, argument * const newarg) {
+unshift_arg(ARGIN(invocation * const inv), ARGIN(argument * const newarg))
+{
     ++inv->num_arguments;
 
     if (inv->arguments) {
@@ -854,8 +976,7 @@
 
 /*
 
-=item C<void
-set_arg_flag(argument * const arg, arg_flag flag)>
+=item C<argument * set_arg_flag(argument * const arg, arg_flag flag)>
 
 Set the flag C<flag> on argument C<arg>. Note the C<flag> may
 encode multiple flags. C<arg> is returned.
@@ -866,15 +987,16 @@
 PARROT_IGNORABLE_RESULT
 PARROT_CANNOT_RETURN_NULL
 argument *
-set_arg_flag(argument * const arg, arg_flag flag) {
+set_arg_flag(ARGIN(argument * const arg), arg_flag flag)
+{
     SET_FLAG(arg->flags, flag);
     return arg;
 }
 
 /*
 
-=item C<void
-set_arg_alias(lexer_state * const lexer, char const * const alias)>
+=item C<argument * set_arg_alias(lexer_state * const lexer, char const * const
+alias)>
 
 Set the alias specified in C<alias> on the current argument, accessible
 through C<lexer>. The alias is the name under which the argument is passed
@@ -887,7 +1009,9 @@
 PARROT_IGNORABLE_RESULT
 PARROT_CANNOT_RETURN_NULL
 argument *
-set_arg_alias(lexer_state * const lexer, char const * const alias) {
+set_arg_alias(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const alias))
+{
     PARROT_ASSERT(lexer->curarg != NULL);
     lexer->curarg->alias = alias;
     SET_FLAG(lexer->curarg->flags, ARG_FLAG_NAMED);
@@ -896,8 +1020,8 @@
 
 /*
 
-=item C<void
-load_library(lexer_state * const lexer, char const * const library)>
+=item C<void load_library(lexer_state * const lexer, char const * const
+library)>
 
 Load the library indicated by C<library>.
 
@@ -905,7 +1029,9 @@
 
 */
 void
-load_library(lexer_state * const lexer, char const * const library) {
+load_library(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const library))
+{
     /* see imcc.y:600 */
     STRING *libname       = Parrot_str_new(lexer->interp, library, strlen(library));
     PMC    *ignored_value = Parrot_load_lib(lexer->interp, libname, NULL);
@@ -916,8 +1042,7 @@
 
 /*
 
-=item C<void
-set_label(lexer_state * const lexer, char const * const label)>
+=item C<void set_label(lexer_state * const lexer, char const * const labelname)>
 
 Set the label C<label> on the current instruction.
 
@@ -925,7 +1050,9 @@
 
 */
 void
-set_label(lexer_state * const lexer, char const * const labelname) {
+set_label(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const labelname))
+{
     instruction *instr = CURRENT_INSTRUCTION(lexer);
 
     PARROT_ASSERT(instr);
@@ -954,8 +1081,7 @@
 
 /*
 
-=item C<void
-set_instr(lexer_state * const lexer, char const * const opname)>
+=item C<void set_instr(lexer_state * const lexer, char const * const opname)>
 
 Sets C<opname> to the current instruction, without operands. This is a
 wrapper function for C<set_instrf> to prevent calls with an empty format
@@ -965,14 +1091,15 @@
 
 */
 void
-set_instr(lexer_state * const lexer, char const * const opname) {
+set_instr(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const opname))
+{
     set_instrf(lexer, opname, "");
 }
 
 /*
 
-=item C<void
-update_instr(lexer_state * const lexer, char * const newop)>
+=item C<void update_instr(lexer_state * const lexer, char const * const newop)>
 
 Update the current instruction; the new opname is given by C<newop>.
 
@@ -980,7 +1107,9 @@
 
 */
 void
-update_instr(lexer_state * const lexer, char const * const newop) {
+update_instr(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const newop))
+{
     PARROT_ASSERT(CURRENT_INSTRUCTION(lexer));
     CURRENT_INSTRUCTION(lexer)->opname = newop;
 }
@@ -1023,8 +1152,8 @@
 
 /*
 
-=item C<void
-set_instrf(lexer_state *lexer, char *opname, char const * const format, ...)>
+=item C<void set_instrf(lexer_state * const lexer, char const * const opname,
+char const * const format, ...)>
 
 Set the specified instruction, using the operands from the vararg list. The
 number and types of operands is specified by C<format>. The type of the
@@ -1061,7 +1190,11 @@
 
 */
 void
-set_instrf(lexer_state * const lexer, char const * const opname, char const * const format, ...) {
+set_instrf(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const opname),
+        ARGIN(char const * const format),
+        ...)
+{
     va_list  arg_ptr;       /* for the var. args */
     unsigned i;             /* loop iterator */
     size_t   format_length; /* length of the format string. */
@@ -1092,8 +1225,8 @@
 
 /*
 
-=item C<void
-add_operands(lexer_state * const lexer, char const * const format, ...)>
+=item C<void add_operands(lexer_state * const lexer, char const * const format,
+...)>
 
 Add operands to the current instruction. This is a variable argument function;
 C<format> contains placeholders, see the macro C<get_instr_var_arg> above
@@ -1104,7 +1237,10 @@
 
 */
 void
-add_operands(lexer_state * const lexer, char const * const format, ...) {
+add_operands(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const format),
+        ...)
+{
     va_list  arg_ptr;       /* for the var. args */
     unsigned i;             /* loop iterator */
     size_t   format_length; /* length of the format string. */
@@ -1132,8 +1268,7 @@
 
 /*
 
-=item C<void
-set_op_labelflag(lexer_state * const lexer, int flag)>
+=item C<void set_op_labelflag(lexer_state * const lexer, int flag)>
 
 Set a flag on the current instruction that it contains labels as operands.
 The bit indicates which operand, count starting from bit 1.
@@ -1142,15 +1277,15 @@
 
 */
 void
-set_op_labelflag(lexer_state * const lexer, int flag) {
+set_op_labelflag(ARGIN(lexer_state * const lexer), int flag)
+{
     PARROT_ASSERT(CURRENT_INSTRUCTION(lexer));
     SET_FLAG(CURRENT_INSTRUCTION(lexer)->oplabelbits, flag);
 }
 
 /*
 
-=item C<char *
-get_inverse(char *instr)>
+=item C<char const * get_inverse(char const * const instr)>
 
 Returns the instruction with inversed semantics; for instance
 C<if> becomes C<unless>, C<greater-than> becomes C<less-or-equals>.
@@ -1159,8 +1294,10 @@
 
 */
 PARROT_CONST_FUNCTION
+PARROT_CANNOT_RETURN_NULL
 char const *
-get_inverse(char const * const instr) {
+get_inverse(ARGIN(char const * const instr))
+{
          if (STREQ(instr, "if")) return "unless";
     else if (STREQ(instr, "gt")) return "le";
     else if (STREQ(instr, "ge")) return "lt";
@@ -1175,8 +1312,7 @@
 
 /*
 
-=item C<void
-invert_instr(lexer_state *lexer)>
+=item C<void invert_instr(lexer_state * const lexer)>
 
 Invert the current instruction. This function assumes there is an instruction
 already in place.
@@ -1185,7 +1321,8 @@
 
 */
 void
-invert_instr(lexer_state * const lexer) {
+invert_instr(ARGIN(lexer_state * const lexer))
+{
     instruction * const  ins   = CURRENT_INSTRUCTION(lexer);
     char          const *instr;
     PARROT_ASSERT(ins);
@@ -1199,8 +1336,7 @@
 
 /*
 
-=item C<expression *
-get_operand(lexer_state * const lexer, short n)>
+=item C<expression * get_operand(lexer_state * const lexer, short n)>
 
 Get the C<n>th operand from the current instruction. If there are no
 operands, NULL is returned. Because the operands are stored in a
@@ -1216,7 +1352,8 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 expression *
-get_operand(lexer_state * const lexer, short n) {
+get_operand(ARGIN(lexer_state * const lexer), short n)
+{
     expression *operand = CURRENT_INSTRUCTION(lexer)->operands;
 
     if (operand == NULL)
@@ -1241,8 +1378,7 @@
 
 /*
 
-=item C<void
-get_operands(lexer_state * const lexer, int bitmask, ...)>
+=item C<void get_operands(lexer_state * const lexer, int bitmask, ...)>
 
 Get operands from the current instruction. C<bitmask> indicates which operands
 are requested; if the C<i>th bit is set, the C<i>th operand is returned in a
@@ -1255,7 +1391,8 @@
 
 */
 void
-get_operands(lexer_state * const lexer, int bitmask, ...) {
+get_operands(ARGIN(lexer_state * const lexer), int bitmask, ...)
+{
     instruction *instr   = CURRENT_INSTRUCTION(lexer);
     expression  *iter    = instr->operands;
     int          numargs;
@@ -1292,8 +1429,7 @@
 
 /*
 
-=item C<int
-get_operand_count(lexer_state * const lexer)>
+=item C<unsigned get_operand_count(lexer_state * const lexer)>
 
 Returns the number of operands of the I<current> instruction.
 This function assumes there is an instruction in place
@@ -1304,7 +1440,8 @@
 */
 PARROT_WARN_UNUSED_RESULT
 unsigned
-get_operand_count(lexer_state * const lexer) {
+get_operand_count(ARGIN(lexer_state * const lexer))
+{
     unsigned count = 0;
     expression *first, *operand;
 
@@ -1329,8 +1466,8 @@
 
 /*
 
-=item C<static constant *
-create_const(lexer_state * const lexer, value_type type, char * const name, va_list arg_ptr)>
+=item C<static constant * create_const(lexer_state * const lexer, value_type
+type, va_list arg_ptr)>
 
 Constant constructor; based on C<type>, retrieve a value of the
 appropriate type from C<arg_ptr>.
@@ -1341,7 +1478,8 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 static constant *
-create_const(lexer_state * const lexer, value_type type, va_list arg_ptr) {
+create_const(ARGIN(lexer_state * const lexer), value_type type, va_list arg_ptr)
+{
     constant *c = pir_mem_allocate_zeroed_typed(lexer, constant);
     c->type     = type;
     c->next     = NULL;
@@ -1371,8 +1509,7 @@
 
 /*
 
-=item C<constant *
-new_const(lexer_state * const lexer, value_type type, ...)>
+=item C<constant * new_const(lexer_state * const lexer, value_type type, ...)>
 
 Creates a new constant node of the given type.
 Wrapper function for C<create_const>
@@ -1383,7 +1520,8 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 constant *
-new_const(lexer_state * const lexer, value_type type, ...) {
+new_const(ARGIN(lexer_state * const lexer), value_type type, ...)
+{
     constant *c;
     va_list arg_ptr;
     va_start(arg_ptr, type);
@@ -1394,8 +1532,8 @@
 
 /*
 
-=item C<constdecl *
-new_named_const(lexer_state * const lexer, value_type type, char * const name, ...)>
+=item C<constdecl * new_named_const(lexer_state * const lexer, value_type type,
+char const * const name, ...)>
 
 Creates a new constdecl node of the given type, by the given name.
 
@@ -1405,7 +1543,10 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 constdecl *
-new_named_const(lexer_state * const lexer, value_type type, char const * const name, ...) {
+new_named_const(ARGIN(lexer_state * const lexer), value_type type,
+        ARGIN(char const * const name),
+        ...)
+{
     constdecl *c = (constdecl *)pir_mem_allocate(lexer, sizeof (constdecl));
     va_list arg_ptr;
     va_start(arg_ptr, name);
@@ -1440,8 +1581,8 @@
 
 /*
 
-=item C<constdecl *
-new_pmc_const(char const * const type, char const * const name, constant * const value)>
+=item C<constdecl * new_pmc_const(lexer_state * const lexer, char const * const
+type, char const * const name, constant * const value)>
 
 Create a new PMC constant declaration of type C<type>, name C<name> and having a value C<value>.
 The type must be a string indicating a valid type name (e.g. "Sub"). C<name> is the name
@@ -1450,9 +1591,13 @@
 =cut
 
 */
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
 constdecl *
-new_pmc_const(lexer_state * const lexer, char const * const type,
-              char const * const name, constant * const value)
+new_pmc_const(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const type),
+        ARGIN(char const * const name),
+        ARGIN(constant * const value))
 {
     /* get a STRING representation of the c-string type */
     STRING *classname    = Parrot_str_new(lexer->interp, type, strlen(type));
@@ -1508,7 +1653,7 @@
             symbol *constsym  = new_symbol(lexer, name, PMC_TYPE);
             target *consttarg = target_from_symbol(lexer, constsym);
 
-            PMC *intconst = pmc_new(lexer->interp,
+            PMC *intconst = Parrot_pmc_new(lexer->interp,
                                     Parrot_get_ctx_HLL_type(lexer->interp, enum_class_Integer));
             int index     = add_pmc_const(lexer->bc, intconst);
             VTABLE_set_integer_native(lexer->interp, intconst, value->val.ival);
@@ -1543,7 +1688,7 @@
             symbol *constsym  = new_symbol(lexer, name, PMC_TYPE);
             target *consttarg = target_from_symbol(lexer, constsym);
 
-            PMC *numconst     = pmc_new(lexer->interp,
+            PMC *numconst     = Parrot_pmc_new(lexer->interp,
                                         Parrot_get_ctx_HLL_type(lexer->interp, enum_class_Float));
             int index         = add_pmc_const(lexer->bc, numconst);
             VTABLE_set_number_native(lexer->interp, numconst, value->val.nval);
@@ -1573,7 +1718,7 @@
             symbol *constsym  = new_symbol(lexer, name, PMC_TYPE);
             target *consttarg = target_from_symbol(lexer, constsym);
 
-            PMC    *strconst  = pmc_new(lexer->interp,
+            PMC    *strconst  = Parrot_pmc_new(lexer->interp,
                                     Parrot_get_ctx_HLL_type(lexer->interp, enum_class_String));
 
             int     index     = add_pmc_const(lexer->bc, strconst);
@@ -1607,8 +1752,7 @@
 
 /*
 
-=item C<static invocation *
-new_invocation(lexer_state * const lexer)>
+=item C<static invocation * new_invocation(lexer_state * const lexer)>
 
 Returns a pointer to a new invocation object. In the current implementation,
 there can only be one invocation object at any time. For that reason, the
@@ -1624,7 +1768,8 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 static invocation *
-new_invocation(lexer_state * const lexer) {
+new_invocation(ARGIN(lexer_state * const lexer))
+{
     /* optimization: return the address of the cached object */
     invocation *inv = &lexer->obj_cache.inv_cache;
     /* clear all fields */
@@ -1637,8 +1782,7 @@
 
 /*
 
-=item C<static expression *
-new_expr(expr_type type)>
+=item C<static expression * new_expr(lexer_state * const lexer, expr_type type)>
 
 Create a new C<expression> node of the specified C<type>. The new
 expression node is returned.
@@ -1649,7 +1793,8 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 static expression *
-new_expr(lexer_state * const lexer, expr_type type) {
+new_expr(ARGIN(lexer_state * const lexer), expr_type type)
+{
     expression *expr = pir_mem_allocate_zeroed_typed(lexer, expression);
     expr->type       = type;
     expr->next       = expr;
@@ -1658,8 +1803,7 @@
 
 /*
 
-=item C<target *
-new_reg(lexer_state * const lexer, int type, int regno)>
+=item C<target * new_reg(lexer_state * const lexer, pir_type type, int regno)>
 
 Create a C<target> node from a register. A new C<pir_reg> object is
 created of type C<type> and PIR register number C<regno>. The target
@@ -1671,7 +1815,8 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 target *
-new_reg(lexer_state * const lexer, pir_type type, int regno) {
+new_reg(ARGIN(lexer_state * const lexer), pir_type type, int regno)
+{
     target  *t = new_target(lexer);
     pir_reg *reg;
 
@@ -1687,8 +1832,8 @@
 
 /*
 
-=item C<expression *
-expr_from_target(target *t)>
+=item C<expression * expr_from_target(lexer_state * const lexer, target * const
+t)>
 
 Wrap a target in an expression node; the expression node is
 returned.
@@ -1699,7 +1844,9 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 expression *
-expr_from_target(lexer_state * const lexer, target * const t) {
+expr_from_target(ARGIN(lexer_state * const lexer),
+        ARGIN(target * const t))
+{
     expression *e = new_expr(lexer, EXPR_TARGET);
     e->expr.t     = t;
     return e;
@@ -1707,8 +1854,8 @@
 
 /*
 
-=item C<expression *
-expr_from_const(constant * const c)>
+=item C<expression * expr_from_const(lexer_state * const lexer, constant * const
+c)>
 
 Convert the constant C<c> to an expression node and returns the newly
 created expression node.
@@ -1719,7 +1866,9 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 expression *
-expr_from_const(lexer_state * const lexer, constant * const c) {
+expr_from_const(ARGIN(lexer_state * const lexer),
+        ARGIN(constant * const c))
+{
     expression *e = new_expr(lexer, EXPR_CONSTANT);
     e->expr.c     = c;
     return e;
@@ -1727,8 +1876,7 @@
 
 /*
 
-=item C<expression *
-expr_from_int(lexer_state * const lexer, int ival)>
+=item C<expression * expr_from_int(lexer_state * const lexer, int ival)>
 
 Create an expression node from an integer constant. This is a wrapper
 function, which uses C<expr_from_const()> and C<new_const()>.
@@ -1741,14 +1889,14 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 expression *
-expr_from_int(lexer_state * const lexer, int ival) {
+expr_from_int(ARGIN(lexer_state * const lexer), int ival)
+{
     return expr_from_const(lexer, new_const(lexer, INT_VAL, ival));
 }
 
 /*
 
-=item C<expression *
-expr_from_num(lexer_state * const lexer, double nval)>
+=item C<expression * expr_from_num(lexer_state * const lexer, double nval)>
 
 Same as C<expr_from_int()>, except it takes a C<double> parameter,
 not an C<int>.
@@ -1759,14 +1907,15 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 expression *
-expr_from_num(lexer_state * const lexer, double nval) {
+expr_from_num(ARGIN(lexer_state * const lexer), double nval)
+{
     return expr_from_const(lexer, new_const(lexer, NUM_VAL, nval));
 }
 
 /*
 
-=item C<expression *
-expr_from_string(lexer_state * const lexer, char const * const sval)>
+=item C<expression * expr_from_string(lexer_state * const lexer, char const *
+const sval)>
 
 Same as C<expr_from_int()>, except it takes a C<string> parameter.
 
@@ -1776,15 +1925,17 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 expression *
-expr_from_string(lexer_state * const lexer, char const * const sval) {
+expr_from_string(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const sval))
+{
     return expr_from_const(lexer, new_const(lexer, STRING_VAL, sval));
 }
 
 
 /*
 
-=item C<expression *
-expr_from_ident(char * const id)>
+=item C<expression * expr_from_ident(lexer_state * const lexer, char const *
+const id)>
 
 Convert a ident to an expression node and returns it.
 
@@ -1794,7 +1945,9 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 expression *
-expr_from_ident(lexer_state * const lexer, char const * const id) {
+expr_from_ident(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const id))
+{
     expression *e = new_expr(lexer, EXPR_IDENT);
     e->expr.id    = id;
     return e;
@@ -1802,8 +1955,8 @@
 
 /*
 
-=item C<void
-set_invocation_args(lexer_state * const lexer, invocation * const inv, argument * const args)>
+=item C<invocation * set_invocation_args(lexer_state * const lexer, invocation *
+const inv, argument * const args)>
 
 Set the args of an invocation onto the current invocation object.
 The number of arguments in the list is counted, and stored in the
@@ -1812,8 +1965,13 @@
 =cut
 
 */
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
 invocation *
-set_invocation_args(lexer_state * const lexer, invocation * const inv, argument * const args) {
+set_invocation_args(ARGIN(lexer_state * const lexer),
+        ARGIN(invocation * const inv),
+        ARGIN(argument * const args))
+{
     argument *arg_iter;
     unsigned  arg_count = 0;
 
@@ -1852,8 +2010,8 @@
 
 /*
 
-=item C<void
-set_invocation_results(lexer_state * const lexer, invocation * const inv, target * const results)>
+=item C<invocation * set_invocation_results(lexer_state * const lexer,
+invocation * const inv, target * const results)>
 
 Set the invocation results on the invocation object C<inv>.
 The number of results is stored in the invocation object.
@@ -1862,8 +2020,13 @@
 =cut
 
 */
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
 invocation *
-set_invocation_results(lexer_state * const lexer, invocation * const inv, target * const results) {
+set_invocation_results(ARGIN(lexer_state * const lexer),
+        ARGIN(invocation * const inv),
+        ARGIN(target * const results))
+{
     target  *result_iter;
     unsigned result_count = 0;
 
@@ -1897,24 +2060,26 @@
 
 /*
 
-=item C<void
-set_invocation_type(invocation * const inv, invoke_type type)>
+=item C<invocation * set_invocation_type(invocation * const inv, invoke_type
+type)>
 
 Set the invocation type on the invocation object C<inv>.
 
 =cut
 
 */
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
 invocation *
-set_invocation_type(invocation * const inv, invoke_type type) {
+set_invocation_type(ARGIN(invocation * const inv), invoke_type type)
+{
     inv->type = type;
     return inv;
 }
 
 /*
 
-=item C<invocation *
-invoke(lexer_state * const lexer, invoke_type type, ...)>
+=item C<invocation * invoke(lexer_state * const lexer, invoke_type type, ...)>
 
 Create a new C<invocation> object of type C<type>. This can be one
 of the C<invoke_types> enumeration. Based on the type, this function
@@ -1929,7 +2094,8 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 invocation *
-invoke(lexer_state * const lexer, invoke_type type, ...) {
+invoke(ARGIN(lexer_state * const lexer), invoke_type type, ...)
+{
     va_list arg_ptr;
 
     invocation *inv = new_invocation(lexer);
@@ -1969,8 +2135,8 @@
 
 /*
 
-=item C<void
-set_lex_flag(lexer_state * const lexer, target * const t, char const * const name)>
+=item C<void set_lex_flag(lexer_state * const lexer, target * const t, char
+const * const name)>
 
 Store target C<t> as a lexical in the sub_info struct. The lexical node
 stores a pointer to the target's syminfo structure, so it can access
@@ -1980,7 +2146,10 @@
 
 */
 void
-set_lex_flag(lexer_state * const lexer, target * const t, char const * const name) {
+set_lex_flag(ARGIN(lexer_state * const lexer),
+        ARGIN(target * const t),
+        ARGIN(char const * const name))
+{
     lexical *lex = CURRENT_SUB(lexer)->info.lexicals;
 
     /* check whether there is already a target marked as .lex with the specified name */
@@ -2008,8 +2177,7 @@
 
 /*
 
-=item C<void
-set_hll(lexer_state * const lexer, char * const hll)>
+=item C<void set_hll(lexer_state * const lexer, char const * const hll)>
 
 Set the current HLL as specified in C<hll>.
 
@@ -2019,7 +2187,9 @@
 
 */
 void
-set_hll(lexer_state * const lexer, char const * const hll) {
+set_hll(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const hll))
+{
     STRING * const hll_name             = Parrot_str_new(lexer->interp, hll, strlen(hll));
     CONTEXT(lexer->interp)->current_HLL = Parrot_register_HLL(lexer->interp, hll_name);
 }
@@ -2028,8 +2198,8 @@
 
 /*
 
-=item C<void
-unshift_operand(lexer_state *lexer, expression *operand)>
+=item C<void unshift_operand(lexer_state * const lexer, expression * const
+operand)>
 
 Add the specified expression as the first operand of the current
 instruction.
@@ -2038,7 +2208,9 @@
 
 */
 void
-unshift_operand(lexer_state * const lexer, expression * const operand) {
+unshift_operand(ARGIN(lexer_state * const lexer),
+        ARGIN(expression * const operand))
+{
     expression *last = CURRENT_INSTRUCTION(lexer)->operands;
     if (last) {
         /* get the head of the list */
@@ -2054,8 +2226,8 @@
 
 /*
 
-=item C<void
-push_operand(lexer_state * const lexer, expression * const operand)>
+=item C<void push_operand(lexer_state * const lexer, expression * const
+operand)>
 
 Add an operand at the end of the list of operands of the current instruction.
 
@@ -2063,7 +2235,9 @@
 
 */
 void
-push_operand(lexer_state * const lexer, NOTNULL(expression * const operand)) {
+push_operand(ARGIN(lexer_state * const lexer),
+        ARGIN(expression * const operand))
+{
     PARROT_ASSERT(CURRENT_INSTRUCTION(lexer));
 
     if (CURRENT_INSTRUCTION(lexer)->operands) {
@@ -2075,8 +2249,7 @@
 
 /*
 
-=item C<void
-remove_all_operands(lexer_state * const lexer)>
+=item C<void remove_all_operands(lexer_state * const lexer)>
 
 Remove all operands of the current instruction. This is done
 by simply setting the pointer to the operands to NULL; all
@@ -2087,15 +2260,15 @@
 
 */
 void
-remove_all_operands(NOTNULL(lexer_state * const lexer)) {
+remove_all_operands(ARGIN(lexer_state * const lexer))
+{
     CURRENT_INSTRUCTION(lexer)->operands = NULL;
 }
 
 
 /*
 
-=item C<expression *
-expr_from_key(lexer_state * const lexer, key * const k)>
+=item C<expression * expr_from_key(lexer_state * const lexer, key * const k)>
 
 Wraps the key C<k> in an C<expression> node and returns that.
 The returned expression node has type EXPR_KEY.
@@ -2103,8 +2276,11 @@
 =cut
 
 */
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
 expression *
-expr_from_key(NOTNULL(lexer_state * const lexer), NOTNULL(key * const k)) {
+expr_from_key(ARGIN(lexer_state * const lexer), ARGIN(key * const k))
+{
     expression *e = new_expr(lexer, EXPR_KEY);
     e->expr.k     = k;
     return e;
@@ -2113,7 +2289,8 @@
 
 /*
 
-=item C<static key_entry * new_key_entry>
+=item C<static key_entry * new_key_entry(lexer_state * const lexer, expression *
+const expr)>
 
 Constructor for a key_entry node. Memory is allocated for the node,
 and the C<expr> field is initialized to the passed in C<expr> value.
@@ -2122,8 +2299,11 @@
 =cut
 
 */
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
 static key_entry *
-new_key_entry(lexer_state * const lexer, expression * const expr) {
+new_key_entry(ARGIN(lexer_state * const lexer), ARGIN(expression * const expr))
+{
     key_entry *entry = pir_mem_allocate_zeroed_typed(lexer, key_entry);
     entry->expr      = expr;
     entry->next      = NULL;
@@ -2131,8 +2311,7 @@
 }
 /*
 
-=item C<key *
-new_key(lexer_state * const lexer, expression * const expr)>
+=item C<key * new_key(lexer_state * const lexer, expression * const expr)>
 
 Wraps the expression C<expr> in a key node and returns that.
 
@@ -2142,7 +2321,8 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 key *
-new_key(NOTNULL(lexer_state * const lexer), NOTNULL(expression * const expr)) {
+new_key(ARGIN(lexer_state * const lexer), ARGIN(expression * const expr))
+{
     key *k       = pir_mem_allocate_zeroed_typed(lexer, key);
     k->head      = new_key_entry(lexer, expr);
     k->keylength = 1;
@@ -2152,8 +2332,8 @@
 
 /*
 
-=item C<key *
-add_key(lexer_state * const lexer, key * const keylist, expression * const exprkey)>
+=item C<key * add_key(lexer_state * const lexer, key * const keylist, expression
+* const exprkey)>
 
 Adds a new, nested key (in C<exprkey>) to the current key,
 pointed to by C<keylist>. C<keylist> is returned.
@@ -2164,8 +2344,8 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 key *
-add_key(NOTNULL(lexer_state * const lexer), NOTNULL(key * const keylist),
-        NOTNULL(expression * const exprkey))
+add_key(ARGIN(lexer_state * const lexer), ARGIN(key * const keylist),
+        ARGIN(expression * const exprkey))
 {
     key_entry *newkey = new_key_entry(lexer, exprkey);
     key_entry *iter   = keylist->head;
@@ -2186,8 +2366,7 @@
 
 /*
 
-=item C<symbol *
-add_local(symbol * const list, symbol * const local)>
+=item C<symbol * add_local(symbol * const list, symbol * const local)>
 
 Add local C<local> to the list pointed to by C<list>. The new object
 is inserted at the front of the list. C<list> is returned
@@ -2198,7 +2377,8 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 symbol *
-add_local(symbol * const list, symbol * const local) {
+add_local(ARGIN(symbol * const list), ARGIN(symbol * const local))
+{
     local->next = list->next;
     list->next  = local;
     return list;
@@ -2207,8 +2387,8 @@
 
 /*
 
-=item C<symbol *
-new_local(char * const name, int has_unique_reg)>
+=item C<symbol * new_local(lexer_state * const lexer, char const * const name,
+int has_unique_reg)>
 
 Create a new symbol node to represent the local C<name>.
 If C<has_unique_reg> is true, the C<:unique_reg> flag is set.
@@ -2220,7 +2400,9 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 symbol *
-new_local(lexer_state * const lexer, char const * const name, int has_unique_reg){
+new_local(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const name), int has_unique_reg)
+{
     symbol *s = new_symbol(lexer, name, UNKNOWN_TYPE);
 
     if (has_unique_reg)
@@ -2232,8 +2414,7 @@
 
 /*
 
-=item C<int
-is_parrot_op(lexer_state * const lexer, char * const name)>
+=item C<int is_parrot_op(lexer_state * const lexer, char const * const name)>
 
 Check whether C<name> is a parrot opcode. C<name> can be either the short
 or fullname of the opcode; for instance, C<print> is the short name, which
@@ -2244,7 +2425,9 @@
 
 */
 int
-is_parrot_op(lexer_state * const lexer, char const * const name) {
+is_parrot_op(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const name))
+{
     int opcode = lexer->interp->op_lib->op_code(name, 0); /* check short name, e.g. "set" */
 
     /* do *NOT* check for the "long" name variant, such as "set_i_ic";
@@ -2258,9 +2441,8 @@
 
 /*
 
-=item C<void
-new_sub_instr(lexer_state * const lexer, int opcode, char const * const opname,
-              unsigned num_var_args)>
+=item C<void new_sub_instr(lexer_state * const lexer, int opcode, char const *
+const opname, unsigned num_var_args)>
 
 Create a new instruction node, and initialize the opcode and opinfo on that
 node. This function can be used to create an instruction of which the signature
@@ -2275,9 +2457,8 @@
 
 */
 void
-new_sub_instr(lexer_state * const lexer, int opcode, char const * const opname,
-              unsigned num_var_args)
-
+new_sub_instr(ARGIN(lexer_state * const lexer), int opcode,
+        ARGIN(char const * const opname), unsigned num_var_args)
 {
     new_statement(lexer, opname);
     CURRENT_INSTRUCTION(lexer)->opinfo = &lexer->interp->op_info_table[opcode];
@@ -2298,8 +2479,8 @@
 
 /*
 
-=item C<void
-update_op(lexer_state * const lexer, instruction * const instr, int newop)>
+=item C<void update_op(lexer_state * const lexer, instruction * const instr, int
+newop)>
 
 Update the instruction C<instr>; it is replaced by the op with opcode C<newop>.
 The C<opinfo>, C<opname> and C<opcode> fields of C<instr> are updated.
@@ -2308,7 +2489,9 @@
 
 */
 void
-update_op(NOTNULL(lexer_state * const lexer), NOTNULL(instruction * const instr), int newop) {
+update_op(ARGIN(lexer_state * const lexer), ARGIN(instruction * const instr),
+        int newop)
+{
     /* Deduct number of ints needed for the old instruction, if there is one.
      * This is necessary during strength reduction and other optimizations, once
      * the opinfo is retrieved, we also update the codesize field in the lexer.
@@ -2333,8 +2516,8 @@
 
 /*
 
-=item C<static label *
-new_label(lexer_state * const lexer, char const * const labelid, int offset)>
+=item C<static label * new_label(lexer_state * const lexer, char const * const
+labelid, int offset)>
 
 Constructor for a label struct node. A new C<label> object is created,
 initialized with the label id specified in C<labelid>, and the bytecode
@@ -2344,8 +2527,12 @@
 
 */
 PARROT_MALLOC
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
 static label *
-new_label(lexer_state * const lexer, char const * const labelid, int offset) {
+new_label(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const labelid), int offset)
+{
     label *l  = pir_mem_allocate_zeroed_typed(lexer, label);
     l->name   = labelid;
     l->offset = offset;
@@ -2354,8 +2541,7 @@
 
 /*
 
-=item C<static void
-fixup_local_labels(subroutine * const sub)>
+=item C<static void fixup_local_labels(lexer_state * const lexer)>
 
 Fix up all local labels in the subroutine C<sub>. Labels are stored as
 identifiers in an expression node (the C<id> field in the C<expr> union);
@@ -2367,7 +2553,8 @@
 
 */
 static void
-fixup_local_labels(lexer_state * const lexer) {
+fixup_local_labels(ARGIN(lexer_state * const lexer))
+{
     instruction *iter = CURRENT_SUB(lexer)->statements;
 
     /* if there's no instruction in the current sub, then do nothing. */
@@ -2425,8 +2612,7 @@
 
 /*
 
-=item C<void
-fixup_global_labels(lexer_state * const lexer)>
+=item C<void fixup_global_labels(lexer_state * const lexer)>
 
 Fix references to global labels. The lexer keeps a list of instructions that
 can be patched. These instructions currently look up the global label during
@@ -2439,7 +2625,8 @@
 
 */
 void
-fixup_global_labels(lexer_state * const lexer) {
+fixup_global_labels(ARGIN(lexer_state * const lexer))
+{
     global_fixup *iter = lexer->global_refs;
 
     while (iter) {
@@ -2479,8 +2666,7 @@
 
 /*
 
-=item C<void
-close_sub(lexer_state * const lexer)>
+=item C<void close_sub(lexer_state * const lexer)>
 
 Finalize the subroutine. Generate the final instructions in the current
 subroutine, if needed. Then, all local labels are fixed up; i.e., all
@@ -2492,7 +2678,8 @@
 
 */
 void
-close_sub(lexer_state * const lexer) {
+close_sub(ARGIN(lexer_state * const lexer))
+{
     int           need_epilogue = 1;
     int           sub_const_table_index;
     global_label *glob;
@@ -2551,8 +2738,8 @@
 
 /*
 
-=item C<void
-update_sub_register_usage(lexer_state * const lexer, unsigned reg_usage[NUM_PARROT_TYPES])>
+=item C<void update_sub_register_usage(lexer_state * const lexer, unsigned
+reg_usage[NUM_PARROT_TYPES])>
 
 Update register usage for the current subroutine with the register usage
 information in C<reg_usage>.
@@ -2561,7 +2748,9 @@
 
 */
 void
-update_sub_register_usage(lexer_state * const lexer, unsigned reg_usage[NUM_PARROT_TYPES]) {
+update_sub_register_usage(ARGIN(lexer_state * const lexer),
+        unsigned reg_usage[NUM_PARROT_TYPES])
+{
     int i;
     for (i = 0; i < NUM_PARROT_TYPES; ++i)
         CURRENT_SUB(lexer)->info.regs_used[i] = reg_usage[i];
@@ -2570,8 +2759,8 @@
 
 /*
 
-=item C<void
-annotate(lexer_state * const lexer, char const * const key, constant * const value)>
+=item C<void annotate(lexer_state * const lexer, char const * const key,
+constant * const value)>
 
 Add a new annotation with key C<key> and value C<value>.
 
@@ -2579,7 +2768,10 @@
 
 */
 void
-annotate(lexer_state * const lexer, char const * const key, constant * const value) {
+annotate(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const key),
+        ARGIN(constant * const value))
+{
     annotation *ann     = (annotation *)pir_mem_allocate(lexer, sizeof (annotation));
     ann->key            = key;
     ann->value          = value;

Modified: branches/sys_mem_reduce/compilers/pirc/src/pircompunit.h
==============================================================================
--- branches/sys_mem_reduce/compilers/pirc/src/pircompunit.h	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/pirc/src/pircompunit.h	Sat Feb 20 22:12:51 2010	(r44252)
@@ -394,135 +394,665 @@
 /* forward declaration */
 struct lexer_state;
 
-/* set the namespace that was just parsed */
-void set_namespace(struct lexer_state * const lexer, key * const ns);
+/* HEADERIZER BEGIN: compilers/pirc/src/pircompunit.c */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-/* various set functions to set the value of a subroutine flag */
-void set_sub_outer(struct lexer_state * const lexer, char const * const outersub);
-void set_sub_vtable(struct lexer_state * const lexer, char const * vtablename);
-void set_sub_subid(struct lexer_state * const lexer, char const * const subid);
-void set_sub_instanceof(struct lexer_state * const lexer, char const * const classname);
-void set_sub_nsentry(struct lexer_state * const lexer, char const * const nsentry);
-void set_sub_methodname(struct lexer_state * const lexer, char const * const methodname);
-
-void set_sub_multi_types(struct lexer_state * const lexer, expression * const multitype);
-
-/* install a new subroutine node */
-void new_subr(struct lexer_state * const lexer, STRING *subname);
-
-void set_sub_name(struct lexer_state * const lexer, char const * const subname);
-
-/* functions for setting argument flags or argument alias */
-argument *set_arg_flag(argument * const arg, arg_flag flag);
-argument *set_arg_alias(struct lexer_state * const lexer, char const * const alias);
-
-/* constructors for constant nodes */
-constdecl *new_named_const(struct lexer_state * const lexer, value_type type,
-                          char const * const name, ...);
-
-constant *new_const(struct lexer_state * const lexer, value_type type, ...);
-
-constdecl *new_pmc_const(struct lexer_state * const lexer, char const * const type,
-                        char const * const name, constant * const value);
-
-/* conversion functions, each wrapping its argument in an expression node */
-expression *expr_from_const(struct lexer_state * const lexer, constant * const c);
-expression *expr_from_target(struct lexer_state * const lexer, target * const t);
-expression *expr_from_ident(struct lexer_state * const lexer, char const * const name);
-expression *expr_from_key(struct lexer_state * const lexer, key * const k);
-expression *expr_from_string(struct lexer_state * const lexer, char const * const sval);
-expression *expr_from_int(struct lexer_state * const lexer, int ival);
-expression *expr_from_num(struct lexer_state * const lexer, double nval);
-
-/* functions for argument node creation and storing */
-argument *new_argument(struct lexer_state * const lexer, expression * const expr);
-argument *add_arg(argument *arg1, argument * const arg2);
-argument *unshift_arg(invocation * const inv, argument * const newarg);
-
-target *add_param(struct lexer_state * const lexer, pir_type type, char const * const name);
-target *set_param_alias(struct lexer_state * const lexer, char const * const alias);
-target *set_param_flag(struct lexer_state * const lexer, target * const t, target_flag flag);
-
-target *set_curtarget(struct lexer_state * const lexer, target * const t);
-argument *set_curarg(struct lexer_state * const lexer, argument * const arg);
-
-/* target constructors */
-target *add_target(struct lexer_state * const lexer, target *t1, target * const t);
-target *new_reg(struct lexer_state * const lexer, pir_type type, int regno);
-target *new_target(struct lexer_state * const lexer);
-
-/* set a key on a target node */
-void set_target_key(target * const t, key * const k);
-
-/* functions for creating an invocation node and setting various fields */
-invocation *invoke(struct lexer_state * const lexer, invoke_type, ...);
-invocation *set_invocation_type(invocation * const inv, invoke_type type);
-invocation *set_invocation_args(struct lexer_state * const lexer, invocation * const inv,
-                                argument * const args);
-
-invocation *set_invocation_results(struct lexer_state * const lexer, invocation * const inv,
-                                   target * const results);
-
-/* conversion functions that wrap their arguments into a target node */
-target *target_from_symbol(struct lexer_state * const lexer, struct symbol * const sym);
-
-/* management functions for key nodes */
-key *new_key(struct lexer_state * const lexer, expression * const expr);
-key *add_key(struct lexer_state * const lexer, key * const keylist, expression * const newkey);
-
-void load_library(struct lexer_state * const lexer, char const * const library);
-void set_hll(struct lexer_state * const lexer, char const * const hll);
-
-void set_sub_flag(struct lexer_state * const lexer, sub_flag flag);
-
-/* constructor and functions for setting instruction fields */
-void set_label(struct lexer_state * const lexer, char const * const label);
-void set_instr(struct lexer_state * const lexer, char const * const opname);
-void set_instrf(struct lexer_state * const lxr, char const * const op, char const * const fmt, ...);
-void unshift_operand(struct lexer_state * const lexer, expression * const operand);
-void push_operand(struct lexer_state * const lexer, expression * const operand);
-void add_operands(struct lexer_state * const lexer, char const * const format, ...);
-
-void get_operands(struct lexer_state * const lexer, int bitmask, ...);
-expression *get_operand(struct lexer_state * const lexer, short n);
-unsigned get_operand_count(struct lexer_state * const lexer);
-
-void update_instr(struct lexer_state * const lexer, char const * const newop);
-void update_op(struct lexer_state * const lexer, instruction * const instr, int newop);
-
-void remove_operand(struct lexer_state * const lexer, unsigned index);
-void remove_all_operands(struct lexer_state * const lexer);
-
-
-void set_lex_flag(struct lexer_state * const lexer, target * const t, char const * const lexname);
-char const *get_inverse(char const * const instr);
-void invert_instr(struct lexer_state * const lexer);
-
-/* local declaration functions */
-struct symbol *add_local(struct symbol * const list, struct symbol * const local);
-struct symbol *new_local(struct lexer_state * const lexer, char const * const name, int unique);
-
-/* compare two target nodes */
-int targets_equal(target const * const t1, target const * const t2);
-
-/* funtion to reset the register allocator */
-void reset_register_allocator(struct lexer_state * const lexer);
-
-/* to check whether given name is a parrot opcode */
-int is_parrot_op(struct lexer_state * const lexer, char const * const name);
-
-void close_sub(struct lexer_state * const lexer);
-void fixup_global_labels(struct lexer_state * const lexer);
-void set_op_labelflag(struct lexer_state * const lexer, int flag);
-void convert_inv_to_instr(struct lexer_state * const lexer, invocation * const inv);
-
-void update_sub_register_usage(struct lexer_state * const lexer,
-                               unsigned reg_usage[NUM_PARROT_TYPES]);
-
-void new_sub_instr(struct lexer_state * const lexer, int opcode, char const * const opname,
-              unsigned num_var_args);
-
-void annotate(struct lexer_state * const lexer, char const * const key, constant * const value);
+PARROT_IGNORABLE_RESULT
+PARROT_CANNOT_RETURN_NULL
+argument * add_arg(ARGMOD(argument *last), ARGIN(argument * const newarg))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*last);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+key * add_key(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(key * const keylist),
+    ARGIN(expression * const exprkey))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+symbol * add_local(ARGIN(symbol * const list), ARGIN(symbol * const local))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void add_operands(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const format),
+    ...)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_IGNORABLE_RESULT
+PARROT_CANNOT_RETURN_NULL
+target * add_param(
+    ARGIN(lexer_state * const lexer),
+    pir_type type,
+    ARGIN(char const * const name))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(3);
+
+PARROT_IGNORABLE_RESULT
+PARROT_CANNOT_RETURN_NULL
+target * add_target(
+    ARGIN(lexer_state * const lexer),
+    ARGMOD(target *last),
+    ARGIN(target * const t))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
+        FUNC_MODIFIES(*last);
+
+void annotate(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const key),
+    ARGIN(constant * const value))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
+void close_sub(ARGIN(lexer_state * const lexer))
+        __attribute__nonnull__(1);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+expression * expr_from_const(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(constant * const c))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+expression * expr_from_ident(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const id))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+expression * expr_from_int(ARGIN(lexer_state * const lexer), int ival)
+        __attribute__nonnull__(1);
+
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+expression * expr_from_key(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(key * const k))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+expression * expr_from_num(ARGIN(lexer_state * const lexer), double nval)
+        __attribute__nonnull__(1);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+expression * expr_from_string(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const sval))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+expression * expr_from_target(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(target * const t))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void fixup_global_labels(ARGIN(lexer_state * const lexer))
+        __attribute__nonnull__(1);
+
+PARROT_CONST_FUNCTION
+PARROT_CANNOT_RETURN_NULL
+char const * get_inverse(ARGIN(char const * const instr))
+        __attribute__nonnull__(1);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+expression * get_operand(ARGIN(lexer_state * const lexer), short n)
+        __attribute__nonnull__(1);
+
+PARROT_WARN_UNUSED_RESULT
+unsigned get_operand_count(ARGIN(lexer_state * const lexer))
+        __attribute__nonnull__(1);
+
+void get_operands(ARGIN(lexer_state * const lexer), int bitmask, ...)
+        __attribute__nonnull__(1);
+
+void invert_instr(ARGIN(lexer_state * const lexer))
+        __attribute__nonnull__(1);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+invocation * invoke(ARGIN(lexer_state * const lexer), invoke_type type, ...)
+        __attribute__nonnull__(1);
+
+int is_parrot_op(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const name))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void load_library(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const library))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+argument * new_argument(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(expression * const expr))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+constant * new_const(ARGIN(lexer_state * const lexer), value_type type, ...)
+        __attribute__nonnull__(1);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+key * new_key(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(expression * const expr))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+symbol * new_local(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const name),
+    int has_unique_reg)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+constdecl * new_named_const(
+    ARGIN(lexer_state * const lexer),
+    value_type type,
+    ARGIN(char const * const name),
+    ...)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(3);
+
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+constdecl * new_pmc_const(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const type),
+    ARGIN(char const * const name),
+    ARGIN(constant * const value))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
+        __attribute__nonnull__(4);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+target * new_reg(ARGIN(lexer_state * const lexer), pir_type type, int regno)
+        __attribute__nonnull__(1);
+
+void new_sub_instr(
+    ARGIN(lexer_state * const lexer),
+    int opcode,
+    ARGIN(char const * const opname),
+    unsigned num_var_args)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(3);
+
+void new_subr(ARGIN(lexer_state * const lexer), ARGIN(STRING *subname))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+target * new_target(ARGIN(lexer_state * const lexer))
+        __attribute__nonnull__(1);
+
+void push_operand(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(expression * const operand))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void remove_all_operands(ARGIN(lexer_state * const lexer))
+        __attribute__nonnull__(1);
+
+void reset_register_allocator(ARGIN(lexer_state * const lexer))
+        __attribute__nonnull__(1);
+
+PARROT_IGNORABLE_RESULT
+PARROT_CANNOT_RETURN_NULL
+argument * set_arg_alias(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const alias))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_IGNORABLE_RESULT
+PARROT_CANNOT_RETURN_NULL
+argument * set_arg_flag(ARGIN(argument * const arg), arg_flag flag)
+        __attribute__nonnull__(1);
+
+PARROT_IGNORABLE_RESULT
+PARROT_CANNOT_RETURN_NULL
+argument * set_curarg(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(argument * const arg))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_IGNORABLE_RESULT
+PARROT_CANNOT_RETURN_NULL
+target * set_curtarget(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(target * const t))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void set_hll(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const hll))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void set_instr(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const opname))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void set_instrf(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const opname),
+    ARGIN(char const * const format),
+    ...)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+invocation * set_invocation_args(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(invocation * const inv),
+    ARGIN(argument * const args))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+invocation * set_invocation_results(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(invocation * const inv),
+    ARGIN(target * const results))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+invocation * set_invocation_type(
+    ARGIN(invocation * const inv),
+    invoke_type type)
+        __attribute__nonnull__(1);
+
+void set_label(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const labelname))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void set_lex_flag(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(target * const t),
+    ARGIN(char const * const name))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
+void set_namespace(ARGIN(lexer_state * const lexer), ARGIN(key * const ns))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void set_op_labelflag(ARGIN(lexer_state * const lexer), int flag)
+        __attribute__nonnull__(1);
+
+PARROT_IGNORABLE_RESULT
+PARROT_CANNOT_RETURN_NULL
+target * set_param_alias(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const alias))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_IGNORABLE_RESULT
+PARROT_CANNOT_RETURN_NULL
+target * set_param_flag(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(target * const param),
+    target_flag flag)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void set_sub_flag(ARGIN(lexer_state * const lexer), sub_flag flag)
+        __attribute__nonnull__(1);
+
+void set_sub_instanceof(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const classname))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void set_sub_methodname(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const methodname))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void set_sub_multi_types(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(expression * const multitype))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void set_sub_name(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const subname))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void set_sub_nsentry(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const nsentry))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void set_sub_outer(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const outersub))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void set_sub_subid(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const subid))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void set_sub_vtable(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * vtablename))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void set_target_key(ARGIN(target * const t), ARGIN(key * const k))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+target * target_from_symbol(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(symbol * const sym))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_PURE_FUNCTION
+PARROT_WARN_UNUSED_RESULT
+int targets_equal(
+    ARGIN(target const * const left),
+    ARGIN(target const * const right))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_IGNORABLE_RESULT
+PARROT_CANNOT_RETURN_NULL
+argument * unshift_arg(
+    ARGIN(invocation * const inv),
+    ARGIN(argument * const newarg))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void unshift_operand(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(expression * const operand))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void update_instr(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const newop))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void update_op(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(instruction * const instr),
+    int newop)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void update_sub_register_usage(
+    ARGIN(lexer_state * const lexer),
+    unsigned reg_usage[NUM_PARROT_TYPES])
+        __attribute__nonnull__(1);
+
+#define ASSERT_ARGS_add_arg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(last) \
+    , PARROT_ASSERT_ARG(newarg))
+#define ASSERT_ARGS_add_key __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(keylist) \
+    , PARROT_ASSERT_ARG(exprkey))
+#define ASSERT_ARGS_add_local __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(list) \
+    , PARROT_ASSERT_ARG(local))
+#define ASSERT_ARGS_add_operands __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(format))
+#define ASSERT_ARGS_add_param __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_add_target __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(last) \
+    , PARROT_ASSERT_ARG(t))
+#define ASSERT_ARGS_annotate __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(key) \
+    , PARROT_ASSERT_ARG(value))
+#define ASSERT_ARGS_close_sub __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_expr_from_const __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(c))
+#define ASSERT_ARGS_expr_from_ident __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(id))
+#define ASSERT_ARGS_expr_from_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_expr_from_key __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(k))
+#define ASSERT_ARGS_expr_from_num __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_expr_from_string __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(sval))
+#define ASSERT_ARGS_expr_from_target __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(t))
+#define ASSERT_ARGS_fixup_global_labels __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_get_inverse __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(instr))
+#define ASSERT_ARGS_get_operand __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_get_operand_count __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_get_operands __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_invert_instr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_invoke __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_is_parrot_op __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_load_library __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(library))
+#define ASSERT_ARGS_new_argument __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(expr))
+#define ASSERT_ARGS_new_const __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_new_key __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(expr))
+#define ASSERT_ARGS_new_local __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_new_named_const __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_new_pmc_const __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(type) \
+    , PARROT_ASSERT_ARG(name) \
+    , PARROT_ASSERT_ARG(value))
+#define ASSERT_ARGS_new_reg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_new_sub_instr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(opname))
+#define ASSERT_ARGS_new_subr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(subname))
+#define ASSERT_ARGS_new_target __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_push_operand __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(operand))
+#define ASSERT_ARGS_remove_all_operands __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_reset_register_allocator __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_set_arg_alias __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(alias))
+#define ASSERT_ARGS_set_arg_flag __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(arg))
+#define ASSERT_ARGS_set_curarg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(arg))
+#define ASSERT_ARGS_set_curtarget __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(t))
+#define ASSERT_ARGS_set_hll __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(hll))
+#define ASSERT_ARGS_set_instr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(opname))
+#define ASSERT_ARGS_set_instrf __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(opname) \
+    , PARROT_ASSERT_ARG(format))
+#define ASSERT_ARGS_set_invocation_args __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(inv) \
+    , PARROT_ASSERT_ARG(args))
+#define ASSERT_ARGS_set_invocation_results __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(inv) \
+    , PARROT_ASSERT_ARG(results))
+#define ASSERT_ARGS_set_invocation_type __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(inv))
+#define ASSERT_ARGS_set_label __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(labelname))
+#define ASSERT_ARGS_set_lex_flag __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(t) \
+    , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_set_namespace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(ns))
+#define ASSERT_ARGS_set_op_labelflag __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_set_param_alias __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(alias))
+#define ASSERT_ARGS_set_param_flag __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(param))
+#define ASSERT_ARGS_set_sub_flag __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_set_sub_instanceof __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(classname))
+#define ASSERT_ARGS_set_sub_methodname __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(methodname))
+#define ASSERT_ARGS_set_sub_multi_types __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(multitype))
+#define ASSERT_ARGS_set_sub_name __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(subname))
+#define ASSERT_ARGS_set_sub_nsentry __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(nsentry))
+#define ASSERT_ARGS_set_sub_outer __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(outersub))
+#define ASSERT_ARGS_set_sub_subid __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(subid))
+#define ASSERT_ARGS_set_sub_vtable __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(vtablename))
+#define ASSERT_ARGS_set_target_key __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(t) \
+    , PARROT_ASSERT_ARG(k))
+#define ASSERT_ARGS_target_from_symbol __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(sym))
+#define ASSERT_ARGS_targets_equal __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(left) \
+    , PARROT_ASSERT_ARG(right))
+#define ASSERT_ARGS_unshift_arg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(inv) \
+    , PARROT_ASSERT_ARG(newarg))
+#define ASSERT_ARGS_unshift_operand __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(operand))
+#define ASSERT_ARGS_update_instr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(newop))
+#define ASSERT_ARGS_update_op __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(instr))
+#define ASSERT_ARGS_update_sub_register_usage __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: compilers/pirc/src/pircompunit.c */
 
 #endif /* PARROT_PIR_PIRCOMPUNIT_H_GUARD */
 

Modified: branches/sys_mem_reduce/compilers/pirc/src/piremit.c
==============================================================================
--- branches/sys_mem_reduce/compilers/pirc/src/piremit.c	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/pirc/src/piremit.c	Sat Feb 20 22:12:51 2010	(r44252)
@@ -14,6 +14,109 @@
 
 #include "parrot/oplib/ops.h"
 
+/* HEADERIZER HFILE: compilers/pirc/src/piremit.h */
+
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+static void emit_pbc_annotations(ARGIN(lexer_state * const lexer))
+        __attribute__nonnull__(1);
+
+static void emit_pbc_const_arg(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(constant * const c))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static void emit_pbc_expr(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(expression * const operand))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static void emit_pbc_instr(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(instruction * const instr))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static void emit_pbc_label_arg(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(label * const l))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static void emit_pbc_sub(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(subroutine * const sub))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static void emit_pbc_target_arg(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(target * const t))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static void emit_pir_instruction(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(instruction * const instr))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static void emit_pir_statement(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(subroutine * const sub))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static void optimize_instr(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(instruction * const instr))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static void print_sub_flags(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(subroutine * const subiter))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+#define ASSERT_ARGS_emit_pbc_annotations __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_emit_pbc_const_arg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(c))
+#define ASSERT_ARGS_emit_pbc_expr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(operand))
+#define ASSERT_ARGS_emit_pbc_instr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(instr))
+#define ASSERT_ARGS_emit_pbc_label_arg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(l))
+#define ASSERT_ARGS_emit_pbc_sub __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(sub))
+#define ASSERT_ARGS_emit_pbc_target_arg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(t))
+#define ASSERT_ARGS_emit_pir_instruction __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(instr))
+#define ASSERT_ARGS_emit_pir_statement __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(sub))
+#define ASSERT_ARGS_optimize_instr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(instr))
+#define ASSERT_ARGS_print_sub_flags __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(subiter))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: static */
+
 /*
 
 =head1 DESCRIPTION
@@ -44,25 +147,24 @@
  */
 char const pir_register_types[5] = {'I', 'S', 'P', 'N', '?'};
 
-static void emit_pir_statement(lexer_state * const lexer, subroutine * const sub);
-static void emit_pir_instruction(lexer_state * const lexer, instruction * const instr);
-static void emit_pbc_expr(lexer_state * const lexer, expression * const operand);
+static void emit_pir_statement(ARGIN(lexer_state * const lexer), subroutine * const sub);
+static void emit_pir_instruction(ARGIN(lexer_state * const lexer), instruction * const instr);
+static void emit_pbc_expr(ARGIN(lexer_state * const lexer), expression * const operand);
 
-static void print_sub_flags(lexer_state * const lexer, subroutine * const subiter);
+static void print_sub_flags(ARGIN(lexer_state * const lexer), subroutine * const subiter);
 
 /* prototype declaration */
-void print_expr(lexer_state * const lexer, expression * const expr);
-void print_key(lexer_state * const lexer, key * const k);
-void print_target(lexer_state * const lexer, target * const t);
-void print_constant(lexer_state * const lexer, constant * const c);
-void print_expressions(lexer_state * const lexer, expression * const expr);
-void print_instruction(lexer_state * const lexer, instruction * const ins);
-void print_statement(lexer_state * const lexer, subroutine * const sub);
+void print_expr(ARGIN(lexer_state * const lexer), expression * const expr);
+void print_key(ARGIN(lexer_state * const lexer), key * const k);
+void print_target(ARGIN(lexer_state * const lexer), target * const t);
+void print_constant(ARGIN(lexer_state * const lexer), constant * const c);
+void print_expressions(ARGIN(lexer_state * const lexer), expression * const expr);
+void print_instruction(ARGIN(lexer_state * const lexer), instruction * const ins);
+void print_statement(ARGIN(lexer_state * const lexer), subroutine * const sub);
 
 /*
 
-=item C<void
-print_key(lexer_state * const lexer, key * const k)>
+=item C<void print_key(lexer_state * const lexer, key * const k)>
 
 Print the key C<k>. The total key is enclosed in square brackets,
 and different key elements are separated by semicolons. Example:
@@ -75,7 +177,9 @@
 
 */
 void
-print_key(lexer_state * const lexer, key * const k) {
+print_key(ARGIN(lexer_state * const lexer), ARGIN(key * const k))
+{
+    ASSERT_ARGS(print_key)
     key_entry *iter;
 
     fprintf(out, "[");
@@ -95,8 +199,7 @@
 
 /*
 
-=item C<void
-print_target(lexer_state * const lexer, target * const t)>
+=item C<void print_target(lexer_state * const lexer, target * const t)>
 
 Print the target C<t>; if C<t> has a key, that key is
 printed as well. Examples:
@@ -107,7 +210,9 @@
 
 */
 void
-print_target(lexer_state * const lexer, target * const t) {
+print_target(ARGIN(lexer_state * const lexer),  ARGIN(target * const t))
+{
+    ASSERT_ARGS(print_target)
     PARROT_ASSERT(t->info);
     fprintf(out, "%c%d", pir_register_types[t->info->type], t->info->color);
 
@@ -118,8 +223,7 @@
 
 /*
 
-=item C<void
-print_constant(lexer_state * const lexer, constant * const c)>
+=item C<void print_constant(lexer_state * const lexer, constant * const c)>
 
 Print the value of constant C<c>. Based on C<c>'s type, the appropriate
 value is printed.
@@ -128,7 +232,10 @@
 
 */
 void
-print_constant(lexer_state * const lexer, constant * const c) {
+print_constant(ARGIN(lexer_state * const lexer),
+        ARGIN(constant * const c))
+{
+    ASSERT_ARGS(print_constant)
     switch (c->type) {
       case INT_VAL:
         fprintf(out, "%d", c->val.ival);
@@ -153,8 +260,7 @@
 
 /*
 
-=item C<void
-print_expr(lexer_state * const lexer, expression * const expr)>
+=item C<void print_expr(lexer_state * const lexer, expression * const expr)>
 
 Print the expression C<expr>. This is a dispatch function, calling
 a specialized function based on C<expr>'s type.
@@ -163,7 +269,10 @@
 
 */
 void
-print_expr(lexer_state * const lexer, expression * const expr) {
+print_expr(ARGIN(lexer_state * const lexer),
+        ARGIN(expression * const expr))
+{
+    ASSERT_ARGS(print_expr)
     switch (expr->type) {
       case EXPR_TARGET:
         print_target(lexer, expr->expr.t);
@@ -187,8 +296,8 @@
 
 /*
 
-=item C<void
-print_expressions(expression * const expr)>
+=item C<void print_expressions(lexer_state * const lexer, expression * const
+expr)>
 
 Print the list of expressions pointed to by C<expr>,
 if C<expr> is not NULL. If C<expr> is NULL, the
@@ -199,7 +308,10 @@
 
 */
 void
-print_expressions(lexer_state * const lexer, expression * const expr) {
+print_expressions(ARGIN(lexer_state * const lexer),
+        ARGIN(expression * const expr))
+{
+    ASSERT_ARGS(print_expressions)
     expression *iter;
 
     if (expr == NULL)
@@ -218,8 +330,8 @@
 
 /*
 
-=item C<void
-print_instruction(lexer_state * const lexer, instruction * const ins)>
+=item C<void print_instruction(lexer_state * const lexer, instruction * const
+ins)>
 
 Print the instruction C<ins>.
 
@@ -227,8 +339,10 @@
 
 */
 void
-print_instruction(lexer_state * const lexer, instruction * const ins) {
-    PARROT_ASSERT(ins != NULL);
+print_instruction(ARGIN(lexer_state * const lexer),
+        ARGIN(instruction * const ins))
+{
+    ASSERT_ARGS(print_instruction)
 
     if (ins->label) {
         if (TEST_FLAG(lexer->flags, LEXER_FLAG_EMIT_PASM))
@@ -254,8 +368,7 @@
 
 /*
 
-=item C<void
-print_statement(lexer_state * const lexer, subroutine * const sub)>
+=item C<void print_statement(lexer_state * const lexer, subroutine * const sub)>
 
 XXX
 
@@ -263,7 +376,10 @@
 
 */
 void
-print_statement(lexer_state * const lexer, subroutine * const sub) {
+print_statement(ARGIN(lexer_state * const lexer),
+        ARGIN(subroutine * const sub))
+{
+    ASSERT_ARGS(print_statement)
     instruction *statiter;
 
     if (sub->statements == NULL)
@@ -280,8 +396,8 @@
 
 /*
 
-=item C<static void
-print_sub_flags(lexer_state * const lexer, subroutine * const subiter)>
+=item C<static void print_sub_flags(lexer_state * const lexer, subroutine *
+const subiter)>
 
 Print the appropriate subflags.
 
@@ -289,7 +405,11 @@
 
 */
 static void
-print_sub_flags(lexer_state * const lexer, subroutine * const subiter) {
+print_sub_flags(ARGIN(lexer_state * const lexer),
+        ARGIN(subroutine * const subiter))
+{
+    ASSERT_ARGS(print_sub_flags)
+
     if (TEST_FLAG(subiter->flags, PIRC_SUB_FLAG_INIT))
         fprintf(out, ":init ");
     if (TEST_FLAG(subiter->flags, PIRC_SUB_FLAG_LOAD))
@@ -320,8 +440,7 @@
 
 /*
 
-=item C<void
-print_subs(struct lexer_state * const lexer)>
+=item C<void print_subs(struct lexer_state * const lexer)>
 
 Top-level function to print all generated code. This function
 iterates over all subs and prints their instructions.
@@ -330,7 +449,9 @@
 
 */
 void
-print_subs(struct lexer_state * const lexer) {
+print_subs(struct ARGIN(lexer_state * const lexer))
+{
+    ASSERT_ARGS(print_subs)
     subroutine *subiter;
 
     if (lexer->subs == NULL)
@@ -371,8 +492,8 @@
 
 /*
 
-=item C<static void
-emit_pir_instruction(lexer_state * const lexer, instruction * const instr)>
+=item C<static void emit_pir_instruction(lexer_state * const lexer, instruction
+* const instr)>
 
 Print the PIR representation of C<instr>. If C<instr> has a label, that
 is printed first.
@@ -381,7 +502,10 @@
 
 */
 static void
-emit_pir_instruction(lexer_state * const lexer, instruction * const instr) {
+emit_pir_instruction(ARGIN(lexer_state * const lexer),
+        ARGIN(instruction * const instr))
+{
+    ASSERT_ARGS(emit_pir_instruction)
 
     if (instr->label)
         fprintf(out, "  %s:\n", instr->label);
@@ -395,8 +519,8 @@
 
 /*
 
-=item C<static void
-emit_pir_statement(lexer_state * const lexer, subroutine * const sub)>
+=item C<static void emit_pir_statement(lexer_state * const lexer, subroutine *
+const sub)>
 
 Emit all statements of the subroutine C<sub>. The statements
 are emitted in PIR format. If there are no statements in C<sub>,
@@ -406,7 +530,11 @@
 
 */
 static void
-emit_pir_statement(lexer_state * const lexer, subroutine * const sub) {
+emit_pir_statement(ARGIN(lexer_state * const lexer),
+        ARGIN(subroutine * const sub))
+{
+    ASSERT_ARGS(emit_pir_statement)
+
     instruction *statiter;
 
     if (sub->statements == NULL)
@@ -424,8 +552,8 @@
 
 /*
 
-=item C<void
-emit_pir_subs(lexer_state * const lexer)>
+=item C<void emit_pir_subs(lexer_state * const lexer, char const * const
+outfile)>
 
 Print the PIR representation of all subroutines stored
 in the C<lexer>. If there are no subroutines, thre function
@@ -435,7 +563,10 @@
 
 */
 void
-emit_pir_subs(lexer_state * const lexer, char const * const outfile) {
+emit_pir_subs(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const outfile))
+{
+    ASSERT_ARGS(emit_pir_subs)
     subroutine *subiter;
 
     if (lexer->subs == NULL)
@@ -474,8 +605,8 @@
 
 /*
 
-=item C<static void
-emit_pbc_const_arg(lexer_state * const lexer, constant * const c)>
+=item C<static void emit_pbc_const_arg(lexer_state * const lexer, constant *
+const c)>
 
 Emit a constant argument into the bytecode. An integer is emitted
 inline in the bytecode; other types are stored in the constant table,
@@ -485,7 +616,10 @@
 
 */
 static void
-emit_pbc_const_arg(lexer_state * const lexer, constant * const c) {
+emit_pbc_const_arg(ARGIN(lexer_state * const lexer),
+        ARGIN(constant * const c))
+{
+    ASSERT_ARGS(emit_pbc_const_arg)
 
     switch (c->type) {
         case INT_VAL:
@@ -538,8 +672,8 @@
 
 /*
 
-=item C<static void
-emit_pbc_label_arg(lexer_state * const lexer, label * const l)>
+=item C<static void emit_pbc_label_arg(lexer_state * const lexer, label * const
+l)>
 
 Emit the value of the label offset of label C<l>.
 
@@ -547,7 +681,11 @@
 
 */
 static void
-emit_pbc_label_arg(lexer_state * const lexer, label * const l) {
+emit_pbc_label_arg(ARGIN(lexer_state * const lexer),
+        ARGIN(label * const l))
+{
+    ASSERT_ARGS(emit_pbc_label_arg)
+
     emit_int_arg(lexer->bc, l->offset);
 }
 
@@ -558,8 +696,8 @@
 
 /*
 
-=item C<static void
-emit_pbc_target_arg(lexer_state * const lexer, target * const t)>
+=item C<static void emit_pbc_target_arg(lexer_state * const lexer, target *
+const t)>
 
 Emit the assigned register of target C<t>. The assigned register is
 stored in the C<color> field, of either the C<pir_reg> or C<symbol>
@@ -570,7 +708,11 @@
 
 */
 static void
-emit_pbc_target_arg(lexer_state * const lexer, target * const t) {
+emit_pbc_target_arg(ARGIN(lexer_state * const lexer),
+        ARGIN(target * const t))
+{
+    ASSERT_ARGS(emit_pbc_target_arg)
+
     emit_int_arg(lexer->bc, t->info->color);
 
     /* if t has a key, emit that as well */
@@ -581,8 +723,8 @@
 
 /*
 
-=item C<static void
-emit_pbc_expr(lexer_state * const lexer, expression * const operand)>
+=item C<static void emit_pbc_expr(lexer_state * const lexer, expression * const
+operand)>
 
 Emit bytecode for the expression C<operand>. This is a dispatch
 function, invoking the appropriate function depending on C<operand>'s
@@ -592,7 +734,11 @@
 
 */
 static void
-emit_pbc_expr(lexer_state * const lexer, expression * const operand) {
+emit_pbc_expr(ARGIN(lexer_state * const lexer),
+        ARGIN(expression * const operand))
+{
+    ASSERT_ARGS(emit_pbc_expr)
+
     switch (operand->type) {
       case EXPR_CONSTANT:
         emit_pbc_const_arg(lexer, operand->expr.c);
@@ -620,8 +766,8 @@
 
 /*
 
-=item C<static void
-optimize_instr(lexer_state * const lexer, instruction * const instr)>
+=item C<static void optimize_instr(lexer_state * const lexer, instruction *
+const instr)>
 
 Optimize the instruction C<instr>. Currently, these instructions are optimized:
 
@@ -633,7 +779,10 @@
 
 */
 static void
-optimize_instr(lexer_state * const lexer, instruction * const instr) {
+optimize_instr(ARGIN(lexer_state * const lexer),
+        ARGIN(instruction * const instr))
+{
+    ASSERT_ARGS(optimize_instr)
 
     switch (instr->opcode) {
         case PARROT_OP_box_p_ic: {
@@ -641,7 +790,7 @@
 
             /* the last operand, which is the second in this case */
             expression *second_operand = instr->operands;
-            PMC *intconst = pmc_new(lexer->interp,
+            PMC *intconst = Parrot_pmc_new(lexer->interp,
                                     Parrot_get_ctx_HLL_type(lexer->interp, enum_class_Integer));
             int index     = add_pmc_const(lexer->bc, intconst);
             VTABLE_set_integer_native(lexer->interp, intconst, second_operand->expr.c->val.ival);
@@ -658,7 +807,7 @@
 
             /* the last operand, which is the second in this case */
             expression *second_operand = instr->operands;
-            PMC *numconst = pmc_new(lexer->interp,
+            PMC *numconst = Parrot_pmc_new(lexer->interp,
                                     Parrot_get_ctx_HLL_type(lexer->interp, enum_class_Float));
             int index     = add_pmc_const(lexer->bc, numconst);
             VTABLE_set_number_native(lexer->interp, numconst, second_operand->expr.c->val.nval);
@@ -676,7 +825,7 @@
 
             /* the last operand, which is the second in this case */
             expression *second_operand = instr->operands;
-            PMC *strconst = pmc_new(lexer->interp,
+            PMC *strconst = Parrot_pmc_new(lexer->interp,
                                     Parrot_get_ctx_HLL_type(lexer->interp, enum_class_String));
             int index     = add_pmc_const(lexer->bc, strconst);
 
@@ -700,8 +849,8 @@
 
 /*
 
-=item C<static void
-emit_pbc_instr(lexer_state * const lexer, instruction * const instr)>
+=item C<static void emit_pbc_instr(lexer_state * const lexer, instruction *
+const instr)>
 
 Emit PBC for one instruction. If the C<opinfo> attribute of C<instr>
 is NULL, the function does nothing and returns.
@@ -710,7 +859,11 @@
 
 */
 static void
-emit_pbc_instr(lexer_state * const lexer, instruction * const instr) {
+emit_pbc_instr(ARGIN(lexer_state * const lexer),
+        ARGIN(instruction * const instr))
+{
+    ASSERT_ARGS(emit_pbc_instr)
+
     int         i;
     expression *operand;
     opcode_t offset;
@@ -766,8 +919,8 @@
 
 /*
 
-=item C<static void
-emit_pbc_sub(lexer_state * const lexer, subroutine * const sub)>
+=item C<static void emit_pbc_sub(lexer_state * const lexer, subroutine * const
+sub)>
 
 Emit bytecode for the subroutine C<sub>.
 
@@ -775,7 +928,11 @@
 
 */
 static void
-emit_pbc_sub(lexer_state * const lexer, subroutine * const sub) {
+emit_pbc_sub(ARGIN(lexer_state * const lexer),
+        ARGIN(subroutine * const sub))
+{
+    ASSERT_ARGS(emit_pbc_sub)
+
     instruction *iter;
 
     if (sub->statements == NULL)
@@ -803,8 +960,7 @@
 
 /*
 
-=item C<static void
-emit_pbc_annotations(lexer_state * const lexer)>
+=item C<static void emit_pbc_annotations(lexer_state * const lexer)>
 
 Emit all annotations into the PackFile. First a new annotations
 segment is created. Then, for each annotation, its value is stored
@@ -814,7 +970,10 @@
 
 */
 static void
-emit_pbc_annotations(lexer_state * const lexer) {
+emit_pbc_annotations(ARGIN(lexer_state * const lexer))
+{
+    ASSERT_ARGS(emit_pbc_annotations)
+
     annotation *iter;
 
     if (lexer->annotations == NULL)
@@ -866,8 +1025,7 @@
 
 /*
 
-=item C<void
-emit_pbc(lexer_state * const lexer, const char *outfile)>
+=item C<void emit_pbc(lexer_state * const lexer, const char *outfile)>
 
 Generate Parrot Byte Code from the abstract syntax tree.
 This is the top-level function. After all instructions
@@ -878,7 +1036,10 @@
 
 */
 void
-emit_pbc(lexer_state * const lexer, const char *outfile) {
+emit_pbc(ARGIN(lexer_state * const lexer),
+        ARGIN(const char *outfile))
+{
+    ASSERT_ARGS(emit_pbc)
     subroutine *subiter;
 
     if (!outfile)

Modified: branches/sys_mem_reduce/compilers/pirc/src/piremit.h
==============================================================================
--- branches/sys_mem_reduce/compilers/pirc/src/piremit.h	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/pirc/src/piremit.h	Sat Feb 20 22:12:51 2010	(r44252)
@@ -10,12 +10,91 @@
 struct lexer_state;
 struct constant;
 
-void print_subs(struct lexer_state * const lexer);
-void emit_pir_subs(struct lexer_state * const lexer, char const * const outfile);
-void emit_pbc(struct lexer_state * const lexer, const char *outfile);
+/* HEADERIZER BEGIN: compilers/pirc/src/piremit.c */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
+void emit_pbc(ARGIN(lexer_state * const lexer), ARGIN(const char *outfile))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
-int emit_pbc_const(struct lexer_state * const lexer, struct constant * const pirconst);
+void emit_pir_subs(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const outfile))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void print_constant(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(constant * const c))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void print_expr(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(expression * const expr))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void print_expressions(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(expression * const expr))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void print_instruction(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(instruction * const ins))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void print_key(ARGIN(lexer_state * const lexer), ARGIN(key * const k))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void print_statement(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(subroutine * const sub))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void print_subs(struct ARGIN(lexer_state * const lexer))
+        __attribute__nonnull__(1);
+
+void print_target(ARGIN(lexer_state * const lexer), ARGIN(target * const t))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+#define ASSERT_ARGS_emit_pbc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(outfile))
+#define ASSERT_ARGS_emit_pir_subs __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(outfile))
+#define ASSERT_ARGS_print_constant __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(c))
+#define ASSERT_ARGS_print_expr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(expr))
+#define ASSERT_ARGS_print_expressions __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(expr))
+#define ASSERT_ARGS_print_instruction __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(ins))
+#define ASSERT_ARGS_print_key __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(k))
+#define ASSERT_ARGS_print_statement __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(sub))
+#define ASSERT_ARGS_print_subs __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_print_target __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(t))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: compilers/pirc/src/piremit.c */
 
 #endif /* PARROT_PIR_PIREMIT_H_GUARD */
 

Modified: branches/sys_mem_reduce/compilers/pirc/src/pirmacro.c
==============================================================================
--- branches/sys_mem_reduce/compilers/pirc/src/pirmacro.c	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/pirc/src/pirmacro.c	Sat Feb 20 22:12:51 2010	(r44252)
@@ -9,7 +9,18 @@
 #include "pircompiler.h"
 #include "parrot/parrot.h"
 
+/* HEADERIZER HFILE: compilers/pirc/src/pirmacro.h */
 
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+static void check_size(ARGIN(macro_def * const macro), unsigned length)
+        __attribute__nonnull__(1);
+
+#define ASSERT_ARGS_check_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(macro))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: static */
 
 /*
 
@@ -24,15 +35,11 @@
 
 */
 
-static void check_size(macro_def * const macro, unsigned length);
-
-
-
 
 /*
 
-=item C<macro_def *
-new_macro(macro_table * const table, char * const name, int lineno)>
+=item C<macro_def * new_macro(macro_table * const table, char const * const
+name, int lineno, int takes_args, unsigned initsize)>
 
 Create a new macro definition node and store it in the macro_table C<table>
 
@@ -41,10 +48,13 @@
 */
 PARROT_MALLOC
 PARROT_IGNORABLE_RESULT
+PARROT_CAN_RETURN_NULL
 macro_def *
-new_macro(macro_table * const table, char const * const name, int lineno, int takes_args,
-          unsigned initsize)
+new_macro(ARGIN(macro_table * const table),
+        ARGIN(char const * const name), int lineno, int takes_args,
+        unsigned initsize)
 {
+    ASSERT_ARGS(new_macro)
     macro_def *macro   = (macro_def *)mem_sys_allocate(sizeof (macro_def));
 
     macro->name        = name;
@@ -65,8 +75,7 @@
 
 /*
 
-=item C<macro_param *
-new_macro_param(char const * const value)>
+=item C<macro_param * new_macro_param(char const * const value)>
 
 Constructor for a C<macro_param> struct object. Initializes
 the C<name> attribute of the C<macro_param> object to C<value>.
@@ -79,7 +88,9 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 macro_param *
-new_macro_param(char const * const value) {
+new_macro_param(ARGIN(char const * const value))
+{
+    ASSERT_ARGS(new_macro_param)
     macro_param *param = (macro_param *)mem_sys_allocate(sizeof (macro_param));
     param->name        = value;
     param->next        = NULL;
@@ -88,8 +99,8 @@
 
 /*
 
-=item C<void
-add_macro_param(macro_def * const macro, char * const name)>
+=item C<void add_macro_param(ARGIN*macro_def * const macro), char const * const
+name)>
 
 Add a macro parameter by name of C<name> to the macro definition C<macro>.
 
@@ -97,7 +108,10 @@
 
 */
 void
-add_macro_param(macro_def * const macro, char const * const name) {
+add_macro_param(ARGIN*macro_def * const macro),
+        ARGIN(char const * const name))
+{
+    ASSERT_ARGS(add_macro_param)
     macro_param *param = new_macro_param(name);
     param->next        = macro->parameters;
     macro->parameters  = param;
@@ -106,8 +120,8 @@
 
 /*
 
-=item C<void
-new_macro_const(macro_table * const table, char const * const name, char const * const value)>
+=item C<void new_macro_const(macro_table * const table, char const * const name,
+char const * const value, int lineno)>
 
 Define a new C<.macro_const>, by name of C<name> as an alias for C<value> The new macro
 const is entered in the macro_table C<table>
@@ -116,9 +130,11 @@
 
 */
 void
-new_macro_const(macro_table * const table, char const * const name, char const * const value,
-                      int lineno)
+new_macro_const(ARGIN(macro_table * const table),
+        ARGIN(char const * const name),
+        ARGIN(char const * const value), int lineno)
 {
+    ASSERT_ARGS(new_macro_const)
     /* macro constants are just macros, but they have no body; the value is already
      * parsed and allocated in memory.
      */
@@ -130,8 +146,7 @@
 
 /*
 
-=item C<void
-check_size(macro_def * const macro, unsigned length)>
+=item C<static void check_size(macro_def * const macro, unsigned length)>
 
 Check C<macro>'s buffer size whether C<length> bytes can be added;
 if not, then the buffer is doubled in size.
@@ -140,7 +155,9 @@
 
 */
 static void
-check_size(macro_def * const macro, unsigned length) {
+check_size(ARGIN(macro_def * const macro), unsigned length)
+{
+    ASSERT_ARGS(check_size)
     unsigned used = macro->cursor - macro->body;
     if (used + length >= macro->buffersize) {
         unsigned  newsize = macro->buffersize << 1;
@@ -159,8 +176,7 @@
 
 /*
 
-=item C<void
-store_macro_char(macro_def * const macro, char c)>
+=item C<void store_macro_char(macro_def * const macro, char c)>
 
 Store the character C<c> in C<macro>'s body buffer.
 
@@ -168,7 +184,9 @@
 
 */
 void
-store_macro_char(macro_def * const macro, char c) {
+store_macro_char(ARGIN(macro_def * const macro), char c)
+{
+    ASSERT_ARGS(store_macro_char)
     /* if buffer is full, resize it. */
     check_size(macro, 1);
     *(macro->cursor)++ = c;
@@ -179,8 +197,8 @@
 
 /*
 
-=item C<void
-store_macro_string(macro_def * const macro, char * const str, ...)>
+=item C<void store_macro_string(macro_def * const macro, char const * const str,
+...)>
 
 Store the string C<str> in C<macro>'s body buffer. The total number
 of characters to be written should not exceed MAX_NUM_CHARS. It's not known
@@ -190,7 +208,11 @@
 
 */
 void
-store_macro_string(macro_def * const macro, char const * const str, ...) {
+store_macro_string(ARGIN(macro_def * const macro),
+        ARGIN(char const * const str),
+        ...)
+{
+    ASSERT_ARGS(store_macro_string)
     va_list arg_ptr;
 
 #define MAX_NUM_CHARS_IN_STRING   256
@@ -206,8 +228,8 @@
 
 /*
 
-=item C<macro_def *
-find_macro(constant_table * const table, char * const name)>
+=item C<macro_def * find_macro(macro_table * const table, char const * const
+name)>
 
 Find the specified macro. If the specified macro does not exist,
 NULL is returned.
@@ -218,7 +240,10 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 macro_def *
-find_macro(macro_table * const table, char const * const name) {
+find_macro(ARGIN(macro_table * const table),
+        ARGIN(char const * const name))
+{
+    ASSERT_ARGS(find_macro)
     macro_def *iter = table->definitions;
 
     PARROT_ASSERT(name != NULL);
@@ -243,8 +268,7 @@
 
 /*
 
-=item C<macro_table *
-new_macro_table(macro_table * const current)>
+=item C<macro_table * new_macro_table(macro_table * const current)>
 
 Create a new macro_table structure; set C<current> as its previous.
 The newly created table is returned.
@@ -256,7 +280,9 @@
 PARROT_CANNOT_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
 macro_table *
-new_macro_table(macro_table * const current) {
+new_macro_table(ARGIN(macro_table * const current))
+{
+    ASSERT_ARGS(new_macro_table)
     macro_table *table       = (macro_table *)mem_sys_allocate_zeroed(sizeof (macro_table));
     table->definitions       = NULL;
     table->prev = NULL;
@@ -270,8 +296,7 @@
 
 /*
 
-=item C<void
-delete_macro_table(macro_table * table)>
+=item C<void delete_macro_table(macro_table * table)>
 
 Free resources allocated for the macro_table C<table>.
 
@@ -279,14 +304,16 @@
 
 */
 void
-delete_macro_table(macro_table * table) {
+delete_macro_table(ARGMOD(macro_table * table))
+{
+    ASSERT_ARGS(delete_macro_table)
     mem_sys_free(table);
 }
 
 /*
 
-=item C<void
-declare_macro_local(macro_def * const macro, char * const name)>
+=item C<void declare_macro_local(macro_def * const macro, char const * const
+name)>
 
 Declare C<name> as a C<.macro_local> for the macro definition C<macro>.
 
@@ -294,7 +321,10 @@
 
 */
 void
-declare_macro_local(macro_def * const macro, char const * const name) {
+declare_macro_local(ARGIN(macro_def * const macro),
+        ARGIN(char const * const name))
+{
+    ASSERT_ARGS(declare_macro_local)
     macro_param * param = new_macro_param(name);
     param->next         = macro->macrolocals;
     macro->macrolocals  = param;
@@ -303,8 +333,7 @@
 
 /*
 
-=item C<int
-is_macro_local(macro_def * const macro, char * const name)>
+=item C<int is_macro_local(macro_def * const macro, char const * const name)>
 
 Check whether C<name> was declared as a C<.macro_local> in the macro
 definition C<macro>.
@@ -314,7 +343,10 @@
 */
 PARROT_WARN_UNUSED_RESULT
 int
-is_macro_local(macro_def * const macro, char const * const name) {
+is_macro_local(ARGIN(macro_def * const macro),
+        ARGIN(char const * const name))
+{
+    ASSERT_ARGS(is_macro_local)
     macro_param *iter = macro->macrolocals;
 
     while (iter) {

Modified: branches/sys_mem_reduce/compilers/pirc/src/pirmacro.h
==============================================================================
--- branches/sys_mem_reduce/compilers/pirc/src/pirmacro.h	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/pirc/src/pirmacro.h	Sat Feb 20 22:12:51 2010	(r44252)
@@ -80,33 +80,113 @@
 } macro_table;
 
 
+/* HEADERIZER BEGIN: compilers/pirc/src/pirmacro.c */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-
-
-macro_def *new_macro(macro_table * const table, char const * const name, int lineno,
-                     int takes_args, unsigned initsize);
-
-void add_macro_param(macro_def * const macro, char const * const name);
-
-void new_macro_const(macro_table * const table, char const * const name,
-                     char const * const value, int lineno);
-
-
-macro_def *find_macro(macro_table * const table, char const * const name);
-
-macro_table * new_macro_table(macro_table * const current);
-
-void store_macro_char(macro_def * const macro, char c) ;
-
-void store_macro_string(macro_def * const macro, char const * const str, ...);
-
-macro_param * new_macro_param(char const * const value);
-
-void declare_macro_local(macro_def * const macro, char const * const name);
-
-int is_macro_local(macro_def * const macro, char const * const name);
-
-void delete_macro_table(macro_table * table);
+void add_macro_param(
+    ARGIN*macro_def * const macro),
+    ARGIN(char const * const name))
+        __attribute__nonnull__(2);
+
+void declare_macro_local(
+    ARGIN(macro_def * const macro),
+    ARGIN(char const * const name))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void delete_macro_table(ARGMOD(macro_table * table))
+        __attribute__nonnull__(1)
+        FUNC_MODIFIES(* table);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+macro_def * find_macro(
+    ARGIN(macro_table * const table),
+    ARGIN(char const * const name))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+int is_macro_local(
+    ARGIN(macro_def * const macro),
+    ARGIN(char const * const name))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_MALLOC
+PARROT_IGNORABLE_RESULT
+PARROT_CAN_RETURN_NULL
+macro_def * new_macro(
+    ARGIN(macro_table * const table),
+    ARGIN(char const * const name),
+    int lineno,
+    int takes_args,
+    unsigned initsize)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void new_macro_const(
+    ARGIN(macro_table * const table),
+    ARGIN(char const * const name),
+    ARGIN(char const * const value),
+    int lineno)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
+PARROT_MALLOC
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+macro_param * new_macro_param(ARGIN(char const * const value))
+        __attribute__nonnull__(1);
+
+PARROT_MALLOC
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+macro_table * new_macro_table(ARGIN(macro_table * const current))
+        __attribute__nonnull__(1);
+
+void store_macro_char(ARGIN(macro_def * const macro), char c)
+        __attribute__nonnull__(1);
+
+void store_macro_string(
+    ARGIN(macro_def * const macro),
+    ARGIN(char const * const str),
+    ...)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+#define ASSERT_ARGS_add_macro_param __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_declare_macro_local __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(macro) \
+    , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_delete_macro_table __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(table))
+#define ASSERT_ARGS_find_macro __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(table) \
+    , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_is_macro_local __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(macro) \
+    , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_new_macro __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(table) \
+    , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_new_macro_const __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(table) \
+    , PARROT_ASSERT_ARG(name) \
+    , PARROT_ASSERT_ARG(value))
+#define ASSERT_ARGS_new_macro_param __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(value))
+#define ASSERT_ARGS_new_macro_table __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(current))
+#define ASSERT_ARGS_store_macro_char __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(macro))
+#define ASSERT_ARGS_store_macro_string __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(macro) \
+    , PARROT_ASSERT_ARG(str))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: compilers/pirc/src/pirmacro.c */
 
 #endif /* PARROT_PIR_PIRMACRO_H_GUARD */
 

Modified: branches/sys_mem_reduce/compilers/pirc/src/pirparser.c
==============================================================================
--- branches/sys_mem_reduce/compilers/pirc/src/pirparser.c	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/pirc/src/pirparser.c	Sat Feb 20 22:12:51 2010	(r44252)
@@ -405,6 +405,111 @@
 
 #endif
 
+/* HEADERIZER HFILE: none */
+
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+static void check_first_arg_direction(
+    lexer_state * const lexer,
+    NOTNULL(char const * const opname))
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+static char * concat_strings(
+    NOTNULL(lexer_state * const lexer),
+    NOTNULL(char const * a),
+    NOTNULL(char const * b))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
+static void create_if_instr(
+    NOTNULL(lexer_state * const lexer),
+    int invert,
+    int hasnull,
+    NOTNULL(char const * const name),
+    NOTNULL(char const * const label))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(4)
+        __attribute__nonnull__(5);
+
+static void do_strength_reduction(lexer_state * const lexer);
+PARROT_WARN_UNUSED_RESULT
+static int evaluate_i_i(int a, pir_rel_operator op, int b);
+
+PARROT_WARN_UNUSED_RESULT
+static int evaluate_i_n(int a, pir_rel_operator op, double b);
+
+PARROT_WARN_UNUSED_RESULT
+static int evaluate_n_i(double a, pir_rel_operator op, int b);
+
+static void undeclared_symbol(
+    lexer_state * const lexer,
+    char const * const symbol);
+
+static void yy_reduce_print (
+    YYSTYPE *yyvsp,
+    int yyrule,
+    yyscan_t yyscanner,
+    struct lexer_state * const lexer);
+
+static void yy_stack_print (yytype_int16 *bottom, yytype_int16 *top);
+static void yy_symbol_print (
+    FILE *yyoutput,
+    int yytype,
+    YYSTYPE const * const yyvaluep,
+    yyscan_t yyscanner,
+    struct lexer_state * const lexer);
+
+static void yy_symbol_value_print (
+    FILE *yyoutput,
+    int yytype,
+    YYSTYPE const * const yyvaluep,
+    yyscan_t yyscanner,
+    struct lexer_state * const lexer);
+
+static void yydestruct (
+    const char *yymsg,
+    int yytype,
+    YYSTYPE *yyvaluep,
+    yyscan_t yyscanner,
+    struct lexer_state * const lexer);
+
+static int YYID (int i);
+static char * yystpcpy (char *yydest, const char *yysrc);
+static YYSIZE_T yystrlen (const char *yystr);
+static YYSIZE_T yysyntax_error (char *yyresult, int yystate, int yychar);
+static YYSIZE_T yytnamerr (char *yyres, const char *yystr);
+#define ASSERT_ARGS_check_first_arg_direction __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(opname))
+#define ASSERT_ARGS_concat_strings __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(a) \
+    , PARROT_ASSERT_ARG(b))
+#define ASSERT_ARGS_create_if_instr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(name) \
+    , PARROT_ASSERT_ARG(label))
+#define ASSERT_ARGS_do_strength_reduction __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_evaluate_i_i __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_evaluate_i_n __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_evaluate_n_i __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_undeclared_symbol __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_yy_reduce_print  __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_yy_stack_print  __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_yy_symbol_print  __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_yy_symbol_value_print  __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_yydestruct  __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_YYID  __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_yystpcpy  __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_yystrlen  __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_yysyntax_error  __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_yytnamerr  __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: static */
+
 char *expand_macro(yyscan_t yyscanner, macro_def * const macro, macro_param * args);
 
 /* Enumeration of mathematical operator types; these are used to index the opnames array. */
@@ -5450,8 +5555,7 @@
 
 /*
 
-=item C<static int
-evaluate_i_i(int a, pir_rel_operator op, double b)>
+=item C<static int evaluate_i_i(int a, pir_rel_operator op, int b)>
 
 Compare C<a> with C<b> according to the relational operator C<op>.
 Wrapper for C<evaluate_n_n>, which takes arguments of type double.
@@ -5467,8 +5571,7 @@
 
 /*
 
-=item C<static int
-evaluate_n_i(int a, pir_rel_operator op, double b)>
+=item C<static int evaluate_n_i(double a, pir_rel_operator op, int b)>
 
 Compare C<a> with C<b> according to the relational operator C<op>.
 Wrapper for C<evaluate_n_n>, which takes arguments of type double.
@@ -5484,8 +5587,7 @@
 
 /*
 
-=item C<static int
-evaluate_i_n(int a, pir_rel_operator op, double b)>
+=item C<static int evaluate_i_n(int a, pir_rel_operator op, double b)>
 
 Compare C<a> with C<b> according to the relational operator C<op>.
 Wrapper for C<evaluate_n_n>, which takes arguments of type double.
@@ -5633,8 +5735,8 @@
 
 /*
 
-=item C<static char *
-concat_strings(lexer_state * const lexer, char const *a, char const *b)>
+=item C<static char * concat_strings(lexer_state * const lexer, char const * a,
+char const * b)>
 
 Concatenates two strings into a new buffer. The new string is returned.
 
@@ -5659,9 +5761,8 @@
 
 /*
 
-=item C<static void
-create_if_instr(lexer_state *lexer, int invert, int hasnull,
-                char * const name, char * const label)>
+=item C<static void create_if_instr(lexer_state * const lexer, int invert, int
+hasnull, char const * const name, char const * const label)>
 
 Create an C<if> or C<unless> instruction; if C<invert> is non-zero (true), the
 C<if> instruction is inverted, effectively becoming C<unless>.
@@ -5908,8 +6009,7 @@
 
 /*
 
-=item C<static void
-do_strength_reduction(lexer_state * const lexer)>
+=item C<static void do_strength_reduction(lexer_state * const lexer)>
 
 Implement strength reduction for the math operators C<add>, C<sub>, C<mul>, C<div> and C<fdiv>.
 If the current instruction is any of these, then the first two operands are checked; if both
@@ -6043,8 +6143,8 @@
 
 /*
 
-=item C<static void
-check_first_arg_direction(lexer_state * const lexer, char * const opname)>
+=item C<static void check_first_arg_direction(lexer_state * const lexer, char
+const * const opname)>
 
 This function checks the first argument's  direction of the op C<opname>.
 If the direction is not C<OUT>, a syntax error is emitted. This function assumes
@@ -6217,8 +6317,8 @@
 
 /*
 
-=item C<static void
-undeclared_symbol(lexer_state * const lexer, char * const symbol)>
+=item C<static void undeclared_symbol(lexer_state * const lexer, char const *
+const symbol)>
 
 Report an error message saying that C<symbol> was not declared. Then test
 whether the symbol is perhaps a PASM register identifier. The user may have

Modified: branches/sys_mem_reduce/compilers/pirc/src/pirpcc.c
==============================================================================
--- branches/sys_mem_reduce/compilers/pirc/src/pirpcc.c	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/pirc/src/pirpcc.c	Sat Feb 20 22:12:51 2010	(r44252)
@@ -25,14 +25,163 @@
 
 #include "parrot/oplib/ops.h"
 
+/* HEADERIZER HFILE: compilers/pirc/src/pirpcc.h */
+
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+static void add_alias_operand(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(PMC *array),
+    int index,
+    ARGIN(char const * const alias))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(4);
+
+static void arguments_to_operands(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(argument * const args),
+    unsigned num_arguments)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static int calculate_pcc_argument_flags(ARGIN(argument * const arg))
+        __attribute__nonnull__(1);
+
+static int calculate_pcc_target_flags(ARGIN(target * const result))
+        __attribute__nonnull__(1);
+
+static void convert_nci_call(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(invocation * const inv))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static void convert_pcc_call(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(invocation * const inv))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static void convert_pcc_methodcall(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(invocation * const inv))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static void convert_pcc_methodtailcall(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(invocation * const inv))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static void convert_pcc_return(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(invocation * const inv))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static void convert_pcc_tailcall(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(invocation * const inv))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static void convert_pcc_yield(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(invocation * const inv))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static int generate_signature_pmc(
+    ARGIN(lexer_state * const lexer),
+    unsigned size)
+        __attribute__nonnull__(1);
+
+PARROT_CANNOT_RETURN_NULL
+static target * generate_unique_pir_reg(
+    ARGIN(lexer_state * const lexer),
+    pir_type type)
+        __attribute__nonnull__(1);
+
+PARROT_CANNOT_RETURN_NULL
+static target * get_invoked_sub(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(target * const sub))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static void save_global_reference(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(instruction * const instr),
+    ARGIN(char const * const label))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
+static void targets_to_operands(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(target * const targets),
+    unsigned num_targets)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+#define ASSERT_ARGS_add_alias_operand __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(array) \
+    , PARROT_ASSERT_ARG(alias))
+#define ASSERT_ARGS_arguments_to_operands __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(args))
+#define ASSERT_ARGS_calculate_pcc_argument_flags __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(arg))
+#define ASSERT_ARGS_calculate_pcc_target_flags __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(result))
+#define ASSERT_ARGS_convert_nci_call __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(inv))
+#define ASSERT_ARGS_convert_pcc_call __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(inv))
+#define ASSERT_ARGS_convert_pcc_methodcall __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(inv))
+#define ASSERT_ARGS_convert_pcc_methodtailcall __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(inv))
+#define ASSERT_ARGS_convert_pcc_return __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(inv))
+#define ASSERT_ARGS_convert_pcc_tailcall __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(inv))
+#define ASSERT_ARGS_convert_pcc_yield __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(inv))
+#define ASSERT_ARGS_generate_signature_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_generate_unique_pir_reg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_get_invoked_sub __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(sub))
+#define ASSERT_ARGS_save_global_reference __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(instr) \
+    , PARROT_ASSERT_ARG(label))
+#define ASSERT_ARGS_targets_to_operands __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(targets))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: static */
 
 
 /*
 
 =over 4
 
-=item C<static int
-calculate_pcc_target_flags(target * const result)>
+=item C<static int calculate_pcc_target_flags(target * const result)>
 
 Calculate Parrot Calling Conventions flags for the target node
 C<result>.
@@ -41,7 +190,9 @@
 
 */
 static int
-calculate_pcc_target_flags(target * const result) {
+calculate_pcc_target_flags(ARGIN(target * const result))
+{
+    ASSERT_ARGS(calculate_pcc_target_flags)
     int flag = 0;
 
 
@@ -66,8 +217,7 @@
 
 /*
 
-=item C<static int
-calculate_pcc_argument_flags(argument * const arg)>
+=item C<static int calculate_pcc_argument_flags(argument * const arg)>
 
 Calculate the Parrot Calling Conventions flags for the
 argument C<arg>. An int encoding the flags is returned.
@@ -76,7 +226,9 @@
 
 */
 static int
-calculate_pcc_argument_flags(argument * const arg) {
+calculate_pcc_argument_flags(ARGIN(argument * const arg))
+{
+    ASSERT_ARGS(calculate_pcc_argument_flags)
     int flag = 0;
 
     switch (arg->value->type) {
@@ -110,8 +262,8 @@
 
 /*
 
-=item C<static target *
-generate_unique_pir_reg(lexer_state * const lexer, pir_type type)>
+=item C<static target * generate_unique_pir_reg(lexer_state * const lexer,
+pir_type type)>
 
 Generate a unique, temporary PIR register of type C<type>. It uses the C<reg>
 constructor to create a target node, and using C<pir_reg_generator>
@@ -123,16 +275,20 @@
 =cut
 
 */
+PARROT_CANNOT_RETURN_NULL
 static target *
-generate_unique_pir_reg(lexer_state * const lexer, pir_type type) {
+generate_unique_pir_reg(ARGIN(lexer_state * const lexer), pir_type type)
+{
+    ASSERT_ARGS(generate_unique_pir_reg)
+
     return new_reg(lexer, type, --lexer->pir_reg_generator);
 }
 
 
 /*
 
-=item C<static int
-generate_signature_pmc(lexer_state * const lexer, unsigned size)>
+=item C<static int generate_signature_pmc(lexer_state * const lexer, unsigned
+size)>
 
 Create a FixedIntegerArray PMC object that encodes the types and flags
 of parameters and add it to the PBC constant table. The index in that
@@ -142,12 +298,15 @@
 
 */
 static int
-generate_signature_pmc(lexer_state * const lexer, unsigned size) {
+generate_signature_pmc(ARGIN(lexer_state * const lexer), unsigned size)
+{
+    ASSERT_ARGS(generate_signature_pmc)
+
     PMC *fixed_int_array;
     int  array_index;
 
     /* flags and types are encoded in a FixedIntegerArray PMC */
-    fixed_int_array = pmc_new(lexer->interp, enum_class_FixedIntegerArray);
+    fixed_int_array = Parrot_pmc_new(lexer->interp, enum_class_FixedIntegerArray);
 
     if (size > 0) /* can't resize a fixed integer array to 0 elements, default size is 0. */
         VTABLE_set_integer_native(lexer->interp, fixed_int_array, size);
@@ -161,8 +320,7 @@
 
 /*
 
-=item C<void
-emit_sub_epilogue(lexer_state * const lexer)>
+=item C<void emit_sub_epilogue(lexer_state * const lexer)>
 
 Emit final instructions for the current subroutine. In case
 this is a C<:main> sub, the "end" instruction is emitted,
@@ -172,7 +330,9 @@
 
 */
 void
-emit_sub_epilogue(lexer_state * const lexer) {
+emit_sub_epilogue(ARGIN(lexer_state * const lexer))
+{
+    ASSERT_ARGS(emit_sub_epilogue)
 
     if (TEST_FLAG(lexer->subs->flags, PIRC_SUB_FLAG_MAIN))
         new_sub_instr(lexer, PARROT_OP_end, "end", 0);
@@ -188,8 +348,8 @@
 
 /*
 
-=item C<static void
-add_alias_operand(lexer_state * const lexer, PMC *array, int index, char const * const alias)>
+=item C<static void add_alias_operand(lexer_state * const lexer, PMC *array, int
+index, char const * const alias)>
 
 Add an alias operand to current instruction; C<array> is the signature
 array, which must hold the right flags for this new operand (at position C<index>).
@@ -199,8 +359,11 @@
 
 */
 static void
-add_alias_operand(lexer_state * const lexer, PMC *array, int index, char const * const alias) {
-    PARROT_ASSERT(alias);
+add_alias_operand(ARGIN(lexer_state * const lexer),
+        ARGIN(PMC *array), int index,
+        ARGIN(char const * const alias))
+{
+    ASSERT_ARGS(add_alias_operand)
     /* set flags for being a string constant, and being a :named operand. */
     VTABLE_set_integer_keyed_int(lexer->interp, array, index, PARROT_ARG_NAME | PARROT_ARG_SC);
     push_operand(lexer, expr_from_string(lexer, alias));
@@ -209,8 +372,8 @@
 
 /*
 
-=item C<static void
-targets_to_operands(lexer_state * const lexer, target * const targets)>
+=item C<static void targets_to_operands(lexer_state * const lexer, target *
+const targets, unsigned num_targets)>
 
 Convert a list of C<target> nodes into operands. Before the operands
 are added to the I<current> instruction, a FixedIntegerArray is created,
@@ -231,7 +394,11 @@
 
 */
 static void
-targets_to_operands(lexer_state * const lexer, target * const targets, unsigned num_targets) {
+targets_to_operands(ARGIN(lexer_state * const lexer),
+        ARGIN(target * const targets), unsigned num_targets)
+{
+    ASSERT_ARGS(targets_to_operands)
+
     target  *iter;
     int      array_index;
     PMC     *signature_array;
@@ -291,8 +458,8 @@
 
 /*
 
-=item C<static void
-arguments_to_operands(lexer_state * const lexer, argument * const args)>
+=item C<static void arguments_to_operands(lexer_state * const lexer, argument *
+const args, unsigned num_arguments)>
 
 Convert a list of C<argument> nodes into operands. Before the operands are
 added to the I<current> instruction, a FixedIntegerArray PMC is created
@@ -303,7 +470,11 @@
 
 */
 static void
-arguments_to_operands(lexer_state * const lexer, argument * const args, unsigned num_arguments) {
+arguments_to_operands(ARGIN(lexer_state * const lexer),
+        ARGIN(argument * const args), unsigned num_arguments)
+{
+    ASSERT_ARGS(arguments_to_operands)
+
     argument *argiter;
     int       array_index;
     unsigned  i;
@@ -347,8 +518,8 @@
 
 /*
 
-=item C<void
-generate_parameters_instr(lexer_state * const lexer, unsigned num_parameters)>
+=item C<void generate_parameters_instr(lexer_state * const lexer, unsigned
+num_parameters)>
 
 Generate the "get_params" instruction, taking <num_parameters> variable arguments;
 this is the number of parameters of this function.
@@ -357,7 +528,9 @@
 
 */
 void
-generate_parameters_instr(lexer_state * const lexer, unsigned num_parameters) {
+generate_parameters_instr(ARGIN(lexer_state * const lexer), unsigned num_parameters)
+{
+    ASSERT_ARGS(generate_parameters_instr)
     if (TEST_FLAG(CURRENT_SUB(lexer)->flags , (PIRC_SUB_FLAG_METHOD | PIRC_SUB_FLAG_VTABLE))) {
         ++num_parameters; /* didn't count implicit "self" parameter yet. */
     }
@@ -372,8 +545,8 @@
 
 /*
 
-=item C<void
-generate_getresults_instr(lexer_state * const lexer, target * const targetlist)>
+=item C<void generate_getresults_instr(lexer_state * const lexer, target * const
+targetlist)>
 
 Generate instruction for the C<.get_results> statement.
 
@@ -381,7 +554,10 @@
 
 */
 void
-generate_getresults_instr(lexer_state * const lexer, target * const targetlist) {
+generate_getresults_instr(ARGIN(lexer_state * const lexer),
+        ARGIN(target * const targetlist))
+{
+    ASSERT_ARGS(generate_getresults_instr)
     /* add this point we know that there's only 1 target, as that's the convention for
      * exception handlers:
      *
@@ -397,9 +573,8 @@
 
 /*
 
-=item C<static void
-save_global_reference(lexer_state * const lexer, instruction * const instr,
-                      char const * const label)>
+=item C<static void save_global_reference(lexer_state * const lexer, instruction
+* const instr, char const * const label)>
 
 Store the instruction C<instr>, which references the global label C<label> in a list.
 After the parse phase, this instruction can be patched, if C<label> can be resolved
@@ -409,10 +584,12 @@
 
 */
 static void
-save_global_reference(lexer_state * const lexer, instruction * const instr,
-                      char const * const label)
-
+save_global_reference(ARGIN(lexer_state * const lexer),
+        ARGIN(instruction * const instr),
+        ARGIN(char const * const label))
 {
+    ASSERT_ARGS(save_global_reference)
+
     global_fixup *ref = pir_mem_allocate_zeroed_typed(lexer, global_fixup);
 
     ref->instr = instr;
@@ -425,8 +602,8 @@
 
 /*
 
-=item C<static target *
-get_invoked_sub(lexer_state * const lexer, target * const sub)>
+=item C<static target * get_invoked_sub(lexer_state * const lexer, target *
+const sub)>
 
 Return a C<target> node that represents the sub to invoke.
 If C<sub> is a register, that is returned. If it's a declared C<.local>,
@@ -439,8 +616,12 @@
 =cut
 
 */
+PARROT_CANNOT_RETURN_NULL
 static target *
-get_invoked_sub(lexer_state * const lexer, target * const sub) {
+get_invoked_sub(ARGIN(lexer_state * const lexer),
+        ARGIN(target * const sub))
+{
+    ASSERT_ARGS(get_invoked_sub)
     target       *subreg = NULL;
     symbol       *sym    = NULL;
     global_label *glob   = NULL;
@@ -494,8 +675,8 @@
 
 /*
 
-=item C<static void
-convert_pcc_call(lexer_state * const lexer, invocation * const inv)>
+=item C<static void convert_pcc_call(lexer_state * const lexer, invocation *
+const inv)>
 
 Generate instructions for a normal invocation using the Parrot Calling
 Conventions (PCC). This is the sequence of the following instructions:
@@ -517,7 +698,11 @@
 
 */
 static void
-convert_pcc_call(lexer_state * const lexer, invocation * const inv) {
+convert_pcc_call(ARGIN(lexer_state * const lexer),
+        ARGIN(invocation * const inv))
+{
+    ASSERT_ARGS(convert_pcc_call)
+
     target *sub;
 
     new_sub_instr(lexer, PARROT_OP_set_args_pc, "set_args_pc", inv->num_arguments);
@@ -541,8 +726,8 @@
 
 /*
 
-=item C<static void
-convert_pcc_tailcall(lexer_state * const lexer, invocation * const inv)>
+=item C<static void convert_pcc_tailcall(lexer_state * const lexer, invocation *
+const inv)>
 
 Generate instructions for a tailcall using the Parrot Calling Conventions (PCC).
 The sequence of instructions is:
@@ -554,7 +739,11 @@
 
 */
 static void
-convert_pcc_tailcall(lexer_state * const lexer, invocation * const inv) {
+convert_pcc_tailcall(ARGIN(lexer_state * const lexer),
+        ARGIN(invocation * const inv))
+{
+    ASSERT_ARGS(convert_pcc_tailcall)
+
     target *sub;
 
     new_sub_instr(lexer, PARROT_OP_set_args_pc, "set_args_pc", inv->num_arguments);
@@ -568,8 +757,8 @@
 
 /*
 
-=item C<static void
-convert_pcc_return(lexer_state * const lexer, invocation * const inv)>
+=item C<static void convert_pcc_return(lexer_state * const lexer, invocation *
+const inv)>
 
 Generate instructions for a normal return statement using the Parrot Calling
 Conventions (PCC). The sequence of instructions is:
@@ -581,7 +770,11 @@
 
 */
 static void
-convert_pcc_return(lexer_state * const lexer, invocation * const inv) {
+convert_pcc_return(ARGIN(lexer_state * const lexer),
+        ARGIN(invocation * const inv))
+{
+    ASSERT_ARGS(convert_pcc_return)
+
     new_sub_instr(lexer, PARROT_OP_set_returns_pc, "set_returns_pc", inv->num_arguments);
     arguments_to_operands(lexer, inv->arguments, inv->num_arguments);
     new_sub_instr(lexer, PARROT_OP_returncc, "returncc", 0);
@@ -589,8 +782,8 @@
 
 /*
 
-=item C<static void
-convert_nci_call(lexer_state * const lexer, invocation * const inv)>
+=item C<static void convert_nci_call(lexer_state * const lexer, invocation *
+const inv)>
 
 Generate instructions for a function invocation using the Native Call
 Interface (NCI). The sequence of instructions is:
@@ -603,7 +796,11 @@
 
 */
 static void
-convert_nci_call(lexer_state * const lexer, invocation * const inv) {
+convert_nci_call(ARGIN(lexer_state * const lexer),
+        ARGIN(invocation * const inv))
+{
+    ASSERT_ARGS(convert_nci_call)
+
     target *sub;
 
     new_sub_instr(lexer, PARROT_OP_set_args_pc, "set_args_pc", inv->num_arguments);
@@ -620,8 +817,8 @@
 
 /*
 
-=item C<static void
-convert_pcc_yield(lexer_state * const lexer, invocation * const inv)>
+=item C<static void convert_pcc_yield(lexer_state * const lexer, invocation *
+const inv)>
 
 Generate instructions for a yield statement using the Parrot Calling Conventions.
 The sequence of instructions is:
@@ -633,7 +830,11 @@
 
 */
 static void
-convert_pcc_yield(lexer_state * const lexer, invocation * const inv) {
+convert_pcc_yield(ARGIN(lexer_state * const lexer),
+        ARGIN(invocation * const inv))
+{
+    ASSERT_ARGS(convert_pcc_yield)
+
     new_sub_instr(lexer, PARROT_OP_set_returns_pc, "set_returns_pc", inv->num_arguments);
     arguments_to_operands(lexer, inv->arguments, inv->num_arguments);
     new_sub_instr(lexer, PARROT_OP_yield, "yield", 0);
@@ -642,8 +843,8 @@
 
 /*
 
-=item C<static void
-convert_pcc_methodcall(lexer_state * const lexer, invocation * const inv)>
+=item C<static void convert_pcc_methodcall(lexer_state * const lexer, invocation
+* const inv)>
 
 Generate instructions for a method call using the Parrot Calling Conventions (PCC).
 The sequence of instructions is:
@@ -656,7 +857,11 @@
 
 */
 static void
-convert_pcc_methodcall(lexer_state * const lexer, invocation * const inv) {
+convert_pcc_methodcall(ARGIN(lexer_state * const lexer),
+        ARGIN(invocation * const inv))
+{
+    ASSERT_ARGS(convert_pcc_methodcall)
+
     /* in a methodcall, the invocant object is passed as the first argument */
     unshift_arg(inv, new_argument(lexer, expr_from_target(lexer, inv->sub)));
     new_sub_instr(lexer, PARROT_OP_set_args_pc, "set_args_pc", inv->num_arguments);
@@ -673,8 +878,8 @@
 
 /*
 
-=item C<static void
-convert_pcc_methodtailcall(lexer_state * const lexer, invocation * const inv)>
+=item C<static void convert_pcc_methodtailcall(lexer_state * const lexer,
+invocation * const inv)>
 
 Generate instructions for a method tailcall, using the Parrot Calling Conventions (PCC).
 The sequence of instructions is:
@@ -686,7 +891,11 @@
 
 */
 static void
-convert_pcc_methodtailcall(lexer_state * const lexer, invocation * const inv) {
+convert_pcc_methodtailcall(ARGIN(lexer_state * const lexer),
+        ARGIN(invocation * const inv))
+{
+    ASSERT_ARGS(convert_pcc_methodtailcall)
+
     unshift_arg(inv, new_argument(lexer, expr_from_target(lexer, inv->sub)));
     new_sub_instr(lexer, PARROT_OP_set_args_pc, "set_args_pc", inv->num_arguments);
 
@@ -712,8 +921,8 @@
 
 /*
 
-=item C<void
-convert_inv_to_instr(lexer_state * const lexer, invocation * const inv)>
+=item C<void convert_inv_to_instr(lexer_state * const lexer, invocation * const
+inv)>
 
 Convert an C<invocation> structure into a series of instructions. This is the
 dispatch function, which calls the appropriate conversion function, based
@@ -723,7 +932,10 @@
 
 */
 void
-convert_inv_to_instr(lexer_state * const lexer, invocation * const inv) {
+convert_inv_to_instr(ARGIN(lexer_state * const lexer),
+        ARGIN(invocation * const inv))
+{
+    ASSERT_ARGS(convert_inv_to_instr)
     switch (inv->type) {
       case CALL_PCC:
         convert_pcc_call(lexer, inv);

Modified: branches/sys_mem_reduce/compilers/pirc/src/pirpcc.h
==============================================================================
--- branches/sys_mem_reduce/compilers/pirc/src/pirpcc.h	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/pirc/src/pirpcc.h	Sat Feb 20 22:12:51 2010	(r44252)
@@ -9,10 +9,41 @@
 #include "pircompunit.h"
 #include "pircompiler.h"
 
-void convert_inv_to_instr(struct lexer_state * const lexer, invocation * const inv);
-void generate_parameters_instr(struct lexer_state * const lexer, unsigned num_parameters);
-void generate_getresults_instr(struct lexer_state * const lexer, target * const targetlist);
-void emit_sub_epilogue(struct lexer_state * const lexer);
+/* HEADERIZER BEGIN: compilers/pirc/src/pirpcc.c */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+void convert_inv_to_instr(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(invocation * const inv))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void emit_sub_epilogue(ARGIN(lexer_state * const lexer))
+        __attribute__nonnull__(1);
+
+void generate_getresults_instr(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(target * const targetlist))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void generate_parameters_instr(
+    ARGIN(lexer_state * const lexer),
+    unsigned num_parameters)
+        __attribute__nonnull__(1);
+
+#define ASSERT_ARGS_convert_inv_to_instr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(inv))
+#define ASSERT_ARGS_emit_sub_epilogue __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_generate_getresults_instr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(targetlist))
+#define ASSERT_ARGS_generate_parameters_instr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: compilers/pirc/src/pirpcc.c */
 
 #endif /* PARROT_PIR_PIRPCC_H_GUARD */
 

Modified: branches/sys_mem_reduce/compilers/pirc/src/pirregalloc.c
==============================================================================
--- branches/sys_mem_reduce/compilers/pirc/src/pirregalloc.c	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/pirc/src/pirregalloc.c	Sat Feb 20 22:12:51 2010	(r44252)
@@ -47,8 +47,7 @@
 
 /*
 
-=item C<static void
-reset_register_count(lsr_allocator * const lsr)>
+=item C<static void reset_register_count(lsr_allocator * const lsr)>
 
 Reset the register counters; there's one counter for each register
 type (string, num, int, pmc).
@@ -57,7 +56,9 @@
 
 */
 static void
-reset_register_count(lsr_allocator * const lsr) {
+reset_register_count(ARGIN(lsr_allocator * const lsr))
+{
+    ASSERT_ARGS(reset_register_count)
     int i;
     /* the "r" field keeps track of the number of registers that must be allocated by
      * parrot. In the original implementation, "r" is constant, and indicates the number
@@ -70,10 +71,85 @@
         lsr->r[i] = 1;
 }
 
+/* HEADERIZER HFILE: compilers/pirc/src/pirregalloc.h */
+
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+static void add_free_reg(
+    ARGIN(lsr_allocator * const lsr),
+    unsigned regno,
+    pir_type type)
+        __attribute__nonnull__(1);
+
+static void add_interval_to_active(
+    ARGIN(lsr_allocator *lsr),
+    ARGIN(live_interval * const i),
+    pir_type type)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static void add_live_interval(
+    ARGIN(lsr_allocator * const lsr),
+    ARGIN(live_interval * const i),
+    pir_type type)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static void cache_interval_object(
+    ARGIN(lsr_allocator * const lsr),
+    ARGIN(live_interval * interval))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static void expire_old_intervals(
+    ARGIN(lsr_allocator * const lsr),
+    ARGIN(live_interval * const i),
+    pir_type type)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static unsigned get_free_reg(
+    ARGIN(lsr_allocator * const lsr),
+    pir_type type)
+        __attribute__nonnull__(1);
+
+static unsigned lengthi(ARGIN_NULLOK(live_interval *list));
+static void remove_from_active(ARGMOD(live_interval *i))
+        __attribute__nonnull__(1)
+        FUNC_MODIFIES(*i);
+
+static void reset_register_count(ARGIN(lsr_allocator * const lsr))
+        __attribute__nonnull__(1);
+
+#define ASSERT_ARGS_add_free_reg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lsr))
+#define ASSERT_ARGS_add_interval_to_active __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lsr) \
+    , PARROT_ASSERT_ARG(i))
+#define ASSERT_ARGS_add_live_interval __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lsr) \
+    , PARROT_ASSERT_ARG(i))
+#define ASSERT_ARGS_cache_interval_object __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lsr) \
+    , PARROT_ASSERT_ARG(interval))
+#define ASSERT_ARGS_expire_old_intervals __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lsr) \
+    , PARROT_ASSERT_ARG(i))
+#define ASSERT_ARGS_get_free_reg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lsr))
+#define ASSERT_ARGS_lengthi __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_remove_from_active __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(i))
+#define ASSERT_ARGS_reset_register_count __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lsr))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: static */
+
 /*
 
-=item C<lsr_allocator *
-new_linear_scan_register_allocator(struct lexer_state * lexer)>
+=item C<lsr_allocator * new_linear_scan_register_allocator(struct lexer_state
+*lexer)>
 
 Constructor for a linear scan register allocator.
 Initializes the allocator, and returns it.
@@ -81,8 +157,11 @@
 =cut
 
 */
+PARROT_CAN_RETURN_NULL
 lsr_allocator *
-new_linear_scan_register_allocator(struct lexer_state *lexer) {
+new_linear_scan_register_allocator(ARGIN_NULLOK(struct lexer_state *lexer))
+{
+    ASSERT_ARGS(new_linear_scan_register_allocator)
     lsr_allocator *lsr = (lsr_allocator *)mem_sys_allocate_zeroed(sizeof (lsr_allocator));
 
     lsr->lexer = lexer;
@@ -97,7 +176,8 @@
 */
 void print_list(char *msg, live_interval *i);
 void
-print_list(char *msg, live_interval *i) {
+print_list(ARGIN(char *msg), ARGIN(live_interval *i))
+{
     fprintf(stderr, "%s: ", msg);
     while (i) {
         fprintf(stderr, "[%d] ", i->endpoint);
@@ -108,8 +188,7 @@
 
 /*
 
-=item C<void
-destroy_linear_scan_register_allocator(lsr_allocator *lsr)>
+=item C<void destroy_linear_scan_register_allocator(lsr_allocator *lsr)>
 
 Destructor for linear scan register allocator. All live_interval
 objects are destroyed as well.
@@ -118,7 +197,9 @@
 
 */
 void
-destroy_linear_scan_register_allocator(lsr_allocator *lsr) {
+destroy_linear_scan_register_allocator(ARGMOD(lsr_allocator *lsr))
+{
+    ASSERT_ARGS(destroy_linear_scan_register_allocator)
     pir_type type;
     live_interval *i;
 
@@ -143,12 +224,18 @@
 
 /*
 
+=item C<static unsigned lengthi(live_interval *list)>
+
 XXX debug function only.
 Return length of list C<list>
 
+=cut
+
 */
 static unsigned
-lengthi(live_interval *list) {
+lengthi(ARGIN_NULLOK(live_interval *list))
+{
+    ASSERT_ARGS(lengthi)
     unsigned len = 0;
 
     while (list) {
@@ -160,8 +247,8 @@
 
 /*
 
-=item C<static void
-add_live_interval(lsr_allocator * const lsr, live_interval * const i, pir_type type)>
+=item C<static void add_live_interval(lsr_allocator * const lsr, live_interval *
+const i, pir_type type)>
 
 Add live_interval C<i> to the list; this list is sorted on increasing
 start point.
@@ -170,7 +257,10 @@
 
 */
 static void
-add_live_interval(lsr_allocator * const lsr, live_interval * const i, pir_type type) {
+add_live_interval(ARGIN(lsr_allocator * const lsr),
+    ARGIN(live_interval * const i), pir_type type)
+{
+    ASSERT_ARGS(add_live_interval)
     live_interval *iter = lsr->intervals[type];
 
     /* if there's no interval for the specified type, insert i as the first one and return */
@@ -234,8 +324,8 @@
 
 /*
 
-=item C<live_interval *
-new_live_interval(lsr_allocator * const lsr, unsigned firstuse_location, pir_type type)>
+=item C<live_interval * new_live_interval(lsr_allocator * const lsr, unsigned
+firstuse_location, pir_type type)>
 
 Constructor for a live_interval struct object. After creating the new interval object,
 its startpoint and endpoint are initialized to the value in C<firstuse_location>. Note
@@ -247,10 +337,14 @@
 =cut
 
 */
+PARROT_CAN_RETURN_NULL
 PARROT_MALLOC
 PARROT_WARN_UNUSED_RESULT
 live_interval *
-new_live_interval(lsr_allocator * const lsr, unsigned firstuse_location, pir_type type) {
+new_live_interval(ARGIN(lsr_allocator * const lsr),
+        unsigned firstuse_location, pir_type type)
+{
+    ASSERT_ARGS(new_live_interval)
     live_interval *i;
     /* check whether there's an interval object that we can re-use, to prevent
      * memory malloc() and free()s.
@@ -283,8 +377,8 @@
 
 /*
 
-=item C<static void
-add_interval_to_active(lsr_allocator *lsr, live_interval * i, pir_type type)>
+=item C<static void add_interval_to_active(lsr_allocator *lsr, live_interval *
+const i, pir_type type)>
 
 Add interval C<i> to the list of active intervals; the list is sorted
 on increasing endpoint.
@@ -293,7 +387,10 @@
 
 */
 static void
-add_interval_to_active(lsr_allocator *lsr, live_interval * const i, pir_type type) {
+add_interval_to_active(ARGIN(lsr_allocator *lsr),
+        ARGIN(live_interval * const i), pir_type type)
+{
+    ASSERT_ARGS(add_interval_to_active)
     live_interval *iter = lsr->active[type];
 
     /* if there's no active intervals, set i as first */
@@ -351,8 +448,7 @@
 
 /*
 
-=item C<static unsigned
-get_free_reg(lsr_allocator * const lsr, pir_type type)>
+=item C<static unsigned get_free_reg(lsr_allocator * const lsr, pir_type type)>
 
 Allocate a new register; if there's any old registers to be reused, return
 such a second-hand register; otherwise, allocate a brand new one.
@@ -361,7 +457,9 @@
 
 */
 static unsigned
-get_free_reg(lsr_allocator * const lsr, pir_type type) {
+get_free_reg(ARGIN(lsr_allocator * const lsr), pir_type type)
+{
+    ASSERT_ARGS(get_free_reg)
     /* if there's any second hand register for the requested type, return that. */
     if (lsr->free_regs[type]) {
         free_reg *available  = lsr->free_regs[type];
@@ -388,8 +486,8 @@
 
 /*
 
-=item C<static void
-add_free_reg(lsr_allocator * const lsr, unsigned regno, pir_type type)>
+=item C<static void add_free_reg(lsr_allocator * const lsr, unsigned regno,
+pir_type type)>
 
 Add register C<regno> to the list of free regs that can be reuse.
 
@@ -397,7 +495,10 @@
 
 */
 static void
-add_free_reg(lsr_allocator * const lsr, unsigned regno, pir_type type) {
+add_free_reg(ARGIN(lsr_allocator * const lsr), unsigned regno, pir_type type)
+{
+    ASSERT_ARGS(add_free_reg)
+
     free_reg *reg;
 
     /* fprintf(stderr, "add_free_reg(): %u\n", regno); */
@@ -422,8 +523,7 @@
 
 /*
 
-=item C<static void
-remove_from_active(live_interval *i)>
+=item C<static void remove_from_active(live_interval *i)>
 
 Remove interval C<i> from the list of active intervals.
 
@@ -431,7 +531,9 @@
 
 */
 static void
-remove_from_active(live_interval *i) {
+remove_from_active(ARGMOD(live_interval *i))
+{
+    ASSERT_ARGS(remove_from_active)
     /* if it has a previous node, that previous node's next is set
      * to i's next.
      */
@@ -448,8 +550,8 @@
 
 /*
 
-=item C<static void
-expire_old_intervals(lsr_allocator * const lsr, live_interval * i, pir_type type)>
+=item C<static void expire_old_intervals(lsr_allocator * const lsr,
+live_interval * const i, pir_type type)>
 
 Go over all active intervals; if the endpoint of one of them is >= than
 C<i>'s start point, the action is aborted. This is why the C<active> list must be
@@ -460,7 +562,11 @@
 
 */
 static void
-expire_old_intervals(lsr_allocator * const lsr, live_interval * const i, pir_type type) {
+expire_old_intervals(ARGIN(lsr_allocator * const lsr),
+        ARGIN(live_interval * const i), pir_type type)
+{
+    ASSERT_ARGS(expire_old_intervals)
+
     live_interval *j;
 
     for (j = lsr->active[type]; j != NULL; j = j->nexta) {
@@ -479,8 +585,8 @@
 
 /*
 
-=item C<static void
-cache_interval_objects(lsr_allocator * const lsr, live_interval * interval)>
+=item C<static void cache_interval_object(lsr_allocator * const lsr,
+live_interval * interval)>
 
 Store the interval C<interval> on a caching list; whenever a new C<live_interval>
 object is requested, these interval objects can be re-used, instead of malloc()ing
@@ -490,15 +596,17 @@
 
 */
 static void
-cache_interval_object(lsr_allocator * const lsr, live_interval * interval) {
+cache_interval_object(ARGIN(lsr_allocator * const lsr),
+        ARGIN(live_interval * interval))
+{
+    ASSERT_ARGS(cache_interval_object)
     interval->nextc = lsr->cached_intervals;
     lsr->cached_intervals = interval;
 }
 
 /*
 
-=item C<void
-linear_scan_register_allocation(lsr_allocator * const lsr)>
+=item C<void linear_scan_register_allocation(lsr_allocator * const lsr)>
 
 Go over all live intervals; before handling any interval, expire all old ones;
 they might have expired (see expire_old_intervals()). Then, allocate a new
@@ -508,7 +616,9 @@
 
 */
 void
-linear_scan_register_allocation(lsr_allocator * const lsr) {
+linear_scan_register_allocation(ARGIN(lsr_allocator * const lsr))
+{
+    ASSERT_ARGS(linear_scan_register_allocation)
     live_interval * i;
     pir_type type = 0; /* types run from 0 to 4; see pircompunit.h */
 

Modified: branches/sys_mem_reduce/compilers/pirc/src/pirregalloc.h
==============================================================================
--- branches/sys_mem_reduce/compilers/pirc/src/pirregalloc.h	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/pirc/src/pirregalloc.h	Sat Feb 20 22:12:51 2010	(r44252)
@@ -84,13 +84,41 @@
 
 } lsr_allocator;
 
-lsr_allocator *new_linear_scan_register_allocator(struct lexer_state *lexer);
+/* HEADERIZER BEGIN: compilers/pirc/src/pirregalloc.c */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-void destroy_linear_scan_register_allocator(lsr_allocator *lsr);
-
-live_interval * new_live_interval(lsr_allocator * const lsr, unsigned firstuse, pir_type type);
-
-void linear_scan_register_allocation(lsr_allocator * const lsr);
+void destroy_linear_scan_register_allocator(ARGMOD(lsr_allocator *lsr))
+        __attribute__nonnull__(1)
+        FUNC_MODIFIES(*lsr);
+
+void linear_scan_register_allocation(ARGIN(lsr_allocator * const lsr))
+        __attribute__nonnull__(1);
+
+PARROT_CAN_RETURN_NULL
+lsr_allocator * new_linear_scan_register_allocator(
+    ARGIN_NULLOK(struct lexer_state *lexer));
+
+PARROT_CAN_RETURN_NULL
+PARROT_MALLOC
+PARROT_WARN_UNUSED_RESULT
+live_interval * new_live_interval(
+    ARGIN(lsr_allocator * const lsr),
+    unsigned firstuse_location,
+    pir_type type)
+        __attribute__nonnull__(1);
+
+#define ASSERT_ARGS_destroy_linear_scan_register_allocator \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lsr))
+#define ASSERT_ARGS_linear_scan_register_allocation \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lsr))
+#define ASSERT_ARGS_new_linear_scan_register_allocator \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_new_live_interval __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lsr))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: compilers/pirc/src/pirregalloc.c */
 
 #endif /* PARROT_PIR_PIRREGALLOC_H_GUARD */
 

Modified: branches/sys_mem_reduce/compilers/pirc/src/pirsymbol.c
==============================================================================
--- branches/sys_mem_reduce/compilers/pirc/src/pirsymbol.c	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/pirc/src/pirsymbol.c	Sat Feb 20 22:12:51 2010	(r44252)
@@ -11,7 +11,6 @@
 #include <string.h>
 #include <stdio.h>
 
-
 /*
 
 =head1 NAME
@@ -49,6 +48,61 @@
 */
 
 
+/* HEADERIZER HFILE: compilers/pirc/src/pirsymbol.h */
+
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+static global_label * new_global_label(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const name))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+static local_label * new_local_label(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const name),
+    unsigned offset)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+static pir_reg * new_pir_reg(
+    ARGIN(lexer_state * const lexer),
+    pir_type type,
+    int regno)
+        __attribute__nonnull__(1);
+
+static int next_register(ARGIN(lexer_state * const lexer), pir_type type)
+        __attribute__nonnull__(1);
+
+static int use_register(
+    ARGIN(lexer_state * const lexer),
+    pir_type type,
+    int regno,
+    int pasmregno)
+        __attribute__nonnull__(1);
+
+#define ASSERT_ARGS_new_global_label __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_new_local_label __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_new_pir_reg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_next_register __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_use_register __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: static */
+
 
 
 /* Conversion Look-Up Table (CLUT) for pir_type and value_type enums.
@@ -83,8 +137,7 @@
 
 /*
 
-=item C<static int
-next_register(lexer_state * const lexer, pir_type type)>
+=item C<static int next_register(lexer_state * const lexer, pir_type type)>
 
 Returns a new register of the specified type.
 This is the vanilla register allocator.
@@ -93,7 +146,10 @@
 
 */
 static int
-next_register(NOTNULL(lexer_state * const lexer), pir_type type) {
+next_register(ARGIN(lexer_state * const lexer), pir_type type)
+{
+    ASSERT_ARGS(next_register)
+
     CURRENT_SUB(lexer)->info.regs_used[type]++; /* count number of registers used */
     /* fprintf(stderr, "vanilla reg: %d of type %d\n", lexer->curregister[type], type); */
     return lexer->curregister[type]++;
@@ -102,8 +158,8 @@
 
 /*
 
-=item C<void
-assign_vanilla_register(lexer_state * const lexer, symbol * const sym)>
+=item C<void assign_vanilla_register(lexer_state * const lexer, symbol * const
+sym)>
 
 Assign a new register to symbol C<sym>, and create a new live interval for C<sym>.
 
@@ -111,7 +167,10 @@
 
 */
 void
-assign_vanilla_register(NOTNULL(lexer_state * const lexer), symbol * const sym) {
+assign_vanilla_register(ARGIN(lexer_state * const lexer),
+        ARGIN(symbol * const sym))
+{
+    ASSERT_ARGS(assign_vanilla_register)
     sym->info.color    = next_register(lexer, sym->info.type);
     /* fprintf(stderr, "assigning vanilla reg %d to symbol %s\n", sym->info.color,
                     sym->info.id.name);
@@ -135,8 +194,7 @@
 
 /*
 
-=item C<static unsigned
-get_hashcode(char const * const str, unsigned num_buckets)>
+=item C<unsigned get_hashcode(char const * const str, unsigned num_buckets)>
 
 Calculate the hash code for the string C<str>.
 This code is taken from IMCC.
@@ -147,7 +205,9 @@
 PARROT_PURE_FUNCTION
 PARROT_WARN_UNUSED_RESULT
 unsigned
-get_hashcode(NOTNULL(char const * const str), unsigned num_buckets) {
+get_hashcode(ARGIN(char const * const str), unsigned num_buckets)
+{
+    ASSERT_ARGS(get_hashcode)
     unsigned long  key = 0;
     char const    *s;
 
@@ -159,8 +219,8 @@
 
 /*
 
-=item C<void
-store_bucket(hashtable * const table, bucket * const buck, unsigned long hash)>
+=item C<void store_bucket(hashtable * const table, bucket * const buck, unsigned
+long hash)>
 
 Store the bucket C<buck> in the hashtable C<table> at index C<hash>.
 
@@ -168,15 +228,17 @@
 
 */
 void
-store_bucket(NOTNULL(hashtable * const table), NOTNULL(bucket * const buck), unsigned long hash) {
+store_bucket(ARGIN(hashtable * const table),
+        ARGIN(bucket * const buck), unsigned long hash)
+{
+    ASSERT_ARGS(store_bucket)
     buck->next = table->contents[hash];
     table->contents[hash] = buck;
 }
 
 /*
 
-=item C<bucket *
-get_bucket(hashtable * const table, unsigned long hash)>
+=item C<bucket * get_bucket(hashtable * const table, unsigned long hash)>
 
 Return the bucket at hash index C<hash> from the hashtable C<table>.
 
@@ -186,14 +248,16 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 bucket *
-get_bucket(NOTNULL(hashtable * const table), unsigned long hash) {
+get_bucket(ARGIN(hashtable * const table), unsigned long hash)
+{
+    ASSERT_ARGS(get_bucket)
     return table->contents[hash];
 }
 
 /*
 
-=item C<symbol *
-new_symbol(lexer_state * const lexer, char const * const name, pir_type type)>
+=item C<symbol * new_symbol(lexer_state * const lexer, char const * const name,
+pir_type type)>
 
 Create a new symbol node, returns it after initialization.
 
@@ -203,7 +267,10 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 symbol *
-new_symbol(NOTNULL(lexer_state * const lexer), NOTNULL(char const * const name), pir_type type) {
+new_symbol(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const name), pir_type type)
+{
+    ASSERT_ARGS(new_symbol)
     symbol *sym = pir_mem_allocate_zeroed_typed(lexer, symbol);
 
     sym->info.id.name = name;
@@ -216,8 +283,8 @@
 
 /*
 
-=item C<void
-declare_local(lexer_state * const lexer, pir_type type, symbol * const list)>
+=item C<void declare_local(lexer_state * const lexer, pir_type type, symbol *
+const list)>
 
 Declare the local variables in the list pointed to by C<list>, all of which
 are of the type C<type>. The variables are entered into the symbol table for
@@ -228,9 +295,10 @@
 
 */
 void
-declare_local(NOTNULL(lexer_state * const lexer), pir_type type,
-              NOTNULL(symbol * const list))
+declare_local(ARGIN(lexer_state * const lexer), pir_type type,
+              ARGIN(symbol * const list))
 {
+    ASSERT_ARGS(declare_local)
     symbol    *iter  = list;
     hashtable *table = &CURRENT_SUB(lexer)->symbols;
 
@@ -272,8 +340,7 @@
 
 /*
 
-=item C<void
-check_unused_symbols(lexer_state * const lexer)>
+=item C<void check_unused_symbols(lexer_state * const lexer)>
 
 Check all subroutines for unused symbols. If a symbol is declared but
 never used, a warning message is printed to C<stderr>. If there's
@@ -283,7 +350,9 @@
 
 */
 void
-check_unused_symbols(NOTNULL(lexer_state * const lexer)) {
+check_unused_symbols(ARGIN(lexer_state * const lexer))
+{
+    ASSERT_ARGS(check_unused_symbols)
     subroutine *subiter;
 
     /* if there's no subs, just return. */
@@ -317,8 +386,8 @@
 
 /*
 
-=item C<symbol *
-find_symbol(lexer_state * const lexer, char const * const name)>
+=item C<symbol * find_symbol(lexer_state * const lexer, char const * const
+name)>
 
 Return the node for the symbol or NULL if the symbol
 is not defined. If an attempt is made to find a symbol,
@@ -331,7 +400,10 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 symbol *
-find_symbol(NOTNULL(lexer_state * const lexer), NOTNULL(char const * const name)) {
+find_symbol(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const name))
+{
+    ASSERT_ARGS(find_symbol)
     hashtable    *table    = &CURRENT_SUB(lexer)->symbols;
     unsigned long hashcode = get_hashcode(name, table->size);
     bucket       *buck     = get_bucket(table, hashcode);
@@ -369,8 +441,8 @@
 
 /*
 
-=item C<static pir_reg *
-new_pir_reg(lexer_state * const lexer, pir_type type, int regno)>
+=item C<static pir_reg * new_pir_reg(lexer_state * const lexer, pir_type type,
+int regno)>
 
 Create a new PIR register node representing PIR/symbolic register
 identified by C<regno> and of type C<type>.
@@ -381,7 +453,9 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 static pir_reg *
-new_pir_reg(NOTNULL(lexer_state * const lexer), pir_type type, int regno) {
+new_pir_reg(ARGIN(lexer_state * const lexer), pir_type type, int regno)
+{
+    ASSERT_ARGS(new_pir_reg)
     pir_reg *r = pir_mem_allocate_zeroed_typed(lexer, pir_reg);
 
     r->info.type     = type;
@@ -395,8 +469,8 @@
 
 /*
 
-=item C<pir_reg *
-find_register(lexer_state * const lexer, pir_type type, int regno)>
+=item C<pir_reg * find_register(lexer_state * const lexer, pir_type type, int
+regno)>
 
 Find (symbolic) register no. C<regno> of type C<type>. If it's found,
 a pointer to it is returned, if not, NULL is returned.
@@ -407,7 +481,9 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 pir_reg *
-find_register(NOTNULL(lexer_state * const lexer), pir_type type, int regno) {
+find_register(ARGIN(lexer_state * const lexer), pir_type type, int regno)
+{
+    ASSERT_ARGS(find_register)
     /* should do a binary search. fix later.
      */
     pir_reg *iter = CURRENT_SUB(lexer)->registers[type];
@@ -439,8 +515,8 @@
 
 /*
 
-=item C<static int
-use_register(lexer_state * const lexer, pir_type type, int regno, int pasmregno)>
+=item C<static int use_register(lexer_state * const lexer, pir_type type, int
+regno, int pasmregno)>
 
 This function registers (no pun intended) register C<regno> of type
 C<type>; it uses register C<pasmregno>; each subsequent
@@ -454,7 +530,11 @@
 
 */
 static int
-use_register(NOTNULL(lexer_state * const lexer), pir_type type, int regno, int pasmregno) {
+use_register(ARGIN(lexer_state * const lexer), pir_type type,
+        int regno, int pasmregno)
+{
+    ASSERT_ARGS(use_register)
+
     pir_reg *reg;
 
     /* create a new node representing this PIR register */
@@ -505,8 +585,7 @@
 
 /*
 
-=item C<int
-color_reg(struct lexer_state * const lexer, pir_type type, int regno)>
+=item C<int color_reg(lexer_state * const lexer, pir_type type, int regno)>
 
 Find register C<regno> of type C<type>; if it was used before in the
 current subroutine, a (pasm) register was already assigned to it, which
@@ -519,7 +598,9 @@
 
 */
 int
-color_reg(NOTNULL(lexer_state * const lexer), pir_type type, int regno) {
+color_reg(ARGIN(lexer_state * const lexer), pir_type type, int regno)
+{
+    ASSERT_ARGS(color_reg)
     pir_reg *reg = find_register(lexer, type, regno);
 
     /* was the register already used, then it was already colored by
@@ -555,8 +636,8 @@
 
 /*
 
-=item C<static global_label *
-new_global_label(char * const name)>
+=item C<static global_label * new_global_label(lexer_state * const lexer, char
+const * const name)>
 
 Constructor to create a new global_label object.
 
@@ -566,7 +647,10 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 static global_label *
-new_global_label(NOTNULL(lexer_state * const lexer), NOTNULL(char const * const name)) {
+new_global_label(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const name))
+{
+    ASSERT_ARGS(new_global_label)
     global_label *glob = pir_mem_allocate_zeroed_typed(lexer, global_label);
     glob->name         = name;
     glob->const_table_index = 0;
@@ -575,8 +659,8 @@
 
 /*
 
-=item C<void
-store_global_label(struct lexer_state * const lexer, char * const name)>
+=item C<void store_global_label(lexer_state * const lexer, char const * const
+name)>
 
 Store the global identifier C<name> in C<lexer>'s global label table.
 
@@ -584,7 +668,10 @@
 
 */
 void
-store_global_label(NOTNULL(lexer_state * const lexer), NOTNULL(char const * const name)) {
+store_global_label(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const name))
+{
+    ASSERT_ARGS(store_global_label)
     hashtable    *table = &lexer->globals;
     unsigned long hash  = get_hashcode(name, table->size);
     bucket *b           = new_bucket(lexer);
@@ -595,8 +682,8 @@
 
 /*
 
-=item C<global_label *
-find_global_label(struct lexer_state * const lexer, char const * const name)>
+=item C<global_label * find_global_label(lexer_state * const lexer, char const *
+const name)>
 
 Find the global identifier C<name>. If no such identifier was found,
 then NULL is returned.
@@ -607,7 +694,10 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 global_label *
-find_global_label(NOTNULL(lexer_state * const lexer), NOTNULL(char const * const name)) {
+find_global_label(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const name))
+{
+    ASSERT_ARGS(find_global_label)
     hashtable    *table    = &lexer->globals;
     unsigned long hashcode = get_hashcode(name, table->size);
     bucket *b              = get_bucket(table, hashcode);
@@ -623,8 +713,8 @@
 
 /*
 
-=item C<void
-store_global_constant(lexer_state *lexer, constant * const c)>
+=item C<void store_global_constant(lexer_state * const lexer, constdecl * const
+c)>
 
 Store the globally defined constant C<c> in the constant table.
 
@@ -632,7 +722,10 @@
 
 */
 void
-store_global_constant(NOTNULL(lexer_state * const lexer), NOTNULL(constdecl * const c)) {
+store_global_constant(ARGIN(lexer_state * const lexer),
+        ARGIN(constdecl * const c))
+{
+    ASSERT_ARGS(store_global_constant)
     hashtable    *table  = &lexer->constants;
     unsigned long hash   = get_hashcode(c->name, table->size);
     bucket *b            = new_bucket(lexer);
@@ -642,8 +735,8 @@
 
 /*
 
-=item C<constant *
-find_global_constant(lexer_state *lexer, char * const name)>
+=item C<constdecl * find_global_constant(lexer_state * const lexer, char const *
+const name)>
 
 Find a constant defined as C<name>. If no constant was defined by
 that name, then NULL is returned.
@@ -654,7 +747,10 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 constdecl *
-find_global_constant(NOTNULL(lexer_state * const lexer), NOTNULL(char const * const name)) {
+find_global_constant(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const name))
+{
+    ASSERT_ARGS(find_global_constant)
     hashtable    *table    = &lexer->constants;
     unsigned long hashcode = get_hashcode(name, table->size);
     bucket *b              = get_bucket(table, hashcode);
@@ -675,9 +771,8 @@
 
 /*
 
-=item C<static local_label *
-new_local_label(lexer_state * const lexer, char const * const name,
-unsigned offset)>
+=item C<static local_label * new_local_label(lexer_state * const lexer, char
+const * const name, unsigned offset)>
 
 Constructor for a label. Create a new label structure, fill out the details
 and return it. C<name> is the name of the label; C<offset> is its current
@@ -689,9 +784,12 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CANNOT_RETURN_NULL
 static local_label *
-new_local_label(NOTNULL(lexer_state * const lexer), NOTNULL(char const * const name),
-                unsigned offset)
+new_local_label(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const name),
+        unsigned offset)
 {
+    ASSERT_ARGS(new_local_label)
+
     local_label *l = pir_mem_allocate_zeroed_typed(lexer, local_label);
     l->name        = name;
     l->offset      = offset;
@@ -700,8 +798,8 @@
 
 /*
 
-=item C<void
-store_local_label(lexer_state * const lexer, char const * const labelname, unsigned offset)>
+=item C<void store_local_label(lexer_state * const lexer, char const * const
+labelname, unsigned offset)>
 
 Store the (sub-)local label C<labelname>, having I<address> C<offset> in the current
 subroutine structure.
@@ -710,9 +808,11 @@
 
 */
 void
-store_local_label(NOTNULL(lexer_state * const lexer), NOTNULL(char const * const labelname),
-                  unsigned offset)
+store_local_label(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const labelname),
+        unsigned offset)
 {
+    ASSERT_ARGS(store_local_label)
     local_label  *l     = new_local_label(lexer, labelname, offset);
     hashtable    *table = &CURRENT_SUB(lexer)->labels;
     unsigned long hash  = get_hashcode(labelname, table->size);
@@ -723,8 +823,8 @@
 
 /*
 
-=item C<unsigned
-find_local_label(lexer_state * const lexer, char const * const labelname)>
+=item C<unsigned find_local_label(lexer_state * const lexer, char const * const
+labelname)>
 
 Find the offset for label C<labelname>. If C<labelname> was not defined as
 a label, an error is emitted, otherwise, the offset of that label is returned.
@@ -734,7 +834,10 @@
 */
 PARROT_WARN_UNUSED_RESULT
 unsigned
-find_local_label(NOTNULL(lexer_state * const lexer), NOTNULL(char const * const labelname)) {
+find_local_label(ARGIN(lexer_state * const lexer),
+        ARGIN(char const * const labelname))
+{
+    ASSERT_ARGS(find_local_label)
     hashtable    *table    = &CURRENT_SUB(lexer)->labels;
     unsigned long hashcode = get_hashcode(labelname, table->size);
     bucket *b              = get_bucket(table, hashcode);

Modified: branches/sys_mem_reduce/compilers/pirc/src/pirsymbol.h
==============================================================================
--- branches/sys_mem_reduce/compilers/pirc/src/pirsymbol.h	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/compilers/pirc/src/pirsymbol.h	Sat Feb 20 22:12:51 2010	(r44252)
@@ -75,49 +75,157 @@
 /* lookup table to convert value_type and pir_type values into one another. */
 extern const int valuetype_pirtype_clut[10];
 
+/* HEADERIZER BEGIN: compilers/pirc/src/pirsymbol.c */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
-/* symbol constructor */
-symbol *new_symbol(struct lexer_state * const lexer, char const * const name, pir_type type);
-
-/* to enter a symbol in the symbol table */
-void declare_local(struct lexer_state * const lexer, pir_type type, symbol * const list);
-
-/* to find a symbol in the symbol table */
-symbol *find_symbol(struct lexer_state * const lexer, char const * const name);
-
-
-pir_reg *find_register(struct lexer_state * const lexer, pir_type type, int regno);
-
-
-/* to find declared symbols that are never referenced */
-void check_unused_symbols(struct lexer_state * const lexer);
-
-/* find specified register; if it was not used yet, assign a PASM register to it */
-int color_reg(struct lexer_state * const lexer, pir_type type, int regno);
-
-/* store a global identifier (label) */
-void store_global_label(struct lexer_state * const lexer, char const * const name);
-
-/* find a global identifier */
-global_label *find_global_label(struct lexer_state * const lexer, char const * const name);
-
-/* store a global .const symbol */
-void store_global_constant(struct lexer_state * const lexer, constdecl * const c);
-
-/* find a global .const symbol */
-constdecl *find_global_constant(struct lexer_state * const lexer, char const * const name);
-
-void assign_vanilla_register(struct lexer_state * const lexer, symbol * const sym);
-
-void store_local_label(struct lexer_state * const lexer, char const * const label, unsigned offset);
-
-unsigned find_local_label(struct lexer_state * const lexer, char const * const label);
-
-unsigned get_hashcode(char const * const str, unsigned num_buckets);
-
-bucket *get_bucket(hashtable * const table, unsigned long hash);
-
-void store_bucket(hashtable * const table, bucket * const buck, unsigned long hash);
+void assign_vanilla_register(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(symbol * const sym))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void check_unused_symbols(ARGIN(lexer_state * const lexer))
+        __attribute__nonnull__(1);
+
+int color_reg(ARGIN(lexer_state * const lexer), pir_type type, int regno)
+        __attribute__nonnull__(1);
+
+void declare_local(
+    ARGIN(lexer_state * const lexer),
+    pir_type type,
+    ARGIN(symbol * const list))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(3);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+constdecl * find_global_constant(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const name))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+global_label * find_global_label(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const name))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+unsigned find_local_label(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const labelname))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+pir_reg * find_register(
+    ARGIN(lexer_state * const lexer),
+    pir_type type,
+    int regno)
+        __attribute__nonnull__(1);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+symbol * find_symbol(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const name))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+bucket * get_bucket(ARGIN(hashtable * const table), unsigned long hash)
+        __attribute__nonnull__(1);
+
+PARROT_PURE_FUNCTION
+PARROT_WARN_UNUSED_RESULT
+unsigned get_hashcode(ARGIN(char const * const str), unsigned num_buckets)
+        __attribute__nonnull__(1);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+symbol * new_symbol(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const name),
+    pir_type type)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void store_bucket(
+    ARGIN(hashtable * const table),
+    ARGIN(bucket * const buck),
+    unsigned long hash)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void store_global_constant(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(constdecl * const c))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void store_global_label(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const name))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void store_local_label(
+    ARGIN(lexer_state * const lexer),
+    ARGIN(char const * const labelname),
+    unsigned offset)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+#define ASSERT_ARGS_assign_vanilla_register __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(sym))
+#define ASSERT_ARGS_check_unused_symbols __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_color_reg __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_declare_local __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(list))
+#define ASSERT_ARGS_find_global_constant __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_find_global_label __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_find_local_label __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(labelname))
+#define ASSERT_ARGS_find_register __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer))
+#define ASSERT_ARGS_find_symbol __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_get_bucket __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(table))
+#define ASSERT_ARGS_get_hashcode __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(str))
+#define ASSERT_ARGS_new_symbol __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_store_bucket __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(table) \
+    , PARROT_ASSERT_ARG(buck))
+#define ASSERT_ARGS_store_global_constant __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(c))
+#define ASSERT_ARGS_store_global_label __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_store_local_label __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(lexer) \
+    , PARROT_ASSERT_ARG(labelname))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: compilers/pirc/src/pirsymbol.c */
 
 #endif /* PARROT_PIR_PIRSYMBOL_H_GUARD */
 

Modified: branches/sys_mem_reduce/config/auto/perldoc.pm
==============================================================================
--- branches/sys_mem_reduce/config/auto/perldoc.pm	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/config/auto/perldoc.pm	Sat Feb 20 22:12:51 2010	(r44252)
@@ -68,7 +68,7 @@
         if ( $new_perldoc ) {
             $TEMP_pod_build .= <<"END"
 ops$slash$pod: ..${slash}src${slash}ops${slash}$ops
-\t\$(PERLDOC) -ud ops${slash}$pod ..${slash}src${slash}ops${slash}$ops
+\t\$(PERLDOC_BIN) -ud ops${slash}$pod ..${slash}src${slash}ops${slash}$ops
 \t\$(CHMOD) 0644 ops${slash}$pod
 
 END
@@ -76,7 +76,7 @@
         else {
             $TEMP_pod_build .= <<"END"
 ops$slash$pod: ..${slash}src${slash}ops${slash}$ops
-\t\$(PERLDOC) -u ..${slash}ops${slash}$ops > ops${slash}$pod
+\t\$(PERLDOC_BIN) -u ..${slash}ops${slash}$ops > ops${slash}$pod
 \t\$(CHMOD) 0644 ..${slash}ops${slash}$pod
 
 END

Deleted: branches/sys_mem_reduce/config/gen/call_list.pm
==============================================================================
--- branches/sys_mem_reduce/config/gen/call_list.pm	Sat Feb 20 22:12:51 2010	(r44251)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,81 +0,0 @@
-# Copyright (C) 2008, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-config/gen/call_list.pm - Concatenate call_list.txt (NCI signatures) fragments
-
-=head1 DESCRIPTION
-
-Some portions of F<src/call_list.txt> (the NCI signature list) are generated,
-and others should only appear when certain features/libraries are enabled by
-Configure in previous steps.  This step simply combines all fragments that
-appear in F<config/gen/call_list/> into the single C<src/call_list.txt> used
-by the main build.
-
-If a config step wishes to make its fragment optional, that step should only
-generate or copy its fragment to F<config/gen/call_list/> when the library is
-enabled.
-
-=cut
-
-package gen::call_list;
-
-use strict;
-use warnings;
-
-use base qw(Parrot::Configure::Step);
-
-use Parrot::Configure::Utils '_slurp';
-
-
-sub _init {
-    my $self = shift;
-    my %data;
-    $data{description} = q{Generate NCI signature list};
-    $data{result} = q{};
-    $data{fragment_files} = [ sort glob 'config/gen/call_list/*.in' ];
-    return \%data;
-}
-
-my $text_file_coda = <<'CODA';
-# Local variables:
-#   mode: text
-#   buffer-read-only: t
-# End:
-CODA
-
-sub runstep {
-    my ( $self, $conf ) = @_;
-
-    my $combined_file  = 'src/call_list.txt';
-
-    open my $combined, '>', $combined_file
-        or die "Could not open '$combined_file' for write: $!";
-
-    # add read-only metadata for the generated file
-    print {$combined} "# ex: set ro:\n";
-
-    foreach my $fragment_file ( @{ $self->{fragment_files} } ) {
-        my $fragment =  _slurp($fragment_file);
-           $fragment =~ s/^\s*\n//;
-           $fragment =~ s/\s*$/\n\n/;
-
-        print {$combined} $fragment;
-    }
-    print {$combined} $text_file_coda;
-
-    $conf->append_configure_log($combined_file);
-
-    return 1;
-}
-
-1;
-
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Deleted: branches/sys_mem_reduce/config/gen/call_list/core.in
==============================================================================
--- branches/sys_mem_reduce/config/gen/call_list/core.in	Sat Feb 20 22:12:51 2010	(r44251)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,119 +0,0 @@
-# Copyright (C) 2002-2008, Parrot Foundation.
-
-# DO NOT EDIT THIS FILE.
-#
-# Any changes made here will be lost.
-#
-# This file is generated automatically by config/gen/call_list.pm
-# using config/gen/call_list/*.in .
-
-
-# Function signature declarations for Parrot Native Call Interface.
-# The first alphanumeric is the type of the return value,
-# the other alphanumerics denote the input parameter types.
-
-# Types
-
-# INT register stuff
-# I - INTVAL
-# c - char
-# s - short
-# i - int
-# l - long
-
-# NUM register stuff
-# N - FLOATVAL
-# f - float
-# d - double
-
-# STR register stuff
-# S - pointer to a STRING-register
-# t - character string (0-terminated)
-# Buffers are not valid return parameters,
-# use 'p' when the native function returns a pointer value
-# b - void *
-# B - void **
-
-# PMC register stuff
-# P - pointer to a PMC-register
-# O - pointer to PMC-register (object)
-# p - data pointer from PMC (on store into a new UnManagedStruct PMC)
-# 2 - pointer to short
-# 3 - pointer to int
-# 4 - pointer to long
-
-# void stuff
-# v - void
-
-# special stuff
-# 0 - insert a NULL (pointer) - doesn't consume a register
-# J - Parrot_Interp param
-# @ - slurpy array
-
-# callback stuff
-# U - Single PMC parameter to pass into callback - user data
-
-# Signatures
-
-d    JOd      # Parrot builtins
-I    JOS
-P    JOl
-P    Jt
-S    JOS      # ParrotIO.readline
-I    JI       # Parrot_is_char_*
-v    JOSP     # String.trans
-v    JOS      # String.reverse
-P    JOS      # Added for os.stat
-I    JOI      # os.umask
-P    JOP      # atan2
-P    JOPS     # Namespace.get_global
-v    JOPSP    # Namespace.set_global
-
-v    JPPP     # infix MMD
-v    JPIP
-v    JPSP
-v    JPNP
-
-v    JPP      # inplace infix MMD
-v    JPI
-v    JPS
-v    JPN
-
-P    JPPP     # infix MMD new
-P    JPIP
-P    JPSP
-P    JPNP
-
-I    JPP      # MMD compare
-
-# These are needed for packfileconstanttable.pmc
-I    JPS
-I    JPN
-
-# These are needed for parrotio.pmc
-i    JP
-v    JP
-i    JPi
-i    JPii
-i    JPiii
-i    JPt
-P    JOSSS
-
-# Needed by string.pmc
-v    JOSS
-
-# Needed by integer.pmc
-S    JOI
-
-# src/pmc/nci.pmc
-v    JOb
-
-# ParrotThread creation
-i    JOP@
-I    JOP@
-I    JOIP@
-
-# other ParrotThread
-P    JO
-v    JOP
-P    Ji

Deleted: branches/sys_mem_reduce/config/gen/call_list/misc.in
==============================================================================
--- branches/sys_mem_reduce/config/gen/call_list/misc.in	Sat Feb 20 22:12:51 2010	(r44251)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,416 +0,0 @@
-# t/src/embed.t
-v    J
-
-# mod_parrot
-i    ip
-i    JPip
-i    JpP
-i    Jpii
-i    p
-i    tp
-p    J
-p    Jp
-t    J
-t    Jpti
-t    p
-t    pt
-v    p
-v    pit
-v    ptt
-v    Jtiiipt
-p    JttPP
-P    Jtpi
-i    Vppp
-v    JpPP
-v    pt
-v    Jpt
-
-v
-v    Jiiip    # examples/japh/japh11.pasm
-v    i
-v    ii
-v    illllllll
-v    l
-v    p
-v    pbip
-v    pi
-v    piiii
-v    pl
-v    pp
-
-# For python
-i    JPP
-
-# Py_func signatures
-P    JP
-P    JPP
-P    JO
-S    JO
-i    P
-
-# PyBuiltins
-P    JOPP
-P    JOPPP
-v    JOPP
-v    JOPPP
-P    JOPPPP
-P    JOPPPPP
-
-# Added for Tcl
-I    JOSI
-P    JOSII
-
-# Added for TclLibrary
-t    p3
-i    pp3p
-i    pp3
-i    ppd
-i    ptii
-i    pipi
-t    ptti
-t    pti
-t    pttti
-
-# libpast
-p    Ji
-p    Jipp
-p    Jbip
-v    Jp
-v    JS
-
-# crypt
-t    tt
-
-# Sub.__get_regs_used
-I    JOt
-
-# declare_lex_preg
-v    JOSI
-
-# Added for .NET => PIR translator dynamic PMCs.
-S    JOi
-v    JOi
-I    JO
-N    JO
-v    JON
-P    JOi
-v    JOI
-
-# Make lua stop panic'ing.
-P    JOI
-P    JOIS
-S    JOSP
-
-i          # void function returning int like fork()
-i    i3i   # POSIX's waitpid
-i    ibi   # POSIX's read
-
-# win32
-l     lttl
-
-i     pip
-i     piS
-S     i
-
-# --- start mysqlclient library ---
-#
-# Created from mysql.h using the following manual method:
-#
-# Edited copy of mysql.h using vi by doing g/, *$/j (repeat) then g/\* *$/j
-# (repeat) to get all functions on one line each.
-#
-# Extracted list of api func names from
-# http://dev.mysql.com/doc/refman/4.1/en/c-api-functions.html and copied to a
-# temporary file to clean up (mysql_api_names.txt)
-#
-# Stripped down to bare names and merged into one line separated by |
-# then egrep -w `cat mysql_api_names.txt` mysql.h > mysql_api.ncidef
-# then edit mysql_api.ncidef in vi: %s/^/   #  /
-# to create space for nci signatures and to use original definition as a #
-# comment.
-#
-# This method isn't ideal, I'm just noting it here in case it helps others.
-# Ideally the process should be automated - but there be many dragons along
-# that path.
-#
-# NCI doesn't yet handle long long values (my_ulonglong), spec'd as long for now
-#
-#
-#    MYSQL_FIELD and MYSQL_RES are structs
-#    typedef char **MYSQL_ROW;           /* return data as array of strings */
-#    typedef unsigned int MYSQL_FIELD_OFFSET; /* offset to current field */
-#    typedef MYSQL_ROWS *MYSQL_ROW_OFFSET;   /* offset to current row */
-#
-l    p    #! my_ulonglong mysql_num_rows(MYSQL_RES *res)
-i    p    #  unsigned int mysql_num_fields(MYSQL_RES *res)
-c    p    #  my_bool mysql_eof(MYSQL_RES *res)
-p    pi   #  MYSQL_FIELD *mysql_fetch_field_direct(MYSQL_RES *res,
-#               unsigned int fieldnr)
-p    p    #  MYSQL_FIELD * mysql_fetch_fields(MYSQL_RES *res)
-p    p    #  MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *res)
-i    p    #  MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES *res)
-i    p    #  unsigned int mysql_field_count(MYSQL *mysql)
-l    p    #! my_ulonglong mysql_affected_rows(MYSQL *mysql)
-l    p    #! my_ulonglong mysql_insert_id(MYSQL *mysql)
-i    p    #  unsigned int mysql_errno(MYSQL *mysql)
-t    p    #  const char * mysql_error(MYSQL *mysql)
-t    p    #  const char * mysql_info(MYSQL *mysql)
-l    p    #  unsigned long mysql_thread_id(MYSQL *mysql)
-t    p    #  const char * mysql_character_set_name(MYSQL *mysql)
-p    p    #  MYSQL * mysql_init(MYSQL *mysql)
-
-i    pttttt      #  int mysql_ssl_set(MYSQL *mysql, const char *key,
-#                        const char *cert, const char *ca, const char *capath,
-#                        const char *cipher)
-c    pttt        #  my_bool mysql_change_user(MYSQL *mysql, const char *user,
-#                        const char *passwd, const char *db)
-p    pttttiti    #  MYSQL * mysql_real_connect(MYSQL *mysql, const char *host,
-#                               const char *user, const char *passwd,
-#                               const char *db, unsigned int port,
-#                               const char *unix_socket,
-#                               unsigned int clientflag)
-v    p     #  void mysql_close(MYSQL *sock)
-i    pt    #  int mysql_select_db(MYSQL *mysql, const char *db)
-i    pt    #  int mysql_query(MYSQL *mysql, const char *q)
-i    ptl   #  int mysql_real_query(MYSQL *mysql, const char *q,
-#                                  unsigned long length)
-i    p     #  int mysql_shutdown(MYSQL *mysql)
-i    p     #  int mysql_dump_debug_info(MYSQL *mysql)
-i    pi    #  int mysql_refresh(MYSQL *mysql, unsigned int refresh_options)
-i    pl    #  int mysql_kill(MYSQL *mysql,unsigned long pid)
-i    p     #  int mysql_ping(MYSQL *mysql)
-t    p     #  const char * mysql_stat(MYSQL *mysql)
-t    p     #  const char * mysql_get_server_info(MYSQL *mysql)
-t    p     #  const char * mysql_get_client_info(void)
-l          #  unsigned long mysql_get_client_version(void)
-t    p     #  const char * mysql_get_host_info(MYSQL *mysql)
-t    p     #  unsigned int mysql_get_proto_info(MYSQL *mysql)
-p    pt    #  MYSQL_RES * mysql_list_dbs(MYSQL *mysql,const char *wild)
-p    pt    #  MYSQL_RES * mysql_list_tables(MYSQL *mysql,const char *wild)
-p    ptt   #  MYSQL_RES * mysql_list_fields(MYSQL *mysql, const char *table,
-#                                           const char *wild)
-p    p     #  MYSQL_RES * mysql_list_processes(MYSQL *mysql)
-p    p     #  MYSQL_RES * mysql_store_result(MYSQL *mysql)
-p    p     #  MYSQL_RES * mysql_use_result(MYSQL *mysql)
-i    pit   #  int mysql_options(MYSQL *mysql,enum mysql_option option,
-#                               const char *arg)
-v    p     #  void mysql_free_result(MYSQL_RES *result)
-v    pl    #  void mysql_data_seek(MYSQL_RES *result, my_ulonglong offset)
-p    pp    #  MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result,
-#                                             MYSQL_ROW_OFFSET offset)
-i    pi    #  MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result,
-#                                                 MYSQL_FIELD_OFFSET offset)
-
-p    p     #  MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
-l    p     #  unsigned long * mysql_fetch_lengths(MYSQL_RES *result)
-p    p     #  MYSQL_FIELD * mysql_fetch_field(MYSQL_RES *result)
-l    ttl   #  unsigned long mysql_escape_string(char *to,const char *from, unsigned long from_length)
-l    pttl  #  unsigned long mysql_real_escape_string(MYSQL *mysql, char *to,const char *from, unsigned long length)
-v    t     #  void mysql_debug(const char *debug)
-# --- end mysqlclient library ---
-
-# My mysql does not fit with the previous section
-p    pttttitl
-#  MYSQL * mysql_real_connect(MYSQL *mysql, const char *host,
-#                               const char *user,
-#                               const char *passwd,
-#                               const char *db,
-#                               unsigned int port,
-#                               const char *unix_socket,
-#                               unsigned long clientflag)
-
-# Used by library/pcre.pir
-p    tiB3P
-p    tip3P
-i    pPtiiipi
-i    tpiibi
-
-# Oddball ones for postgres
-p    ptippppi    PQexecParams
-p    pi33ipi     PQfn
-p    pttip       PQprepage
-p    ptipppi     PQexecPrepared
-p    ppP         PQsetNoticeReceiver
-
-# Used by SDL
-p    iiil
-i    ppl
-v    pip
-p    pti
-i    ppp
-# added by RNH for the RenderXXX_XXXX text routines 
-p    ptii
-
-# Used by SDL::Font
-p    ti
-p    ptp
-i    pt33
-
-# t/pmc/nci.t
-c
-c    p
-c    pi
-
-d
-d    d
-
-f
-f    ff
-f    is
-
-i
-i    b
-i    d
-i    i
-i    ii
-i    ii4
-i    ii4i
-i    iiii
-i    iiilsp
-i    iil
-i    iili
-i    iip
-i    iit
-i    iiti
-i    ilsp
-i    iti
-i    l
-i    li
-i    lp
-i    lsp
-i    p
-i    p33
-i    p333
-i    p333333
-i    p4
-i    p42p
-i    p4i
-i    pb
-i    pi
-i    pii
-i    pii4
-i    pii4i
-i    piii
-i    piiiiii
-i    piiilsp
-i    piil
-i    piili
-i    piit
-i    piiti
-i    pilsp
-i    pit
-i    pl
-i    pli
-i    pll
-i    pllllllll
-i    plp
-i    plsp
-i    pp
-i    ppi
-i    ppiiiiiiii
-i    pppp
-i    psp
-i    pt
-i    pti
-i    pitl
-i    s
-i    s22
-i    s222
-i    sp
-i    sss
-i    ssss
-i    t
-i    ti
-i    4
-i    4i
-i    42p
-
-l
-l    ii
-l    l4
-l    p
-l    pi
-l    pii
-l    p33l
-l    33l
-
-p
-p    B
-p    b
-p    Jt
-p    i
-p    ii
-p    iiii
-p    iiiiii
-p    iiiiiiii
-p    p
-p    pt
-p    pi
-p    pii
-p    piiii
-p    t
-p    tpp
-p    ttttttt
-
-s
-
-t
-t    i
-t    ii
-t    p
-t    pi
-t    pii
-t    pt
-t    t
-t    tl4
-t    t4
-
-i    sc
-s    sc
-c    sc
-i    iii
-i    i3
-t    b
-t    B
-v    P
-v    pP
-p    ip
-i    33
-v    pii
-v    JO
-i    JO
-i    JOi
-i    JOt
-i    Jt
-i    Ji
-
-v    Vi
-v    p
-
-# Testing xlib
-
-p    ppiii
-p    ppiiiiiii
-i    ppii
-i    ppiii
-i    ppiiii
-i    ppiiiii
-i    ppiiiiii
-i    ppt
-i    pppi
-i    pppii
-i    pppiiii
-i    ppppiiiiii
-
-# Testing OpenGL
-v    fff
-
-# Testing Pointer PMC use
-v    V
-v    VVV
-
-# Testing SQLite
-i    tV
-i    ptiVp
-i    pid
-i    pitii

Modified: branches/sys_mem_reduce/config/gen/crypto/digest_pmc.in
==============================================================================
--- branches/sys_mem_reduce/config/gen/crypto/digest_pmc.in	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/config/gen/crypto/digest_pmc.in	Sat Feb 20 22:12:51 2010	(r44252)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2008, Parrot Foundation.
+Copyright (C) 2008-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -70,7 +70,7 @@
     VTABLE PMC* clone() {
 @TEMP_md_guard@
         PMC     *retval  = pmc_new_noinit(INTERP, SELF->vtable->base_type);
-        @TEMP_md_ctx@ *c       = mem_gc_allocate_zeroed_typed(INTERP, @TEMP_md_ctx@);
+        @TEMP_md_ctx@ *c       = mem_allocate_zeroed_typed(@TEMP_md_ctx@);
 
         memcpy(c, PMC_data(SELF), sizeof (@TEMP_md_ctx@));
         PMC_data(retval) = c;

Modified: branches/sys_mem_reduce/config/gen/makefiles/docs.in
==============================================================================
--- branches/sys_mem_reduce/config/gen/makefiles/docs.in	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/config/gen/makefiles/docs.in	Sat Feb 20 22:12:51 2010	(r44252)
@@ -8,7 +8,7 @@
 TOUCH   = @touch@
 RM_F    = @rm_f@
 RM_RF   = @rm_rf@
-PERLDOC = @perldoc@
+PERLDOC_BIN = @perldoc@
 VERSION = @VERSION@@DEVEL@
 
 # long list of .pod files
@@ -41,8 +41,8 @@
 	$(TOUCH) doc-prep
 
 packfile-c.pod: ../src/packfile.c
-#IF(new_perldoc):	$(PERLDOC) -ud packfile-c.pod ../src/packfile.c
-#ELSE:	$(PERLDOC) -u ../src/packfile.c > packfile-c.pod
+#IF(new_perldoc):	$(PERLDOC_BIN) -ud packfile-c.pod ../src/packfile.c
+#ELSE:	$(PERLDOC_BIN) -u ../src/packfile.c > packfile-c.pod
 
 clean:
 	$(RM_F) packfile-c.pod $(POD) doc-prep

Modified: branches/sys_mem_reduce/config/gen/makefiles/root.in
==============================================================================
--- branches/sys_mem_reduce/config/gen/makefiles/root.in	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/config/gen/makefiles/root.in	Sat Feb 20 22:12:51 2010	(r44252)
@@ -158,7 +158,7 @@
     $(LIBRARY_DIR)/config.pir \
     src/platform.c \
 #IF(platform_asm):    src/platform_asm.s \
-#IF(has_opengl):    config/gen/call_list/opengl.in \
+#IF(has_opengl):    src/glut_nci_thunks.nci \
 #IF(has_glut):    src/glut_callbacks.c \
     src/core_pmcs.c \
 #IF(has_crypto):    src/dynpmc/md2.pmc \
@@ -226,10 +226,11 @@
     $(GEN_MAKEFILES) \
     ext/Parrot-Embed/Makefile.PL \
     myconfig  \
-    src/call_list.txt \
     MANIFEST.configure.generated \
     .configure_trace.sto \
     .parrot_current_rev \
+#IF(has_opengl):    runtime/parrot/include/opengl_defines.pasm \
+#IF(has_opengl):    runtime/parrot/library/OpenGL_funcs.pir \
     runtime/parrot/include/signal.pasm
 
 
@@ -256,6 +257,7 @@
 GEN_SOURCES = \
     src/core_ops.c \
     src/nci.c \
+    src/glut_nci_thunks.c \
     src/core_ops_switch.c \
     src/parrot_config.c \
     src/null_config.c \
@@ -282,7 +284,6 @@
     $(LIBRARY_DIR)/Iter.pbc \
     $(LIBRARY_DIR)/JSON.pbc \
     $(LIBRARY_DIR)/data_json.pbc \
-    $(LIBRARY_DIR)/Math/Random/mt19937ar.pbc \
     $(LIBRARY_DIR)/Math/Rand.pbc \
     $(LIBRARY_DIR)/MIME/Base64.pbc \
     $(LIBRARY_DIR)/NCI/Utils.pbc \
@@ -475,7 +476,9 @@
     src/misc$(O) \
     src/multidispatch$(O) \
     src/frame_builder$(O) \
-    src/nci$(O) \
+    src/nci/api$(O) \
+    src/nci/core_thunks$(O) \
+    src/nci/extra_thunks$(O) \
     src/oo$(O) \
     src/packfile$(O) \
     src/packout$(O) \
@@ -523,6 +526,7 @@
 PARROT_CONFIG       = ./parrot_config$(EXE)
 PIRC                = ./pirc$(EXE)
 NQP_RX              = ./parrot-nqp$(EXE)
+NCI_THUNK_GEN	    = ./parrot_nci_thunk_gen$(EXE)
 
 # Installable executables
 INSTALLABLEPARROT    = ./installable_parrot$(EXE)
@@ -533,6 +537,7 @@
 INSTALLABLEPDB       = ./installable_parrot_debugger$(EXE)
 INSTALLABLECONFIG    = ./installable_parrot_config$(EXE)
 INSTALLABLENQP       = ./installable_parrot-nqp$(EXE)
+INSTALLABLENCITHUNKGEN = ./installable_parrot_nci_thunk_gen$(EXE)
 
 # Libraries
 LIBPARROT_STATIC    = @blib_dir@/@libparrot_static@
@@ -648,7 +653,9 @@
     src/library.str \
     src/multidispatch.str \
     src/frame_builder.str \
-    src/nci.str \
+    src/nci/api.str \
+    src/nci/core_thunks.str \
+    src/nci/extra_thunks.str \
     src/packfile.str \
     src/pmc.str \
     src/pmc_freeze.str \
@@ -799,7 +806,7 @@
 
 parrot_utils : $(PDUMP) $(DIS) $(PDB) $(PBC_MERGE) $(PBC_TO_EXE) $(PARROT_CONFIG) src/install_config$(O)
 
-installable: all $(INSTALLABLEPARROT) $(INSTALLABLEPDUMP) $(INSTALLABLEDIS) $(INSTALLABLEPDB) $(INSTALLABLEPBC_MERGE) $(INSTALLABLEPBCTOEXE) $(INSTALLABLECONFIG) $(INSTALLABLENQP)
+installable: all $(INSTALLABLEPARROT) $(INSTALLABLEPDUMP) $(INSTALLABLEDIS) $(INSTALLABLEPDB) $(INSTALLABLEPBC_MERGE) $(INSTALLABLEPBCTOEXE) $(INSTALLABLECONFIG) $(INSTALLABLENQP) $(INSTALLABLENCITHUNKGEN)
 
 
 flags_dummy :
@@ -824,6 +831,12 @@
 	$(PARROT) -o pbc_to_exe.pbc tools/dev/pbc_to_exe.pir
 	$(PARROT) pbc_to_exe.pbc pbc_to_exe.pbc
 
+parrot_nci_thunk_gen.pbc : tools/dev/nci_thunk_gen.pir $(LIBRARY_DIR)/data_json.pbc $(PARROT)
+	$(PARROT) -o parrot_nci_thunk_gen.pbc tools/dev/nci_thunk_gen.pir
+
+$(NCI_THUNK_GEN) : parrot_nci_thunk_gen.pbc $(PBC_TO_EXE)
+	$(PBC_TO_EXE) parrot_nci_thunk_gen.pbc
+
 $(PARROT_CONFIG) : tools/util/parrot-config.pir $(PARROT) $(PBC_TO_EXE)
 	$(PARROT) -o parrot_config.pbc tools/util/parrot-config.pir
 	$(PARROT) pbc_to_exe.pbc parrot_config.pbc
@@ -936,6 +949,9 @@
 $(INSTALLABLEPBCTOEXE) : $(PBC_TO_EXE) src/install_config$(O)
 	$(PBC_TO_EXE) pbc_to_exe.pbc --install
 
+$(INSTALLABLENCITHUNKGEN) : parrot_nci_thunk_gen.pbc $(PBC_TO_EXE) src/install_config$(O)
+	$(PBC_TO_EXE) parrot_nci_thunk_gen.pbc --install
+
 #
 # Parrot Debugger
 #
@@ -1379,12 +1395,20 @@
 
 src/exit$(O) : $(PARROT_H_HEADERS)
 
-src/nci$(O) : src/nci.str \
-        $(INC_DIR)/oplib/ops.h $(PARROT_H_HEADERS) \
-        src/frame_builder.h \
-        include/pmc/pmc_managedstruct.h \
-        include/pmc/pmc_nci.h \
-        include/pmc/pmc_pointer.h
+src/nci/api$(O) : src/nci/api.str \
+        $(PARROT_H_HEADERS) \
+        include/pmc/pmc_unmanagedstruct.h \
+        include/pmc/pmc_nci.h
+
+src/nci/core_thunks$(O) : src/nci/core_thunks.str \
+        $(PARROT_H_HEADERS) \
+        include/pmc/pmc_unmanagedstruct.h \
+        include/pmc/pmc_nci.h
+
+src/nci/extra_thunks$(O) : src/nci/extra_thunks.str \
+        $(PARROT_H_HEADERS) \
+        include/pmc/pmc_unmanagedstruct.h \
+        include/pmc/pmc_nci.h
 
 src/frame_builder$(O) : $(PARROT_H_HEADERS) src/frame_builder.h \
         include/pmc/pmc_fixedintegerarray.h \
@@ -1397,10 +1421,6 @@
 src/gc/system$(O) : $(PARROT_H_HEADERS)  src/gc/gc_private.h
 src/gc/gc_private.h : $(INC_DIR)/settings.h
 
-src/nci.c : src/call_list.txt $(BUILD_TOOLS_DIR)/nativecall.pl \
-	include/pmc/pmc_nci.h
-	$(PERL) $(BUILD_TOOLS_DIR)/nativecall.pl src/call_list.txt
-
 src/warnings$(O) : $(PARROT_H_HEADERS)
 
 src/misc$(O) : $(PARROT_H_HEADERS)
@@ -1807,7 +1827,7 @@
 	$(RM_F) $(FLUID_FILES_2)
 	$(RM_RF) lib/Parrot/OpLib
 	$(RM_F) $(NQP_CLEANUPS) $(PGE_CLEANUPS) $(TGE_CLEANUPS) $(JSON_CLEANUPS)
-	$(RM_F) $(PIRC_CLEANUPS) $(PCT_CLEANUPS)
+	$(RM_F) $(PIRC_CLEANUPS) $(PCT_CLEANUPS) $(DATA_JSON_CLEANUPS)
 	$(RM_F) $(GEN_PASM_INCLUDES) $(GEN_PM_INCLUDES)
 
 prog-clean :
@@ -1824,7 +1844,9 @@
     $(INSTALLABLEPDB) \
     $(INSTALLABLECONFIG) \
     $(INSTALLABLENQP) \
+    $(INSTALLABLENCITHUNKGEN) \
     pbc_to_exe.pbc pbc_to_exe.c pbc_to_exe$(O) pbc_to_exe$(EXE) \
+    $(NCI_THUNK_GEN) parrot_nci_thunk_gen.c parrot_nci_thunk_gen$(O) parrot_nci_thunk_gen.pbc \
     parrot_config$(EXE) parrot_config.c parrot_config$(O) parrot_config.pbc \
     compilers/imcc/main$(O) \
     $(PDUMP) src/pbc_dump$(O) src/packdump$(O) \
@@ -1839,6 +1861,7 @@
     src/nci_test$(O) \
     $(LIBNCI_TEST_SO) \
     src/glut_callbacks$(O) \
+    src/glut_nci_thunks$(O) \
     $(LIBGLUTCB_SO) \
     install_config.fpmc
 	$(PERL) $(BUILD_TOOLS_DIR)/c2str.pl --init
@@ -2404,9 +2427,18 @@
 # for use by runtime/parrot/library/OpenGL.pir
 src/glut_callbacks$(O): $(GENERAL_H_FILES)
 
-$(LIBGLUTCB_SO): $(LIBPARROT) src/glut_callbacks$(O)
+src/glut_nci_thunks.c: $(NCI_THUNK_GEN)
+	$(NCI_THUNK_GEN) \
+	    --loader-name=Parrot_glut_nci_loader \
+	    --loader-storage-class=PARROT_DYNEXT_EXPORT \
+	    --output=src/glut_nci_thunks.c \
+	    <src/glut_nci_thunks.nci
+
+src/glut_nci_thunks$(O): $(GENERAL_H_FILES)
+
+$(LIBGLUTCB_SO): $(LIBPARROT) src/glut_callbacks$(O) src/glut_nci_thunks$(O)
 	$(LD) $(LD_LOAD_FLAGS) $(LDFLAGS) \
-    @ld_out@$@ src/glut_callbacks$(O) \
+    @ld_out@$@ src/glut_callbacks$(O) src/glut_nci_thunks$(O) \
     $(ALL_PARROT_LIBS) @opengl_lib@
 
 # emacs etags

Modified: branches/sys_mem_reduce/config/gen/opengl.pm
==============================================================================
--- branches/sys_mem_reduce/config/gen/opengl.pm	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/config/gen/opengl.pm	Sat Feb 20 22:12:51 2010	(r44252)
@@ -15,7 +15,7 @@
 
 =item F<runtime/parrot/library/OpenGL_funcs.pir>
 
-=item F<config/gen/call_list/opengl.in>
+=item F<src/glut_nci_thunks.nci>
 
 =item F<src/glut_callbacks.c>
 
@@ -436,7 +436,7 @@
 
 my $MACRO_FILE = 'runtime/parrot/include/opengl_defines.pasm';
 my $FUNCS_FILE = 'runtime/parrot/library/OpenGL_funcs.pir';
-my $SIGS_FILE  = 'config/gen/call_list/opengl.in';
+my $SIGS_FILE  = 'src/glut_nci_thunks.nci';
 my $C_FILE     = 'src/glut_callbacks.c';
 
 
@@ -812,6 +812,8 @@
 .sub _glutcb_func_list
     .local pmc glutcb_funcs
     glutcb_funcs = new 'ResizableStringArray'
+    push glutcb_funcs, 'Parrot_glut_nci_loader'
+    push glutcb_funcs, 'vJ'
     push glutcb_funcs, 'glutcbCloseFunc'
     push glutcb_funcs, 'vJP'
     push glutcb_funcs, 'glutcbDisplayFunc'

Modified: branches/sys_mem_reduce/config/gen/platform/generic/env.c
==============================================================================
--- branches/sys_mem_reduce/config/gen/platform/generic/env.c	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/config/gen/platform/generic/env.c	Sat Feb 20 22:12:51 2010	(r44252)
@@ -1,6 +1,6 @@
 /*
  * $Id$
- * Copyright (C) 2004-2006, Parrot Foundation.
+ * Copyright (C) 2004-2010, Parrot Foundation.
  */
 
 /*
@@ -26,7 +26,9 @@
 
 /*
 
-=item C<void Parrot_setenv(const char *name, const char *value)>
+=item C<void Parrot_setenv(PARROT_INTERP, STRING *str_name, STRING *str_value)>
+
+Set up Environment vars
 
 =cut
 
@@ -61,7 +63,9 @@
 
 /*
 
-=item C<void Parrot_unsetenv(const char *name)>
+=item C<void Parrot_unsetenv(PARROT_INTERP, STRING *str_name)>
+
+UnSet Environment vars
 
 =cut
 
@@ -81,7 +85,9 @@
 
 /*
 
-=item C<char * Parrot_getenv(const char *name, int *free_it)>
+=item C<char * Parrot_getenv(PARROT_INTERP, STRING *str_name)>
+
+Get Environment vars
 
 =cut
 

Modified: branches/sys_mem_reduce/config/gen/platform/generic/memexec.c
==============================================================================
--- branches/sys_mem_reduce/config/gen/platform/generic/memexec.c	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/config/gen/platform/generic/memexec.c	Sat Feb 20 22:12:51 2010	(r44252)
@@ -1,6 +1,6 @@
 /*
  * $Id$
- * Copyright (C) 2004-2006, Parrot Foundation.
+ * Copyright (C) 2004-2010, Parrot Foundation.
  */
 
 /*
@@ -59,7 +59,7 @@
 
 /*
 
-=item C<void mem_free_executable(void *p, size_t)>
+=item C<void mem_free_executable(void *p, size_t size)>
 
 Free a buffer allocated with mem_alloc_executable().
 
@@ -81,7 +81,8 @@
 
 /*
 
-=item C<void * mem_realloc_executable(void* oldp, size_t oldsize, size_t newsize)>
+=item C<void * mem_realloc_executable(void* oldp, size_t oldsize, size_t
+newsize)>
 
 Reallocate executable memory.
 Rounds up to page size because the whole page will be marked as executable.

Modified: branches/sys_mem_reduce/config/gen/platform/openbsd/memexec.c
==============================================================================
--- branches/sys_mem_reduce/config/gen/platform/openbsd/memexec.c	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/config/gen/platform/openbsd/memexec.c	Sat Feb 20 22:12:51 2010	(r44252)
@@ -1,6 +1,6 @@
 /*
  * $Id$
- * Copyright (C) 2004-2006, Parrot Foundation.
+ * Copyright (C) 2004-2010, Parrot Foundation.
  */
 
 /*
@@ -65,7 +65,8 @@
 
 /*
 
-=item C<void * mem_realloc_executable(void* oldp, size_t oldsize, size_t newsize)>
+=item C<void * mem_realloc_executable(void* oldp, size_t oldsize, size_t
+newsize)>
 
 Reallocate executable memory
 Round up to page size because the whole page will be marked as executable

Modified: branches/sys_mem_reduce/docs/embed.pod
==============================================================================
--- branches/sys_mem_reduce/docs/embed.pod	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/docs/embed.pod	Sat Feb 20 22:12:51 2010	(r44252)
@@ -84,21 +84,7 @@
 
 =head2 Type signatures
 
-These are used with the Parrot_call_sub family of functions.
-
-=over 4
-
-=item v - void (return only)
-
-=item I - integer (return or argument)
-
-=item N - float (return or argument)
-
-=item S - string (return or argument)
-
-=item P - PMC (return or argument)
-
-=back
+    TODO: Write about signature strings
 
 =head2 Interpreter initialization and destruction
 
@@ -1717,7 +1703,7 @@
 
 =item C<Parrot_warn>
 
-=item C<PMC_is_null>
+=item C<Parrot_pmc_is_null>
 
 =item C<pmc_new>
 

Modified: branches/sys_mem_reduce/docs/parrothist.pod
==============================================================================
--- branches/sys_mem_reduce/docs/parrothist.pod	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/docs/parrothist.pod	Sat Feb 20 22:12:51 2010	(r44252)
@@ -103,5 +103,5 @@
  Gerd        1.9.0          2009-Dec-15     "Blue-fronted Amazon"
 
  chromatic   2.0.0 *        2010-Jan-19     "Inevitable"
-
+ darbelo     2.1.0          2010-Feb-16     "As Scheduled"
 =cut

Modified: branches/sys_mem_reduce/docs/pdds/draft/pdd06_pasm.pod
==============================================================================
--- branches/sys_mem_reduce/docs/pdds/draft/pdd06_pasm.pod	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/docs/pdds/draft/pdd06_pasm.pod	Sat Feb 20 22:12:51 2010	(r44252)
@@ -989,8 +989,7 @@
 "Perl5", "Perl6", "Perl5RE", "Perl6RE", "Python", "Ruby"... you get the
 picture.
 
-Parrot knows of a "PASM1" compiler, i.e. a one statement PASM compiler
-implemented as PDB_eval. Imcc registers "PASM" and "PIR" compilers.
+Imcc registers "PASM" and "PIR" compilers automatically.
 
 This is a high-level op, with the assumption that the resulting sub will be
 called. It's the equivalent of perl 5's string eval, except for the actual

Modified: branches/sys_mem_reduce/docs/pdds/draft/pdd11_extending.pod
==============================================================================
--- branches/sys_mem_reduce/docs/pdds/draft/pdd11_extending.pod	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/docs/pdds/draft/pdd11_extending.pod	Sat Feb 20 22:12:51 2010	(r44252)
@@ -275,11 +275,7 @@
 
 =over 4
 
-=item C<Parrot_call_sub(interp, Parrot_PMC sub, Parrot_Int argcount, ...)>
-
-Calls a Parrot subroutine, with C<argcount> PMC parameters. This function sets
-up Parrot's registers in line with the Parrot calling conventions; see
-L<pdd03_calling_conventions.pod> for more details.
+    TODO: Add new call functions here
 
 =back
 

Modified: branches/sys_mem_reduce/docs/project/release_manager_guide.pod
==============================================================================
--- branches/sys_mem_reduce/docs/project/release_manager_guide.pod	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/docs/project/release_manager_guide.pod	Sat Feb 20 22:12:51 2010	(r44252)
@@ -393,9 +393,11 @@
 visible at
 L<http://www.google.com/calendar/render?cid=ldhctdamsgfg5a1cord52po9h8@group.calendar.google.com>.
 
- - Feb 16, 2010      - 2.1  - darbelo
- - Mar 16, 2010      - 2.2  - cotto
- - Apr 20, 2010      - 2.3* - gerd
+ - Mar 16, 2010 - 2.2  - cotto
+ - Apr 20, 2010 - 2.3* - gerd
+ - May 18, 2010 - 2.4  - whiteknight
+ - Jun 15, 2010 - 2.5  - gerd
+ - Jul 20, 2010 - 2.6* - coke
 
 =cut
 

Modified: branches/sys_mem_reduce/examples/c/nanoparrot.c
==============================================================================
--- branches/sys_mem_reduce/examples/c/nanoparrot.c	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/examples/c/nanoparrot.c	Sat Feb 20 22:12:51 2010	(r44252)
@@ -94,7 +94,7 @@
  * or for the curious: look at the preprocessor output
  */
 
-#define OP(x) OP_ ## (x)
+#define OP(x) OP_##x
 typedef enum { OPCODES } opcodes;
 #undef OP
 
@@ -148,6 +148,8 @@
 
 =item C<static void run(Interp *interp, opcode_t *pc)>
 
+Execute a single opcode.
+
 =cut
 
 */
@@ -167,7 +169,7 @@
         switch (*pc) {
 #    endif
 
-#    define CASE(x)         case OP_ ## (x):
+#    define CASE(x)         case OP_##x:
 #    define NEXT            continue;
 #    define DONE            return;
 #    define ENDDISPATCH     default : printf("illegal instruction"); \
@@ -228,11 +230,11 @@
 
 #ifdef FUNC_CORE
 #  define DEF_OP(op) \
-    interp->op_func[OP_ ## op] = (op); \
-    interp->op_info[OP_ ## op] = #op
+    interp->op_func[OP_##op] = (op); \
+    interp->op_info[OP_##op] = #op
 #else
 #  define DEF_OP(op) \
-    interp->op_info[OP_ ## op] = #op
+    interp->op_info[OP_##op] = #op
 #endif
 
 /*
@@ -287,6 +289,8 @@
 
 =item C<int main(int argc, char *argv[])>
 
+Initialize a minimal Parrotesque interpreter and run some hard-coded bytecode.
+
 =cut
 
 */

Modified: branches/sys_mem_reduce/examples/c/pbc_info.c
==============================================================================
--- branches/sys_mem_reduce/examples/c/pbc_info.c	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/examples/c/pbc_info.c	Sat Feb 20 22:12:51 2010	(r44252)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2003, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -27,6 +27,8 @@
 #include "parrot/embed.h"
 
 /*
+=item C<static INTVAL iter(PARROT_INTERP, PackFile_Segment *seg, void
+*user_data)>
 
 =item C<static INTVAL iter(PARROT_INTERP, PackFile_Segment *seg, void *user_data)>
 

Modified: branches/sys_mem_reduce/examples/embed/cotorra.c
==============================================================================
--- branches/sys_mem_reduce/examples/embed/cotorra.c	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/examples/embed/cotorra.c	Sat Feb 20 22:12:51 2010	(r44252)
@@ -203,7 +203,7 @@
         Parrot_String compiler = create_string(interp, "PIR");
         Parrot_String errstr;
         Parrot_PMC code = Parrot_compile_string(interp, compiler, exec, &errstr);
-        void *discard = Parrot_call_sub(interp, code, "v");
+        Parrot_ext_call(interp, code, "->");
         return 0;
     }
 
@@ -224,8 +224,7 @@
         Parrot_PMC parrotns = Parrot_PMC_get_pmc_strkey(interp, rootns, parrotname);
         Parrot_String name = create_string(interp, stname);
         Parrot_PMC start = Parrot_PMC_get_pmc_strkey(interp, parrotns, name);
-        void *discard;
-        discard = Parrot_call_sub(interp, start, "v");
+        Parrot_ext_call(interp, start, "->");
     }
     else {
         Parrot_runcode(interp, argc - i, argv + i);

Modified: branches/sys_mem_reduce/examples/nci/QtHelloWorld.pasm
==============================================================================
--- branches/sys_mem_reduce/examples/nci/QtHelloWorld.pasm	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/examples/nci/QtHelloWorld.pasm	Sat Feb 20 22:12:51 2010	(r44252)
@@ -21,7 +21,8 @@
 
 Note that this will either need JIT for building the NCI-functions on
 the fly. If this is not available try adding missing signatures to
-F<src/call_list.txt> and rebuilding Parrot.
+F<src/nci/extra_thunks.nci>, running F<tools/dev/mk_nci_thunks.pl>, and
+rebuilding Parrot.
 
 =cut
 

Modified: branches/sys_mem_reduce/examples/nci/QtHelloWorld.pir
==============================================================================
--- branches/sys_mem_reduce/examples/nci/QtHelloWorld.pir	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/examples/nci/QtHelloWorld.pir	Sat Feb 20 22:12:51 2010	(r44252)
@@ -21,7 +21,8 @@
 
 Note that this will either need JIT for building the NCI-functions on
 the fly. If this is not available try adding missing signatures to
-F<src/call_list.txt> and rebuilding Parrot.
+F<src/nci/extra_thunks.nci>, running F<tools/dev/mk_nci_thunks.pl>, and
+rebuilding Parrot.
 
 =cut
 .sub main

Modified: branches/sys_mem_reduce/examples/pir/make_hello_pbc.pir
==============================================================================
--- branches/sys_mem_reduce/examples/pir/make_hello_pbc.pir	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/examples/pir/make_hello_pbc.pir	Sat Feb 20 22:12:51 2010	(r44252)
@@ -2,7 +2,7 @@
 #$Id$
 # Sample creating of "Hello World" program using Packfile PMCs.
 .sub 'main'
-    .local pmc pf, pfdir, pffixup, pfbc, pfconst
+    .local pmc pf, pfdir, pffixup, pfbc, pfconst, oplib
 
     # Hello World is something like
     # .sub 'hello'
@@ -40,15 +40,19 @@
 
     # Generate bytecode
     pfbc = new 'PackfileRawSegment'
+    oplib = new 'OpLib'
 
-    # There is our function
-    pfbc[0] = 0x1d1 # say_sc
+    # Here is our function
+    $I0 = oplib['say_sc']
+    pfbc[0] = $I0
     pfbc[1] = 0x002 # constant id.
 
-    pfbc[2] = 0x026 # set_return_pc
+    $I0 = oplib['set_returns_pc']
+    pfbc[2] = $I0
     pfbc[3] = 0x001 # id of FIA
 
-    pfbc[4] = 0x020 # returncc
+    $I0 = oplib['returncc']
+    pfbc[4] = $I0
 
     # Store bytecode
     pfdir['BYTECODE_hello.pir'] = pfbc

Modified: branches/sys_mem_reduce/examples/sdl/anim_image.pir
==============================================================================
--- branches/sys_mem_reduce/examples/sdl/anim_image.pir	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/examples/sdl/anim_image.pir	Sat Feb 20 22:12:51 2010	(r44252)
@@ -96,7 +96,7 @@
     .local pmc rect
 
     .local pmc rect_array
-    rect_array = new 'Array'
+    rect_array = new 'ResizablePMCArray'
     set rect_array, 2
 
 _loop:

Modified: branches/sys_mem_reduce/examples/sdl/bounce_parrot_logo.pir
==============================================================================
--- branches/sys_mem_reduce/examples/sdl/bounce_parrot_logo.pir	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/examples/sdl/bounce_parrot_logo.pir	Sat Feb 20 22:12:51 2010	(r44252)
@@ -176,7 +176,7 @@
     .local pmc prev_rect
     .local pmc rect
     .local pmc rect_array
-    rect_array = new 'Array'
+    rect_array = new 'ResizablePMCArray'
     set rect_array, 2
 
     (prev_rect, rect) = sprite.'draw_undraw'( screen )

Modified: branches/sys_mem_reduce/examples/sdl/move_parrot_logo.pir
==============================================================================
--- branches/sys_mem_reduce/examples/sdl/move_parrot_logo.pir	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/examples/sdl/move_parrot_logo.pir	Sat Feb 20 22:12:51 2010	(r44252)
@@ -91,7 +91,7 @@
 	.local pmc prev_rect
 	.local pmc rect
 	.local pmc rect_array
-	rect_array = new 'Array'
+	rect_array = new 'ResizablePMCArray'
 	set rect_array, 2
 
 	(prev_rect, rect) = sprite.'draw_undraw'( screen )

Modified: branches/sys_mem_reduce/ext/nqp-rx/src/stage0/HLL-s0.pir
==============================================================================
--- branches/sys_mem_reduce/ext/nqp-rx/src/stage0/HLL-s0.pir	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/ext/nqp-rx/src/stage0/HLL-s0.pir	Sat Feb 20 22:12:51 2010	(r44252)
@@ -854,7 +854,7 @@
 ### .include 'gen/hllgrammar-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1261064003.48945")
+.sub "_block11"  :anon :subid("10_1266337337.07931")
 .annotate "line", 0
     get_hll_global $P14, ["HLL";"Grammar"], "_block13" 
     capture_lex $P14
@@ -868,9 +868,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post94") :outer("10_1261064003.48945")
+.sub "" :load :init :subid("post94") :outer("10_1266337337.07931")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1261064003.48945" 
+    .const 'Sub' $P12 = "10_1266337337.07931" 
     .local pmc block
     set block, $P12
     $P297 = get_root_global ["parrot"], "P6metaclass"
@@ -879,78 +879,78 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block13"  :subid("11_1261064003.48945") :outer("10_1261064003.48945")
+.sub "_block13"  :subid("11_1266337337.07931") :outer("10_1266337337.07931")
 .annotate "line", 5
-    .const 'Sub' $P286 = "92_1261064003.48945" 
+    .const 'Sub' $P286 = "92_1266337337.07931" 
     capture_lex $P286
-    .const 'Sub' $P279 = "90_1261064003.48945" 
+    .const 'Sub' $P279 = "90_1266337337.07931" 
     capture_lex $P279
-    .const 'Sub' $P266 = "87_1261064003.48945" 
+    .const 'Sub' $P266 = "87_1266337337.07931" 
     capture_lex $P266
-    .const 'Sub' $P261 = "85_1261064003.48945" 
+    .const 'Sub' $P261 = "85_1266337337.07931" 
     capture_lex $P261
-    .const 'Sub' $P255 = "83_1261064003.48945" 
+    .const 'Sub' $P255 = "83_1266337337.07931" 
     capture_lex $P255
-    .const 'Sub' $P249 = "81_1261064003.48945" 
+    .const 'Sub' $P249 = "81_1266337337.07931" 
     capture_lex $P249
-    .const 'Sub' $P244 = "79_1261064003.48945" 
+    .const 'Sub' $P244 = "79_1266337337.07931" 
     capture_lex $P244
-    .const 'Sub' $P239 = "77_1261064003.48945" 
+    .const 'Sub' $P239 = "77_1266337337.07931" 
     capture_lex $P239
-    .const 'Sub' $P234 = "75_1261064003.48945" 
+    .const 'Sub' $P234 = "75_1266337337.07931" 
     capture_lex $P234
-    .const 'Sub' $P229 = "73_1261064003.48945" 
+    .const 'Sub' $P229 = "73_1266337337.07931" 
     capture_lex $P229
-    .const 'Sub' $P224 = "71_1261064003.48945" 
+    .const 'Sub' $P224 = "71_1266337337.07931" 
     capture_lex $P224
-    .const 'Sub' $P219 = "69_1261064003.48945" 
+    .const 'Sub' $P219 = "69_1266337337.07931" 
     capture_lex $P219
-    .const 'Sub' $P208 = "65_1261064003.48945" 
+    .const 'Sub' $P208 = "65_1266337337.07931" 
     capture_lex $P208
-    .const 'Sub' $P195 = "63_1261064003.48945" 
+    .const 'Sub' $P195 = "63_1266337337.07931" 
     capture_lex $P195
-    .const 'Sub' $P183 = "61_1261064003.48945" 
+    .const 'Sub' $P183 = "61_1266337337.07931" 
     capture_lex $P183
-    .const 'Sub' $P176 = "59_1261064003.48945" 
+    .const 'Sub' $P176 = "59_1266337337.07931" 
     capture_lex $P176
-    .const 'Sub' $P167 = "57_1261064003.48945" 
+    .const 'Sub' $P167 = "57_1266337337.07931" 
     capture_lex $P167
-    .const 'Sub' $P160 = "55_1261064003.48945" 
+    .const 'Sub' $P160 = "55_1266337337.07931" 
     capture_lex $P160
-    .const 'Sub' $P151 = "53_1261064003.48945" 
+    .const 'Sub' $P151 = "53_1266337337.07931" 
     capture_lex $P151
-    .const 'Sub' $P144 = "51_1261064003.48945" 
+    .const 'Sub' $P144 = "51_1266337337.07931" 
     capture_lex $P144
-    .const 'Sub' $P135 = "49_1261064003.48945" 
+    .const 'Sub' $P135 = "49_1266337337.07931" 
     capture_lex $P135
-    .const 'Sub' $P128 = "47_1261064003.48945" 
+    .const 'Sub' $P128 = "47_1266337337.07931" 
     capture_lex $P128
-    .const 'Sub' $P121 = "45_1261064003.48945" 
+    .const 'Sub' $P121 = "45_1266337337.07931" 
     capture_lex $P121
-    .const 'Sub' $P111 = "43_1261064003.48945" 
+    .const 'Sub' $P111 = "43_1266337337.07931" 
     capture_lex $P111
-    .const 'Sub' $P103 = "41_1261064003.48945" 
+    .const 'Sub' $P103 = "41_1266337337.07931" 
     capture_lex $P103
-    .const 'Sub' $P93 = "40_1261064003.48945" 
+    .const 'Sub' $P93 = "40_1266337337.07931" 
     capture_lex $P93
-    .const 'Sub' $P87 = "38_1261064003.48945" 
+    .const 'Sub' $P87 = "38_1266337337.07931" 
     capture_lex $P87
-    .const 'Sub' $P82 = "36_1261064003.48945" 
+    .const 'Sub' $P82 = "36_1266337337.07931" 
     capture_lex $P82
-    .const 'Sub' $P74 = "34_1261064003.48945" 
+    .const 'Sub' $P74 = "34_1266337337.07931" 
     capture_lex $P74
-    .const 'Sub' $P68 = "32_1261064003.48945" 
+    .const 'Sub' $P68 = "32_1266337337.07931" 
     capture_lex $P68
-    .const 'Sub' $P62 = "30_1261064003.48945" 
+    .const 'Sub' $P62 = "30_1266337337.07931" 
     capture_lex $P62
-    .const 'Sub' $P56 = "28_1261064003.48945" 
+    .const 'Sub' $P56 = "28_1266337337.07931" 
     capture_lex $P56
-    .const 'Sub' $P23 = "14_1261064003.48945" 
+    .const 'Sub' $P23 = "14_1266337337.07931" 
     capture_lex $P23
-    .const 'Sub' $P15 = "12_1261064003.48945" 
+    .const 'Sub' $P15 = "12_1266337337.07931" 
     capture_lex $P15
 .annotate "line", 33
-    .const 'Sub' $P286 = "92_1261064003.48945" 
+    .const 'Sub' $P286 = "92_1266337337.07931" 
     capture_lex $P286
 .annotate "line", 5
     .return ($P286)
@@ -958,7 +958,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "ws"  :subid("12_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "ws"  :subid("12_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 5
     .local string rx16_tgt
     .local int rx16_pos
@@ -1042,7 +1042,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__ws"  :subid("13_1261064003.48945") :method
+.sub "!PREFIX__ws"  :subid("13_1266337337.07931") :method
 .annotate "line", 5
     new $P18, "ResizablePMCArray"
     push $P18, ""
@@ -1051,7 +1051,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "termish"  :subid("14_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "termish"  :subid("14_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 5
     .local string rx24_tgt
     .local int rx24_pos
@@ -1061,7 +1061,7 @@
     .local pmc rx24_cur
     (rx24_cur, rx24_pos, rx24_tgt) = self."!cursor_start"()
     rx24_cur."!cursor_debug"("START ", "termish")
-    rx24_cur."!cursor_caparray"("prefixish", "postfixish")
+    rx24_cur."!cursor_caparray"("postfixish", "prefixish")
     .lex unicode:"$\x{a2}", rx24_cur
     .local pmc match
     .lex "$/", match
@@ -1143,7 +1143,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__termish"  :subid("15_1261064003.48945") :method
+.sub "!PREFIX__termish"  :subid("15_1266337337.07931") :method
 .annotate "line", 5
     new $P26, "ResizablePMCArray"
     push $P26, ""
@@ -1152,7 +1152,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "term"  :subid("16_1261064003.48945") :method
+.sub "term"  :subid("16_1266337337.07931") :method
 .annotate "line", 13
     $P33 = self."!protoregex"("term")
     .return ($P33)
@@ -1160,7 +1160,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term"  :subid("17_1261064003.48945") :method
+.sub "!PREFIX__term"  :subid("17_1266337337.07931") :method
 .annotate "line", 13
     $P35 = self."!PREFIX__!protoregex"("term")
     .return ($P35)
@@ -1168,7 +1168,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "infix"  :subid("18_1261064003.48945") :method
+.sub "infix"  :subid("18_1266337337.07931") :method
 .annotate "line", 14
     $P37 = self."!protoregex"("infix")
     .return ($P37)
@@ -1176,7 +1176,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infix"  :subid("19_1261064003.48945") :method
+.sub "!PREFIX__infix"  :subid("19_1266337337.07931") :method
 .annotate "line", 14
     $P39 = self."!PREFIX__!protoregex"("infix")
     .return ($P39)
@@ -1184,7 +1184,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "prefix"  :subid("20_1261064003.48945") :method
+.sub "prefix"  :subid("20_1266337337.07931") :method
 .annotate "line", 15
     $P41 = self."!protoregex"("prefix")
     .return ($P41)
@@ -1192,7 +1192,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefix"  :subid("21_1261064003.48945") :method
+.sub "!PREFIX__prefix"  :subid("21_1266337337.07931") :method
 .annotate "line", 15
     $P43 = self."!PREFIX__!protoregex"("prefix")
     .return ($P43)
@@ -1200,7 +1200,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postfix"  :subid("22_1261064003.48945") :method
+.sub "postfix"  :subid("22_1266337337.07931") :method
 .annotate "line", 16
     $P45 = self."!protoregex"("postfix")
     .return ($P45)
@@ -1208,7 +1208,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfix"  :subid("23_1261064003.48945") :method
+.sub "!PREFIX__postfix"  :subid("23_1266337337.07931") :method
 .annotate "line", 16
     $P47 = self."!PREFIX__!protoregex"("postfix")
     .return ($P47)
@@ -1216,7 +1216,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "circumfix"  :subid("24_1261064003.48945") :method
+.sub "circumfix"  :subid("24_1266337337.07931") :method
 .annotate "line", 17
     $P49 = self."!protoregex"("circumfix")
     .return ($P49)
@@ -1224,7 +1224,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__circumfix"  :subid("25_1261064003.48945") :method
+.sub "!PREFIX__circumfix"  :subid("25_1266337337.07931") :method
 .annotate "line", 17
     $P51 = self."!PREFIX__!protoregex"("circumfix")
     .return ($P51)
@@ -1232,7 +1232,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postcircumfix"  :subid("26_1261064003.48945") :method
+.sub "postcircumfix"  :subid("26_1266337337.07931") :method
 .annotate "line", 18
     $P53 = self."!protoregex"("postcircumfix")
     .return ($P53)
@@ -1240,7 +1240,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postcircumfix"  :subid("27_1261064003.48945") :method
+.sub "!PREFIX__postcircumfix"  :subid("27_1266337337.07931") :method
 .annotate "line", 18
     $P55 = self."!PREFIX__!protoregex"("postcircumfix")
     .return ($P55)
@@ -1248,7 +1248,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "term:sym<circumfix>"  :subid("28_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "term:sym<circumfix>"  :subid("28_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 5
     .local string rx57_tgt
     .local int rx57_pos
@@ -1306,7 +1306,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term:sym<circumfix>"  :subid("29_1261064003.48945") :method
+.sub "!PREFIX__term:sym<circumfix>"  :subid("29_1266337337.07931") :method
 .annotate "line", 5
     $P59 = self."!PREFIX__!subrule"("circumfix", "")
     new $P60, "ResizablePMCArray"
@@ -1316,7 +1316,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "infixish"  :subid("30_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "infixish"  :subid("30_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 5
     .local string rx63_tgt
     .local int rx63_pos
@@ -1374,7 +1374,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infixish"  :subid("31_1261064003.48945") :method
+.sub "!PREFIX__infixish"  :subid("31_1266337337.07931") :method
 .annotate "line", 5
     $P65 = self."!PREFIX__!subrule"("OPER=infix", "")
     new $P66, "ResizablePMCArray"
@@ -1384,7 +1384,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "prefixish"  :subid("32_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "prefixish"  :subid("32_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 5
     .local string rx69_tgt
     .local int rx69_pos
@@ -1447,7 +1447,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefixish"  :subid("33_1261064003.48945") :method
+.sub "!PREFIX__prefixish"  :subid("33_1266337337.07931") :method
 .annotate "line", 5
     $P71 = self."!PREFIX__!subrule"("OPER=prefix", "")
     new $P72, "ResizablePMCArray"
@@ -1457,7 +1457,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postfixish"  :subid("34_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "postfixish"  :subid("34_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 5
     .local string rx75_tgt
     .local int rx75_pos
@@ -1531,7 +1531,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfixish"  :subid("35_1261064003.48945") :method
+.sub "!PREFIX__postfixish"  :subid("35_1266337337.07931") :method
 .annotate "line", 5
     $P77 = self."!PREFIX__!subrule"("OPER=postcircumfix", "")
     $P78 = self."!PREFIX__!subrule"("OPER=postfix", "")
@@ -1543,7 +1543,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nullterm"  :subid("36_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "nullterm"  :subid("36_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 5
     .local string rx83_tgt
     .local int rx83_pos
@@ -1594,7 +1594,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm"  :subid("37_1261064003.48945") :method
+.sub "!PREFIX__nullterm"  :subid("37_1266337337.07931") :method
 .annotate "line", 5
     new $P85, "ResizablePMCArray"
     push $P85, ""
@@ -1603,7 +1603,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nullterm_alt"  :subid("38_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "nullterm_alt"  :subid("38_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 5
     .local string rx88_tgt
     .local int rx88_pos
@@ -1661,7 +1661,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm_alt"  :subid("39_1261064003.48945") :method
+.sub "!PREFIX__nullterm_alt"  :subid("39_1266337337.07931") :method
 .annotate "line", 5
     $P90 = self."!PREFIX__!subrule"("term", "")
     new $P91, "ResizablePMCArray"
@@ -1671,7 +1671,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nulltermish"  :subid("40_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "nulltermish"  :subid("40_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     new $P95, 'ExceptionHandler'
     set_addr $P95, control_94
@@ -1698,7 +1698,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_delimited"  :subid("41_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_delimited"  :subid("41_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx104_tgt
     .local int rx104_pos
@@ -1780,7 +1780,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_delimited"  :subid("42_1261064003.48945") :method
+.sub "!PREFIX__quote_delimited"  :subid("42_1266337337.07931") :method
 .annotate "line", 33
     $P106 = self."!PREFIX__!subrule"("starter", "")
     new $P107, "ResizablePMCArray"
@@ -1790,7 +1790,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_atom"  :subid("43_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_atom"  :subid("43_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx112_tgt
     .local int rx112_pos
@@ -1881,7 +1881,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_atom"  :subid("44_1261064003.48945") :method
+.sub "!PREFIX__quote_atom"  :subid("44_1266337337.07931") :method
 .annotate "line", 33
     new $P114, "ResizablePMCArray"
     push $P114, ""
@@ -1890,7 +1890,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "decint"  :subid("45_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "decint"  :subid("45_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx122_tgt
     .local int rx122_pos
@@ -1962,7 +1962,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__decint"  :subid("46_1261064003.48945") :method
+.sub "!PREFIX__decint"  :subid("46_1266337337.07931") :method
 .annotate "line", 33
     new $P124, "ResizablePMCArray"
     push $P124, ""
@@ -1971,7 +1971,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "hexints"  :subid("47_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "hexints"  :subid("47_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx129_tgt
     .local int rx129_pos
@@ -2055,7 +2055,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexints"  :subid("48_1261064003.48945") :method
+.sub "!PREFIX__hexints"  :subid("48_1266337337.07931") :method
 .annotate "line", 33
     new $P131, "ResizablePMCArray"
     push $P131, ""
@@ -2064,7 +2064,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "hexint"  :subid("49_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "hexint"  :subid("49_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx136_tgt
     .local int rx136_pos
@@ -2145,7 +2145,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexint"  :subid("50_1261064003.48945") :method
+.sub "!PREFIX__hexint"  :subid("50_1266337337.07931") :method
 .annotate "line", 33
     new $P138, "ResizablePMCArray"
     push $P138, ""
@@ -2154,7 +2154,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "hexints"  :subid("51_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "hexints"  :subid("51_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx145_tgt
     .local int rx145_pos
@@ -2238,7 +2238,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexints"  :subid("52_1261064003.48945") :method
+.sub "!PREFIX__hexints"  :subid("52_1266337337.07931") :method
 .annotate "line", 33
     new $P147, "ResizablePMCArray"
     push $P147, ""
@@ -2247,7 +2247,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "octint"  :subid("53_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "octint"  :subid("53_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx152_tgt
     .local int rx152_pos
@@ -2328,7 +2328,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octint"  :subid("54_1261064003.48945") :method
+.sub "!PREFIX__octint"  :subid("54_1266337337.07931") :method
 .annotate "line", 33
     new $P154, "ResizablePMCArray"
     push $P154, ""
@@ -2337,7 +2337,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "octints"  :subid("55_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "octints"  :subid("55_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx161_tgt
     .local int rx161_pos
@@ -2421,7 +2421,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octints"  :subid("56_1261064003.48945") :method
+.sub "!PREFIX__octints"  :subid("56_1266337337.07931") :method
 .annotate "line", 33
     new $P163, "ResizablePMCArray"
     push $P163, ""
@@ -2430,7 +2430,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "binint"  :subid("57_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "binint"  :subid("57_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx168_tgt
     .local int rx168_pos
@@ -2511,7 +2511,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binint"  :subid("58_1261064003.48945") :method
+.sub "!PREFIX__binint"  :subid("58_1266337337.07931") :method
 .annotate "line", 33
     new $P170, "ResizablePMCArray"
     push $P170, ""
@@ -2520,7 +2520,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "binints"  :subid("59_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "binints"  :subid("59_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx177_tgt
     .local int rx177_pos
@@ -2604,7 +2604,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binints"  :subid("60_1261064003.48945") :method
+.sub "!PREFIX__binints"  :subid("60_1266337337.07931") :method
 .annotate "line", 33
     new $P179, "ResizablePMCArray"
     push $P179, ""
@@ -2613,7 +2613,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "integer"  :subid("61_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "integer"  :subid("61_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx184_tgt
     .local int rx184_pos
@@ -2761,7 +2761,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__integer"  :subid("62_1261064003.48945") :method
+.sub "!PREFIX__integer"  :subid("62_1266337337.07931") :method
 .annotate "line", 33
     $P186 = self."!PREFIX__!subrule"("VALUE=decint", "")
     $P187 = self."!PREFIX__!subrule"("VALUE=decint", "0d")
@@ -2779,7 +2779,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "dec_number"  :subid("63_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "dec_number"  :subid("63_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx196_tgt
     .local int rx196_pos
@@ -2958,7 +2958,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__dec_number"  :subid("64_1261064003.48945") :method
+.sub "!PREFIX__dec_number"  :subid("64_1266337337.07931") :method
 .annotate "line", 33
     new $P198, "ResizablePMCArray"
     push $P198, ""
@@ -2969,7 +2969,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "escale"  :subid("65_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "escale"  :subid("65_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx209_tgt
     .local int rx209_pos
@@ -3046,7 +3046,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__escale"  :subid("66_1261064003.48945") :method
+.sub "!PREFIX__escale"  :subid("66_1266337337.07931") :method
 .annotate "line", 33
     new $P211, "ResizablePMCArray"
     push $P211, "e"
@@ -3056,7 +3056,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape"  :subid("67_1261064003.48945") :method
+.sub "quote_escape"  :subid("67_1266337337.07931") :method
 .annotate "line", 79
     $P216 = self."!protoregex"("quote_escape")
     .return ($P216)
@@ -3064,7 +3064,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape"  :subid("68_1261064003.48945") :method
+.sub "!PREFIX__quote_escape"  :subid("68_1266337337.07931") :method
 .annotate "line", 79
     $P218 = self."!PREFIX__!protoregex"("quote_escape")
     .return ($P218)
@@ -3072,7 +3072,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<backslash>"  :subid("69_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_escape:sym<backslash>"  :subid("69_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx220_tgt
     .local int rx220_pos
@@ -3134,7 +3134,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<backslash>"  :subid("70_1261064003.48945") :method
+.sub "!PREFIX__quote_escape:sym<backslash>"  :subid("70_1266337337.07931") :method
 .annotate "line", 33
     new $P222, "ResizablePMCArray"
     push $P222, "\\\\"
@@ -3143,7 +3143,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<stopper>"  :subid("71_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_escape:sym<stopper>"  :subid("71_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx225_tgt
     .local int rx225_pos
@@ -3212,7 +3212,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<stopper>"  :subid("72_1261064003.48945") :method
+.sub "!PREFIX__quote_escape:sym<stopper>"  :subid("72_1266337337.07931") :method
 .annotate "line", 33
     new $P227, "ResizablePMCArray"
     push $P227, "\\"
@@ -3221,7 +3221,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<bs>"  :subid("73_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_escape:sym<bs>"  :subid("73_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx230_tgt
     .local int rx230_pos
@@ -3283,7 +3283,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<bs>"  :subid("74_1261064003.48945") :method
+.sub "!PREFIX__quote_escape:sym<bs>"  :subid("74_1266337337.07931") :method
 .annotate "line", 33
     new $P232, "ResizablePMCArray"
     push $P232, "\\b"
@@ -3292,7 +3292,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<nl>"  :subid("75_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_escape:sym<nl>"  :subid("75_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx235_tgt
     .local int rx235_pos
@@ -3354,7 +3354,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<nl>"  :subid("76_1261064003.48945") :method
+.sub "!PREFIX__quote_escape:sym<nl>"  :subid("76_1266337337.07931") :method
 .annotate "line", 33
     new $P237, "ResizablePMCArray"
     push $P237, "\\n"
@@ -3363,7 +3363,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<cr>"  :subid("77_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_escape:sym<cr>"  :subid("77_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx240_tgt
     .local int rx240_pos
@@ -3425,7 +3425,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<cr>"  :subid("78_1261064003.48945") :method
+.sub "!PREFIX__quote_escape:sym<cr>"  :subid("78_1266337337.07931") :method
 .annotate "line", 33
     new $P242, "ResizablePMCArray"
     push $P242, "\\r"
@@ -3434,7 +3434,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<tab>"  :subid("79_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_escape:sym<tab>"  :subid("79_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx245_tgt
     .local int rx245_pos
@@ -3496,7 +3496,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<tab>"  :subid("80_1261064003.48945") :method
+.sub "!PREFIX__quote_escape:sym<tab>"  :subid("80_1266337337.07931") :method
 .annotate "line", 33
     new $P247, "ResizablePMCArray"
     push $P247, "\\t"
@@ -3505,7 +3505,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<hex>"  :subid("81_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_escape:sym<hex>"  :subid("81_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx250_tgt
     .local int rx250_pos
@@ -3603,7 +3603,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<hex>"  :subid("82_1261064003.48945") :method
+.sub "!PREFIX__quote_escape:sym<hex>"  :subid("82_1266337337.07931") :method
 .annotate "line", 33
     new $P252, "ResizablePMCArray"
     push $P252, unicode:"\\x"
@@ -3612,7 +3612,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<oct>"  :subid("83_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_escape:sym<oct>"  :subid("83_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx256_tgt
     .local int rx256_pos
@@ -3710,7 +3710,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<oct>"  :subid("84_1261064003.48945") :method
+.sub "!PREFIX__quote_escape:sym<oct>"  :subid("84_1266337337.07931") :method
 .annotate "line", 33
     new $P258, "ResizablePMCArray"
     push $P258, "\\o"
@@ -3719,7 +3719,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<chr>"  :subid("85_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "quote_escape:sym<chr>"  :subid("85_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx262_tgt
     .local int rx262_pos
@@ -3788,7 +3788,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<chr>"  :subid("86_1261064003.48945") :method
+.sub "!PREFIX__quote_escape:sym<chr>"  :subid("86_1266337337.07931") :method
 .annotate "line", 33
     new $P264, "ResizablePMCArray"
     push $P264, "\\c"
@@ -3797,9 +3797,9 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charname"  :subid("87_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "charname"  :subid("87_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
-    .const 'Sub' $P276 = "89_1261064003.48945" 
+    .const 'Sub' $P276 = "89_1266337337.07931" 
     capture_lex $P276
     .local string rx267_tgt
     .local int rx267_pos
@@ -3877,7 +3877,7 @@
 .annotate "line", 100
   # rx subrule "before" subtype=zerowidth negate=
     rx267_cur."!cursor_pos"(rx267_pos)
-    .const 'Sub' $P276 = "89_1261064003.48945" 
+    .const 'Sub' $P276 = "89_1266337337.07931" 
     capture_lex $P276
     $P10 = rx267_cur."before"($P276)
     unless $P10, rx267_fail
@@ -3902,7 +3902,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charname"  :subid("88_1261064003.48945") :method
+.sub "!PREFIX__charname"  :subid("88_1266337337.07931") :method
 .annotate "line", 33
     $P269 = self."!PREFIX__!subrule"("integer", "")
     new $P270, "ResizablePMCArray"
@@ -3964,7 +3964,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block275"  :anon :subid("89_1261064003.48945") :method :outer("87_1261064003.48945")
+.sub "_block275"  :anon :subid("89_1266337337.07931") :method :outer("87_1266337337.07931")
 .annotate "line", 100
     .local string rx277_tgt
     .local int rx277_pos
@@ -4024,7 +4024,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charnames"  :subid("90_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "charnames"  :subid("90_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx280_tgt
     .local int rx280_pos
@@ -4108,7 +4108,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charnames"  :subid("91_1261064003.48945") :method
+.sub "!PREFIX__charnames"  :subid("91_1266337337.07931") :method
 .annotate "line", 33
     new $P282, "ResizablePMCArray"
     push $P282, ""
@@ -4117,7 +4117,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charspec"  :subid("92_1261064003.48945") :method :outer("11_1261064003.48945")
+.sub "charspec"  :subid("92_1266337337.07931") :method :outer("11_1266337337.07931")
 .annotate "line", 33
     .local string rx287_tgt
     .local int rx287_pos
@@ -4247,7 +4247,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charspec"  :subid("93_1261064003.48945") :method
+.sub "!PREFIX__charspec"  :subid("93_1266337337.07931") :method
 .annotate "line", 33
     $P289 = self."!PREFIX__!subrule"("", "")
     $P290 = self."!PREFIX__!subrule"("charnames", "[")
@@ -4289,91 +4289,99 @@
 ### .include 'gen/hllgrammar-actions.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1261064005.70696")
+.sub "_block11"  :anon :subid("10_1266337339.18354")
 .annotate "line", 0
     get_hll_global $P14, ["HLL";"Actions"], "_block13" 
     capture_lex $P14
 .annotate "line", 3
     get_hll_global $P14, ["HLL";"Actions"], "_block13" 
     capture_lex $P14
-    $P451 = $P14()
+    $P534 = $P14()
 .annotate "line", 1
-    .return ($P451)
+    .return ($P534)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post41") :outer("10_1261064005.70696")
+.sub "" :load :init :subid("post46") :outer("10_1266337339.18354")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1261064005.70696" 
+    .const 'Sub' $P12 = "10_1266337339.18354" 
     .local pmc block
     set block, $P12
-    $P452 = get_root_global ["parrot"], "P6metaclass"
-    $P452."new_class"("HLL::Actions")
+    $P535 = get_root_global ["parrot"], "P6metaclass"
+    $P535."new_class"("HLL::Actions")
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block13"  :subid("11_1261064005.70696") :outer("10_1261064005.70696")
+.sub "_block13"  :subid("11_1266337339.18354") :outer("10_1266337339.18354")
 .annotate "line", 3
-    .const 'Sub' $P434 = "40_1261064005.70696" 
+    .const 'Sub' $P517 = "45_1266337339.18354" 
+    capture_lex $P517
+    .const 'Sub' $P492 = "43_1266337339.18354" 
+    capture_lex $P492
+    .const 'Sub' $P461 = "42_1266337339.18354" 
+    capture_lex $P461
+    .const 'Sub' $P451 = "41_1266337339.18354" 
+    capture_lex $P451
+    .const 'Sub' $P434 = "40_1266337339.18354" 
     capture_lex $P434
-    .const 'Sub' $P417 = "39_1261064005.70696" 
+    .const 'Sub' $P417 = "39_1266337339.18354" 
     capture_lex $P417
-    .const 'Sub' $P410 = "38_1261064005.70696" 
+    .const 'Sub' $P410 = "38_1266337339.18354" 
     capture_lex $P410
-    .const 'Sub' $P403 = "37_1261064005.70696" 
+    .const 'Sub' $P403 = "37_1266337339.18354" 
     capture_lex $P403
-    .const 'Sub' $P396 = "36_1261064005.70696" 
+    .const 'Sub' $P396 = "36_1266337339.18354" 
     capture_lex $P396
-    .const 'Sub' $P389 = "35_1261064005.70696" 
+    .const 'Sub' $P389 = "35_1266337339.18354" 
     capture_lex $P389
-    .const 'Sub' $P379 = "34_1261064005.70696" 
+    .const 'Sub' $P379 = "34_1266337339.18354" 
     capture_lex $P379
-    .const 'Sub' $P372 = "33_1261064005.70696" 
+    .const 'Sub' $P372 = "33_1266337339.18354" 
     capture_lex $P372
-    .const 'Sub' $P356 = "32_1261064005.70696" 
+    .const 'Sub' $P356 = "32_1266337339.18354" 
     capture_lex $P356
-    .const 'Sub' $P281 = "30_1261064005.70696" 
+    .const 'Sub' $P281 = "30_1266337339.18354" 
     capture_lex $P281
-    .const 'Sub' $P222 = "27_1261064005.70696" 
+    .const 'Sub' $P222 = "27_1266337339.18354" 
     capture_lex $P222
-    .const 'Sub' $P213 = "26_1261064005.70696" 
+    .const 'Sub' $P213 = "26_1266337339.18354" 
     capture_lex $P213
-    .const 'Sub' $P204 = "25_1261064005.70696" 
+    .const 'Sub' $P204 = "25_1266337339.18354" 
     capture_lex $P204
-    .const 'Sub' $P195 = "24_1261064005.70696" 
+    .const 'Sub' $P195 = "24_1266337339.18354" 
     capture_lex $P195
-    .const 'Sub' $P186 = "23_1261064005.70696" 
+    .const 'Sub' $P186 = "23_1266337339.18354" 
     capture_lex $P186
-    .const 'Sub' $P177 = "22_1261064005.70696" 
+    .const 'Sub' $P177 = "22_1266337339.18354" 
     capture_lex $P177
-    .const 'Sub' $P167 = "21_1261064005.70696" 
+    .const 'Sub' $P167 = "21_1266337339.18354" 
     capture_lex $P167
-    .const 'Sub' $P157 = "20_1261064005.70696" 
+    .const 'Sub' $P157 = "20_1266337339.18354" 
     capture_lex $P157
-    .const 'Sub' $P149 = "19_1261064005.70696" 
+    .const 'Sub' $P149 = "19_1266337339.18354" 
     capture_lex $P149
-    .const 'Sub' $P139 = "18_1261064005.70696" 
+    .const 'Sub' $P139 = "18_1266337339.18354" 
     capture_lex $P139
-    .const 'Sub' $P129 = "17_1261064005.70696" 
+    .const 'Sub' $P129 = "17_1266337339.18354" 
     capture_lex $P129
-    .const 'Sub' $P28 = "14_1261064005.70696" 
+    .const 'Sub' $P28 = "14_1266337339.18354" 
     capture_lex $P28
-    .const 'Sub' $P22 = "13_1261064005.70696" 
+    .const 'Sub' $P22 = "13_1266337339.18354" 
     capture_lex $P22
-    .const 'Sub' $P15 = "12_1261064005.70696" 
+    .const 'Sub' $P15 = "12_1266337339.18354" 
     capture_lex $P15
-.annotate "line", 163
-    .const 'Sub' $P434 = "40_1261064005.70696" 
-    capture_lex $P434
+.annotate "line", 185
+    .const 'Sub' $P517 = "45_1266337339.18354" 
+    capture_lex $P517
 .annotate "line", 3
-    .return ($P434)
+    .return ($P517)
 .end
 
 
 .namespace ["HLL";"Actions"]
-.sub "string_to_int"  :subid("12_1261064005.70696") :outer("11_1261064005.70696")
+.sub "string_to_int"  :subid("12_1266337339.18354") :outer("11_1266337339.18354")
     .param pmc param_18
     .param pmc param_19
 .annotate "line", 3
@@ -4426,7 +4434,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "ints_to_string"  :subid("13_1261064005.70696") :outer("11_1261064005.70696")
+.sub "ints_to_string"  :subid("13_1266337339.18354") :outer("11_1266337339.18354")
     .param pmc param_25
 .annotate "line", 37
     new $P24, 'ExceptionHandler'
@@ -4467,14 +4475,14 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "EXPR"  :subid("14_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "EXPR"  :subid("14_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_31
     .param pmc param_32 :optional
     .param int has_param_32 :opt_flag
 .annotate "line", 62
-    .const 'Sub' $P111 = "16_1261064005.70696" 
+    .const 'Sub' $P111 = "16_1266337339.18354" 
     capture_lex $P111
-    .const 'Sub' $P78 = "15_1261064005.70696" 
+    .const 'Sub' $P78 = "15_1266337339.18354" 
     capture_lex $P78
     new $P30, 'ExceptionHandler'
     set_addr $P30, control_29
@@ -4482,10 +4490,10 @@
     push_eh $P30
     .lex "self", self
     .lex "$/", param_31
-    if has_param_32, optparam_42
+    if has_param_32, optparam_47
     new $P33, "Undef"
     set param_32, $P33
-  optparam_42:
+  optparam_47:
     .lex "$key", param_32
 .annotate "line", 64
     new $P34, "Undef"
@@ -4507,13 +4515,13 @@
     defined $I43, $P39
     if $I43, default_42
     find_lex $P44, "$/"
-    unless_null $P44, vivify_43
+    unless_null $P44, vivify_48
     new $P44, "Hash"
-  vivify_43:
+  vivify_48:
     set $P45, $P44["OPER"]
-    unless_null $P45, vivify_44
+    unless_null $P45, vivify_49
     new $P45, "Undef"
-  vivify_44:
+  vivify_49:
     $P46 = $P45."ast"()
     set $P39, $P46
   default_42:
@@ -4528,57 +4536,57 @@
     store_lex "$past", $P51
 .annotate "line", 67
     find_lex $P53, "$/"
-    unless_null $P53, vivify_45
+    unless_null $P53, vivify_50
     new $P53, "Hash"
-  vivify_45:
+  vivify_50:
     set $P54, $P53["OPER"]
-    unless_null $P54, vivify_46
+    unless_null $P54, vivify_51
     new $P54, "Hash"
-  vivify_46:
+  vivify_51:
     set $P55, $P54["O"]
-    unless_null $P55, vivify_47
+    unless_null $P55, vivify_52
     new $P55, "Hash"
-  vivify_47:
+  vivify_52:
     set $P56, $P55["pasttype"]
-    unless_null $P56, vivify_48
+    unless_null $P56, vivify_53
     new $P56, "Undef"
-  vivify_48:
+  vivify_53:
     if $P56, if_52
 .annotate "line", 68
     find_lex $P64, "$/"
-    unless_null $P64, vivify_49
+    unless_null $P64, vivify_54
     new $P64, "Hash"
-  vivify_49:
+  vivify_54:
     set $P65, $P64["OPER"]
-    unless_null $P65, vivify_50
+    unless_null $P65, vivify_55
     new $P65, "Hash"
-  vivify_50:
+  vivify_55:
     set $P66, $P65["O"]
-    unless_null $P66, vivify_51
+    unless_null $P66, vivify_56
     new $P66, "Hash"
-  vivify_51:
+  vivify_56:
     set $P67, $P66["pirop"]
-    unless_null $P67, vivify_52
+    unless_null $P67, vivify_57
     new $P67, "Undef"
-  vivify_52:
+  vivify_57:
     unless $P67, if_63_end
     find_lex $P68, "$past"
     find_lex $P69, "$/"
-    unless_null $P69, vivify_53
+    unless_null $P69, vivify_58
     new $P69, "Hash"
-  vivify_53:
+  vivify_58:
     set $P70, $P69["OPER"]
-    unless_null $P70, vivify_54
+    unless_null $P70, vivify_59
     new $P70, "Hash"
-  vivify_54:
+  vivify_59:
     set $P71, $P70["O"]
-    unless_null $P71, vivify_55
+    unless_null $P71, vivify_60
     new $P71, "Hash"
-  vivify_55:
+  vivify_60:
     set $P72, $P71["pirop"]
-    unless_null $P72, vivify_56
+    unless_null $P72, vivify_61
     new $P72, "Undef"
-  vivify_56:
+  vivify_61:
     set $S73, $P72
     $P68."pirop"($S73)
   if_63_end:
@@ -4587,21 +4595,21 @@
 .annotate "line", 67
     find_lex $P57, "$past"
     find_lex $P58, "$/"
-    unless_null $P58, vivify_57
+    unless_null $P58, vivify_62
     new $P58, "Hash"
-  vivify_57:
+  vivify_62:
     set $P59, $P58["OPER"]
-    unless_null $P59, vivify_58
+    unless_null $P59, vivify_63
     new $P59, "Hash"
-  vivify_58:
+  vivify_63:
     set $P60, $P59["O"]
-    unless_null $P60, vivify_59
+    unless_null $P60, vivify_64
     new $P60, "Hash"
-  vivify_59:
+  vivify_64:
     set $P61, $P60["pasttype"]
-    unless_null $P61, vivify_60
+    unless_null $P61, vivify_65
     new $P61, "Undef"
-  vivify_60:
+  vivify_65:
     set $S62, $P61
     $P57."pasttype"($S62)
   if_52_end:
@@ -4609,7 +4617,7 @@
     find_lex $P75, "$past"
     $P76 = $P75."name"()
     if $P76, unless_74_end
-    .const 'Sub' $P78 = "15_1261064005.70696" 
+    .const 'Sub' $P78 = "15_1266337339.18354" 
     capture_lex $P78
     $P78()
   unless_74_end:
@@ -4623,7 +4631,7 @@
     find_lex $P106, "$/"
     $P107 = $P106."list"()
     defined $I108, $P107
-    unless $I108, for_undef_64
+    unless $I108, for_undef_69
     iter $P105, $P107
     new $P123, 'ExceptionHandler'
     set_addr $P123, loop122_handler
@@ -4633,7 +4641,7 @@
     unless $P105, loop122_done
     shift $P109, $P105
   loop122_redo:
-    .const 'Sub' $P111 = "16_1261064005.70696" 
+    .const 'Sub' $P111 = "16_1266337339.18354" 
     capture_lex $P111
     $P111($P109)
   loop122_next:
@@ -4646,20 +4654,20 @@
     eq $P124, 67, loop122_redo
   loop122_done:
     pop_eh 
-  for_undef_64:
+  for_undef_69:
 .annotate "line", 81
     goto if_97_end
   if_97:
 .annotate "line", 80
     find_lex $P101, "$past"
     find_lex $P102, "$/"
-    unless_null $P102, vivify_65
+    unless_null $P102, vivify_70
     new $P102, "ResizablePMCArray"
-  vivify_65:
+  vivify_70:
     set $P103, $P102[0]
-    unless_null $P103, vivify_66
+    unless_null $P103, vivify_71
     new $P103, "Undef"
-  vivify_66:
+  vivify_71:
     $P104 = $P103."ast"()
     $P101."unshift"($P104)
   if_97_end:
@@ -4678,7 +4686,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block77"  :anon :subid("15_1261064005.70696") :outer("14_1261064005.70696")
+.sub "_block77"  :anon :subid("15_1266337339.18354") :outer("14_1266337339.18354")
 .annotate "line", 71
     new $P79, "Undef"
     .lex "$name", $P79
@@ -4701,17 +4709,17 @@
     concat $P86, $P85, ":<"
 .annotate "line", 76
     find_lex $P87, "$/"
-    unless_null $P87, vivify_61
+    unless_null $P87, vivify_66
     new $P87, "Hash"
-  vivify_61:
+  vivify_66:
     set $P88, $P87["OPER"]
-    unless_null $P88, vivify_62
+    unless_null $P88, vivify_67
     new $P88, "Hash"
-  vivify_62:
+  vivify_67:
     set $P89, $P88["sym"]
-    unless_null $P89, vivify_63
+    unless_null $P89, vivify_68
     new $P89, "Undef"
-  vivify_63:
+  vivify_68:
     concat $P90, $P86, $P89
     concat $P91, $P90, ">"
     store_lex "$name", $P91
@@ -4728,7 +4736,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block110"  :anon :subid("16_1261064005.70696") :outer("14_1261064005.70696")
+.sub "_block110"  :anon :subid("16_1266337339.18354") :outer("14_1266337339.18354")
     .param pmc param_112
 .annotate "line", 82
     .lex "$_", param_112
@@ -4751,7 +4759,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "term:sym<circumfix>"  :subid("17_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "term:sym<circumfix>"  :subid("17_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_132
 .annotate "line", 87
     new $P131, 'ExceptionHandler'
@@ -4762,13 +4770,13 @@
     .lex "$/", param_132
     find_lex $P133, "$/"
     find_lex $P134, "$/"
-    unless_null $P134, vivify_67
+    unless_null $P134, vivify_72
     new $P134, "Hash"
-  vivify_67:
+  vivify_72:
     set $P135, $P134["circumfix"]
-    unless_null $P135, vivify_68
+    unless_null $P135, vivify_73
     new $P135, "Undef"
-  vivify_68:
+  vivify_73:
     $P136 = $P135."ast"()
     $P137 = $P133."!make"($P136)
     .return ($P137)
@@ -4781,7 +4789,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "termish"  :subid("18_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "termish"  :subid("18_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_142
 .annotate "line", 89
     new $P141, 'ExceptionHandler'
@@ -4792,13 +4800,13 @@
     .lex "$/", param_142
     find_lex $P143, "$/"
     find_lex $P144, "$/"
-    unless_null $P144, vivify_69
+    unless_null $P144, vivify_74
     new $P144, "Hash"
-  vivify_69:
+  vivify_74:
     set $P145, $P144["term"]
-    unless_null $P145, vivify_70
+    unless_null $P145, vivify_75
     new $P145, "Undef"
-  vivify_70:
+  vivify_75:
     $P146 = $P145."ast"()
     $P147 = $P143."!make"($P146)
     .return ($P147)
@@ -4811,7 +4819,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "nullterm"  :subid("19_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "nullterm"  :subid("19_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_152
 .annotate "line", 90
     new $P151, 'ExceptionHandler'
@@ -4833,7 +4841,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "nullterm_alt"  :subid("20_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "nullterm_alt"  :subid("20_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_160
 .annotate "line", 91
     new $P159, 'ExceptionHandler'
@@ -4844,13 +4852,13 @@
     .lex "$/", param_160
     find_lex $P161, "$/"
     find_lex $P162, "$/"
-    unless_null $P162, vivify_71
+    unless_null $P162, vivify_76
     new $P162, "Hash"
-  vivify_71:
+  vivify_76:
     set $P163, $P162["term"]
-    unless_null $P163, vivify_72
+    unless_null $P163, vivify_77
     new $P163, "Undef"
-  vivify_72:
+  vivify_77:
     $P164 = $P163."ast"()
     $P165 = $P161."!make"($P164)
     .return ($P165)
@@ -4863,7 +4871,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "integer"  :subid("21_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "integer"  :subid("21_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_170
 .annotate "line", 93
     new $P169, 'ExceptionHandler'
@@ -4874,13 +4882,13 @@
     .lex "$/", param_170
     find_lex $P171, "$/"
     find_lex $P172, "$/"
-    unless_null $P172, vivify_73
+    unless_null $P172, vivify_78
     new $P172, "Hash"
-  vivify_73:
+  vivify_78:
     set $P173, $P172["VALUE"]
-    unless_null $P173, vivify_74
+    unless_null $P173, vivify_79
     new $P173, "Undef"
-  vivify_74:
+  vivify_79:
     $P174 = $P173."ast"()
     $P175 = $P171."!make"($P174)
     .return ($P175)
@@ -4893,7 +4901,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "dec_number"  :subid("22_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "dec_number"  :subid("22_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_180
 .annotate "line", 95
     new $P179, 'ExceptionHandler'
@@ -4916,7 +4924,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "decint"  :subid("23_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "decint"  :subid("23_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_189
 .annotate "line", 97
     new $P188, 'ExceptionHandler'
@@ -4939,7 +4947,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "hexint"  :subid("24_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "hexint"  :subid("24_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_198
 .annotate "line", 98
     new $P197, 'ExceptionHandler'
@@ -4962,7 +4970,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "octint"  :subid("25_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "octint"  :subid("25_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_207
 .annotate "line", 99
     new $P206, 'ExceptionHandler'
@@ -4985,7 +4993,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "binint"  :subid("26_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "binint"  :subid("26_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_216
 .annotate "line", 100
     new $P215, 'ExceptionHandler'
@@ -5008,10 +5016,10 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_EXPR"  :subid("27_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "quote_EXPR"  :subid("27_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_225
 .annotate "line", 102
-    .const 'Sub' $P241 = "28_1261064005.70696" 
+    .const 'Sub' $P241 = "28_1266337339.18354" 
     capture_lex $P241
     new $P224, 'ExceptionHandler'
     set_addr $P224, control_223
@@ -5023,13 +5031,13 @@
     new $P226, "Undef"
     .lex "$past", $P226
     find_lex $P227, "$/"
-    unless_null $P227, vivify_75
+    unless_null $P227, vivify_80
     new $P227, "Hash"
-  vivify_75:
+  vivify_80:
     set $P228, $P227["quote_delimited"]
-    unless_null $P228, vivify_76
+    unless_null $P228, vivify_81
     new $P228, "Undef"
-  vivify_76:
+  vivify_81:
     $P229 = $P228."ast"()
     store_lex "$past", $P229
 .annotate "line", 104
@@ -5043,7 +5051,7 @@
     $P237 = $P235."ACCEPTS"($P236)
     if $P237, if_234
 .annotate "line", 108
-    .const 'Sub' $P241 = "28_1261064005.70696" 
+    .const 'Sub' $P241 = "28_1266337339.18354" 
     capture_lex $P241
     $P241()
     goto if_234_end
@@ -5082,9 +5090,9 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block240"  :anon :subid("28_1261064005.70696") :outer("27_1261064005.70696")
+.sub "_block240"  :anon :subid("28_1266337339.18354") :outer("27_1266337339.18354")
 .annotate "line", 108
-    .const 'Sub' $P260 = "29_1261064005.70696" 
+    .const 'Sub' $P260 = "29_1266337339.18354" 
     capture_lex $P260
 .annotate "line", 109
     new $P242, "ResizablePMCArray"
@@ -5111,7 +5119,7 @@
 .annotate "line", 112
     find_lex $P256, "@words"
     defined $I257, $P256
-    unless $I257, for_undef_77
+    unless $I257, for_undef_82
     iter $P255, $P256
     new $P266, 'ExceptionHandler'
     set_addr $P266, loop265_handler
@@ -5121,7 +5129,7 @@
     unless $P255, loop265_done
     shift $P258, $P255
   loop265_redo:
-    .const 'Sub' $P260 = "29_1261064005.70696" 
+    .const 'Sub' $P260 = "29_1266337339.18354" 
     capture_lex $P260
     $P260($P258)
   loop265_next:
@@ -5134,7 +5142,7 @@
     eq $P267, 67, loop265_redo
   loop265_done:
     pop_eh 
-  for_undef_77:
+  for_undef_82:
 .annotate "line", 110
     set $P247, $P255
   if_248_end:
@@ -5144,7 +5152,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block259"  :anon :subid("29_1261064005.70696") :outer("28_1261064005.70696")
+.sub "_block259"  :anon :subid("29_1266337339.18354") :outer("28_1266337339.18354")
     .param pmc param_261
 .annotate "line", 112
     .lex "$_", param_261
@@ -5156,10 +5164,10 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_delimited"  :subid("30_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "quote_delimited"  :subid("30_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_284
 .annotate "line", 122
-    .const 'Sub' $P296 = "31_1261064005.70696" 
+    .const 'Sub' $P296 = "31_1266337339.18354" 
     capture_lex $P296
     new $P283, 'ExceptionHandler'
     set_addr $P283, control_282
@@ -5184,15 +5192,15 @@
     store_lex "$lastlit", $P289
 .annotate "line", 125
     find_lex $P291, "$/"
-    unless_null $P291, vivify_78
+    unless_null $P291, vivify_83
     new $P291, "Hash"
-  vivify_78:
+  vivify_83:
     set $P292, $P291["quote_atom"]
-    unless_null $P292, vivify_79
+    unless_null $P292, vivify_84
     new $P292, "Undef"
-  vivify_79:
+  vivify_84:
     defined $I293, $P292
-    unless $I293, for_undef_80
+    unless $I293, for_undef_85
     iter $P290, $P292
     new $P329, 'ExceptionHandler'
     set_addr $P329, loop328_handler
@@ -5202,7 +5210,7 @@
     unless $P290, loop328_done
     shift $P294, $P290
   loop328_redo:
-    .const 'Sub' $P296 = "31_1261064005.70696" 
+    .const 'Sub' $P296 = "31_1266337339.18354" 
     capture_lex $P296
     $P296($P294)
   loop328_next:
@@ -5215,7 +5223,7 @@
     eq $P330, 67, loop328_redo
   loop328_done:
     pop_eh 
-  for_undef_80:
+  for_undef_85:
 .annotate "line", 139
     find_lex $P332, "$lastlit"
     set $S333, $P332
@@ -5280,7 +5288,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block295"  :anon :subid("31_1261064005.70696") :outer("30_1261064005.70696")
+.sub "_block295"  :anon :subid("31_1266337339.18354") :outer("30_1266337339.18354")
     .param pmc param_298
 .annotate "line", 126
     new $P297, "Undef"
@@ -5349,7 +5357,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_atom"  :subid("32_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "quote_atom"  :subid("32_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_359
 .annotate "line", 147
     new $P358, 'ExceptionHandler'
@@ -5361,13 +5369,13 @@
 .annotate "line", 148
     find_lex $P360, "$/"
     find_lex $P363, "$/"
-    unless_null $P363, vivify_81
+    unless_null $P363, vivify_86
     new $P363, "Hash"
-  vivify_81:
+  vivify_86:
     set $P364, $P363["quote_escape"]
-    unless_null $P364, vivify_82
+    unless_null $P364, vivify_87
     new $P364, "Undef"
-  vivify_82:
+  vivify_87:
     if $P364, if_362
     find_lex $P368, "$/"
     set $S369, $P368
@@ -5376,13 +5384,13 @@
     goto if_362_end
   if_362:
     find_lex $P365, "$/"
-    unless_null $P365, vivify_83
+    unless_null $P365, vivify_88
     new $P365, "Hash"
-  vivify_83:
+  vivify_88:
     set $P366, $P365["quote_escape"]
-    unless_null $P366, vivify_84
+    unless_null $P366, vivify_89
     new $P366, "Undef"
-  vivify_84:
+  vivify_89:
     $P367 = $P366."ast"()
     set $P361, $P367
   if_362_end:
@@ -5398,7 +5406,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<backslash>"  :subid("33_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "quote_escape:sym<backslash>"  :subid("33_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_375
 .annotate "line", 151
     new $P374, 'ExceptionHandler'
@@ -5419,7 +5427,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<stopper>"  :subid("34_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "quote_escape:sym<stopper>"  :subid("34_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_382
 .annotate "line", 152
     new $P381, 'ExceptionHandler'
@@ -5430,13 +5438,13 @@
     .lex "$/", param_382
     find_lex $P383, "$/"
     find_lex $P384, "$/"
-    unless_null $P384, vivify_85
+    unless_null $P384, vivify_90
     new $P384, "Hash"
-  vivify_85:
+  vivify_90:
     set $P385, $P384["stopper"]
-    unless_null $P385, vivify_86
+    unless_null $P385, vivify_91
     new $P385, "Undef"
-  vivify_86:
+  vivify_91:
     set $S386, $P385
     $P387 = $P383."!make"($S386)
     .return ($P387)
@@ -5449,7 +5457,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<bs>"  :subid("35_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "quote_escape:sym<bs>"  :subid("35_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_392
 .annotate "line", 154
     new $P391, 'ExceptionHandler'
@@ -5470,7 +5478,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<nl>"  :subid("36_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "quote_escape:sym<nl>"  :subid("36_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_399
 .annotate "line", 155
     new $P398, 'ExceptionHandler'
@@ -5491,7 +5499,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<cr>"  :subid("37_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "quote_escape:sym<cr>"  :subid("37_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_406
 .annotate "line", 156
     new $P405, 'ExceptionHandler'
@@ -5512,7 +5520,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<tab>"  :subid("38_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "quote_escape:sym<tab>"  :subid("38_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_413
 .annotate "line", 157
     new $P412, 'ExceptionHandler'
@@ -5533,7 +5541,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<hex>"  :subid("39_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "quote_escape:sym<hex>"  :subid("39_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_420
 .annotate "line", 159
     new $P419, 'ExceptionHandler'
@@ -5545,37 +5553,37 @@
 .annotate "line", 160
     find_lex $P421, "$/"
     find_lex $P424, "$/"
-    unless_null $P424, vivify_87
+    unless_null $P424, vivify_92
     new $P424, "Hash"
-  vivify_87:
+  vivify_92:
     set $P425, $P424["hexint"]
-    unless_null $P425, vivify_88
+    unless_null $P425, vivify_93
     new $P425, "Undef"
-  vivify_88:
+  vivify_93:
     if $P425, if_423
     find_lex $P428, "$/"
-    unless_null $P428, vivify_89
+    unless_null $P428, vivify_94
     new $P428, "Hash"
-  vivify_89:
+  vivify_94:
     set $P429, $P428["hexints"]
-    unless_null $P429, vivify_90
+    unless_null $P429, vivify_95
     new $P429, "Hash"
-  vivify_90:
+  vivify_95:
     set $P430, $P429["hexint"]
-    unless_null $P430, vivify_91
+    unless_null $P430, vivify_96
     new $P430, "Undef"
-  vivify_91:
+  vivify_96:
     set $P422, $P430
     goto if_423_end
   if_423:
     find_lex $P426, "$/"
-    unless_null $P426, vivify_92
+    unless_null $P426, vivify_97
     new $P426, "Hash"
-  vivify_92:
+  vivify_97:
     set $P427, $P426["hexint"]
-    unless_null $P427, vivify_93
+    unless_null $P427, vivify_98
     new $P427, "Undef"
-  vivify_93:
+  vivify_98:
     set $P422, $P427
   if_423_end:
     $P431 = "ints_to_string"($P422)
@@ -5591,7 +5599,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "quote_escape:sym<oct>"  :subid("40_1261064005.70696") :method :outer("11_1261064005.70696")
+.sub "quote_escape:sym<oct>"  :subid("40_1266337339.18354") :method :outer("11_1266337339.18354")
     .param pmc param_437
 .annotate "line", 163
     new $P436, 'ExceptionHandler'
@@ -5603,37 +5611,37 @@
 .annotate "line", 164
     find_lex $P438, "$/"
     find_lex $P441, "$/"
-    unless_null $P441, vivify_94
+    unless_null $P441, vivify_99
     new $P441, "Hash"
-  vivify_94:
+  vivify_99:
     set $P442, $P441["octint"]
-    unless_null $P442, vivify_95
+    unless_null $P442, vivify_100
     new $P442, "Undef"
-  vivify_95:
+  vivify_100:
     if $P442, if_440
     find_lex $P445, "$/"
-    unless_null $P445, vivify_96
+    unless_null $P445, vivify_101
     new $P445, "Hash"
-  vivify_96:
+  vivify_101:
     set $P446, $P445["octints"]
-    unless_null $P446, vivify_97
+    unless_null $P446, vivify_102
     new $P446, "Hash"
-  vivify_97:
+  vivify_102:
     set $P447, $P446["octint"]
-    unless_null $P447, vivify_98
+    unless_null $P447, vivify_103
     new $P447, "Undef"
-  vivify_98:
+  vivify_103:
     set $P439, $P447
     goto if_440_end
   if_440:
     find_lex $P443, "$/"
-    unless_null $P443, vivify_99
+    unless_null $P443, vivify_104
     new $P443, "Hash"
-  vivify_99:
+  vivify_104:
     set $P444, $P443["octint"]
-    unless_null $P444, vivify_100
+    unless_null $P444, vivify_105
     new $P444, "Undef"
-  vivify_100:
+  vivify_105:
     set $P439, $P444
   if_440_end:
     $P448 = "ints_to_string"($P439)
@@ -5647,10 +5655,245 @@
     .return ($P450)
 .end
 
+
+.namespace ["HLL";"Actions"]
+.sub "quote_escape:sym<chr>"  :subid("41_1266337339.18354") :method :outer("11_1266337339.18354")
+    .param pmc param_454
+.annotate "line", 167
+    new $P453, 'ExceptionHandler'
+    set_addr $P453, control_452
+    $P453."handle_types"(58)
+    push_eh $P453
+    .lex "self", self
+    .lex "$/", param_454
+.annotate "line", 168
+    find_lex $P455, "$/"
+    find_lex $P456, "$/"
+    unless_null $P456, vivify_106
+    new $P456, "Hash"
+  vivify_106:
+    set $P457, $P456["charspec"]
+    unless_null $P457, vivify_107
+    new $P457, "Undef"
+  vivify_107:
+    $P458 = $P457."ast"()
+    $P459 = $P455."!make"($P458)
+.annotate "line", 167
+    .return ($P459)
+  control_452:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P460, exception, "payload"
+    .return ($P460)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "charname"  :subid("42_1266337339.18354") :method :outer("11_1266337339.18354")
+    .param pmc param_464
+.annotate "line", 171
+    new $P463, 'ExceptionHandler'
+    set_addr $P463, control_462
+    $P463."handle_types"(58)
+    push_eh $P463
+    .lex "self", self
+    .lex "$/", param_464
+.annotate "line", 172
+    new $P465, "Undef"
+    .lex "$codepoint", $P465
+.annotate "line", 173
+    find_lex $P468, "$/"
+    unless_null $P468, vivify_108
+    new $P468, "Hash"
+  vivify_108:
+    set $P469, $P468["integer"]
+    unless_null $P469, vivify_109
+    new $P469, "Undef"
+  vivify_109:
+    if $P469, if_467
+.annotate "line", 174
+ $P473 = new ['CodeString'] 
+    find_lex $P474, "$/"
+    set $S475, $P474
+    $P476 = $P473."charname_to_ord"($S475)
+    set $P466, $P476
+.annotate "line", 173
+    goto if_467_end
+  if_467:
+    find_lex $P470, "$/"
+    unless_null $P470, vivify_110
+    new $P470, "Hash"
+  vivify_110:
+    set $P471, $P470["integer"]
+    unless_null $P471, vivify_111
+    new $P471, "Undef"
+  vivify_111:
+    $P472 = $P471."ast"()
+    set $P466, $P472
+  if_467_end:
+    store_lex "$codepoint", $P466
+.annotate "line", 175
+    find_lex $P478, "$codepoint"
+    set $N479, $P478
+    islt $I480, $N479, 0.0
+    unless $I480, if_477_end
+    find_lex $P481, "$/"
+    $P482 = $P481."CURSOR"()
+    new $P483, 'String'
+    set $P483, "Unrecognized character name "
+    find_lex $P484, "$/"
+    concat $P485, $P483, $P484
+    $P482."panic"($P485)
+  if_477_end:
+.annotate "line", 176
+    find_lex $P486, "$/"
+    find_lex $P487, "$codepoint"
+    set $I488, $P487
+    chr $S489, $I488
+    $P490 = $P486."!make"($S489)
+.annotate "line", 171
+    .return ($P490)
+  control_462:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P491, exception, "payload"
+    .return ($P491)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "charnames"  :subid("43_1266337339.18354") :method :outer("11_1266337339.18354")
+    .param pmc param_495
+.annotate "line", 179
+    .const 'Sub' $P504 = "44_1266337339.18354" 
+    capture_lex $P504
+    new $P494, 'ExceptionHandler'
+    set_addr $P494, control_493
+    $P494."handle_types"(58)
+    push_eh $P494
+    .lex "self", self
+    .lex "$/", param_495
+.annotate "line", 180
+    new $P496, "Undef"
+    .lex "$str", $P496
+    new $P497, "String"
+    assign $P497, ""
+    store_lex "$str", $P497
+.annotate "line", 181
+    find_lex $P499, "$/"
+    unless_null $P499, vivify_112
+    new $P499, "Hash"
+  vivify_112:
+    set $P500, $P499["charname"]
+    unless_null $P500, vivify_113
+    new $P500, "Undef"
+  vivify_113:
+    defined $I501, $P500
+    unless $I501, for_undef_114
+    iter $P498, $P500
+    new $P511, 'ExceptionHandler'
+    set_addr $P511, loop510_handler
+    $P511."handle_types"(65, 67, 66)
+    push_eh $P511
+  loop510_test:
+    unless $P498, loop510_done
+    shift $P502, $P498
+  loop510_redo:
+    .const 'Sub' $P504 = "44_1266337339.18354" 
+    capture_lex $P504
+    $P504($P502)
+  loop510_next:
+    goto loop510_test
+  loop510_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P512, exception, 'type'
+    eq $P512, 65, loop510_next
+    eq $P512, 67, loop510_redo
+  loop510_done:
+    pop_eh 
+  for_undef_114:
+.annotate "line", 182
+    find_lex $P513, "$/"
+    find_lex $P514, "$str"
+    $P515 = $P513."!make"($P514)
+.annotate "line", 179
+    .return ($P515)
+  control_493:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P516, exception, "payload"
+    .return ($P516)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "_block503"  :anon :subid("44_1266337339.18354") :outer("43_1266337339.18354")
+    .param pmc param_505
+.annotate "line", 181
+    .lex "$_", param_505
+    find_lex $P506, "$str"
+    find_lex $P507, "$_"
+    $S508 = $P507."ast"()
+    concat $P509, $P506, $S508
+    store_lex "$str", $P509
+    .return ($P509)
+.end
+
+
+.namespace ["HLL";"Actions"]
+.sub "charspec"  :subid("45_1266337339.18354") :method :outer("11_1266337339.18354")
+    .param pmc param_520
+.annotate "line", 185
+    new $P519, 'ExceptionHandler'
+    set_addr $P519, control_518
+    $P519."handle_types"(58)
+    push_eh $P519
+    .lex "self", self
+    .lex "$/", param_520
+.annotate "line", 186
+    find_lex $P521, "$/"
+    find_lex $P524, "$/"
+    unless_null $P524, vivify_115
+    new $P524, "Hash"
+  vivify_115:
+    set $P525, $P524["charnames"]
+    unless_null $P525, vivify_116
+    new $P525, "Undef"
+  vivify_116:
+    if $P525, if_523
+    find_lex $P529, "$/"
+    $I530 = "string_to_int"($P529, 10)
+    chr $S531, $I530
+    new $P522, 'String'
+    set $P522, $S531
+    goto if_523_end
+  if_523:
+    find_lex $P526, "$/"
+    unless_null $P526, vivify_117
+    new $P526, "Hash"
+  vivify_117:
+    set $P527, $P526["charnames"]
+    unless_null $P527, vivify_118
+    new $P527, "Undef"
+  vivify_118:
+    $P528 = $P527."ast"()
+    set $P522, $P528
+  if_523_end:
+    $P532 = $P521."!make"($P522)
+.annotate "line", 185
+    .return ($P532)
+  control_518:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P533, exception, "payload"
+    .return ($P533)
+.end
+
 ### .include 'gen/hllcompiler.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1261064006.8204")
+.sub "_block11"  :anon :subid("10_1266337340.21472")
 .annotate "line", 0
     get_hll_global $P14, ["HLL";"Compiler"], "_block13" 
     capture_lex $P14
@@ -5664,9 +5907,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post25") :outer("10_1261064006.8204")
+.sub "" :load :init :subid("post25") :outer("10_1266337340.21472")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1261064006.8204" 
+    .const 'Sub' $P12 = "10_1266337340.21472" 
     .local pmc block
     set block, $P12
 .annotate "line", 2
@@ -5680,28 +5923,28 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block13"  :subid("11_1261064006.8204") :outer("10_1261064006.8204")
+.sub "_block13"  :subid("11_1266337340.21472") :outer("10_1266337340.21472")
 .annotate "line", 6
-    .const 'Sub' $P187 = "20_1261064006.8204" 
+    .const 'Sub' $P187 = "20_1266337340.21472" 
     capture_lex $P187
-    .const 'Sub' $P152 = "18_1261064006.8204" 
+    .const 'Sub' $P152 = "18_1266337340.21472" 
     capture_lex $P152
-    .const 'Sub' $P137 = "17_1261064006.8204" 
+    .const 'Sub' $P137 = "17_1266337340.21472" 
     capture_lex $P137
-    .const 'Sub' $P121 = "16_1261064006.8204" 
+    .const 'Sub' $P121 = "16_1266337340.21472" 
     capture_lex $P121
-    .const 'Sub' $P32 = "13_1261064006.8204" 
+    .const 'Sub' $P32 = "13_1266337340.21472" 
     capture_lex $P32
-    .const 'Sub' $P15 = "12_1261064006.8204" 
+    .const 'Sub' $P15 = "12_1266337340.21472" 
     capture_lex $P15
 .annotate "line", 14
-    .const 'Sub' $P15 = "12_1261064006.8204" 
+    .const 'Sub' $P15 = "12_1266337340.21472" 
     capture_lex $P15
     .lex "value_type", $P15
 .annotate "line", 10
     find_lex $P31, "value_type"
 .annotate "line", 69
-    .const 'Sub' $P187 = "20_1261064006.8204" 
+    .const 'Sub' $P187 = "20_1266337340.21472" 
     capture_lex $P187
 .annotate "line", 6
     .return ($P187)
@@ -5709,7 +5952,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "" :load :init :subid("post26") :outer("11_1261064006.8204")
+.sub "" :load :init :subid("post26") :outer("11_1266337340.21472")
 .annotate "line", 6
     get_hll_global $P14, ["HLL";"Compiler"], "_block13" 
     .local pmc block
@@ -5721,7 +5964,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "value_type"  :subid("12_1261064006.8204") :outer("11_1261064006.8204")
+.sub "value_type"  :subid("12_1266337340.21472") :outer("11_1266337340.21472")
     .param pmc param_18
 .annotate "line", 14
     new $P17, 'ExceptionHandler'
@@ -5765,15 +6008,15 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "get_exports"  :subid("13_1261064006.8204") :method :outer("11_1261064006.8204")
+.sub "get_exports"  :subid("13_1266337340.21472") :method :outer("11_1266337340.21472")
     .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_1261064006.8204" 
+    .const 'Sub' $P104 = "15_1266337340.21472" 
     capture_lex $P104
-    .const 'Sub' $P83 = "14_1261064006.8204" 
+    .const 'Sub' $P83 = "14_1266337340.21472" 
     capture_lex $P83
     new $P34, 'ExceptionHandler'
     set_addr $P34, control_33
@@ -5879,7 +6122,7 @@
     unless $P99, loop116_done
     shift $P102, $P99
   loop116_redo:
-    .const 'Sub' $P104 = "15_1261064006.8204" 
+    .const 'Sub' $P104 = "15_1266337340.21472" 
     capture_lex $P104
     $P104($P102)
   loop116_next:
@@ -5909,7 +6152,7 @@
     unless $P78, loop96_done
     shift $P81, $P78
   loop96_redo:
-    .const 'Sub' $P83 = "14_1261064006.8204" 
+    .const 'Sub' $P83 = "14_1266337340.21472" 
     capture_lex $P83
     $P83($P81)
   loop96_next:
@@ -5937,7 +6180,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block103"  :anon :subid("15_1261064006.8204") :outer("13_1261064006.8204")
+.sub "_block103"  :anon :subid("15_1266337340.21472") :outer("13_1266337340.21472")
     .param pmc param_106
 .annotate "line", 40
     new $P105, "Undef"
@@ -5969,7 +6212,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block82"  :anon :subid("14_1261064006.8204") :outer("13_1261064006.8204")
+.sub "_block82"  :anon :subid("14_1266337340.21472") :outer("13_1266337340.21472")
     .param pmc param_85
 .annotate "line", 34
     new $P84, "Undef"
@@ -6008,7 +6251,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "get_module"  :subid("16_1261064006.8204") :method :outer("11_1261064006.8204")
+.sub "get_module"  :subid("16_1266337340.21472") :method :outer("11_1266337340.21472")
     .param pmc param_124
 .annotate "line", 47
     new $P123, 'ExceptionHandler'
@@ -6048,7 +6291,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "language"  :subid("17_1261064006.8204") :method :outer("11_1261064006.8204")
+.sub "language"  :subid("17_1266337340.21472") :method :outer("11_1266337340.21472")
     .param pmc param_140 :optional
     .param int has_param_140 :opt_flag
 .annotate "line", 53
@@ -6092,10 +6335,10 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "load_module"  :subid("18_1261064006.8204") :method :outer("11_1261064006.8204")
+.sub "load_module"  :subid("18_1266337340.21472") :method :outer("11_1266337340.21472")
     .param pmc param_155
 .annotate "line", 61
-    .const 'Sub' $P165 = "19_1261064006.8204" 
+    .const 'Sub' $P165 = "19_1266337340.21472" 
     capture_lex $P165
     new $P154, 'ExceptionHandler'
     set_addr $P154, control_153
@@ -6122,7 +6365,7 @@
     assign $P163, 0
     store_lex "$loaded", $P163
 .annotate "line", 64
-    .const 'Sub' $P165 = "19_1261064006.8204" 
+    .const 'Sub' $P165 = "19_1266337340.21472" 
     capture_lex $P165
     $P165()
 .annotate "line", 65
@@ -6151,7 +6394,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block164"  :anon :subid("19_1261064006.8204") :outer("18_1261064006.8204")
+.sub "_block164"  :anon :subid("19_1266337340.21472") :outer("18_1266337340.21472")
 .annotate "line", 64
     new $P172, 'ExceptionHandler'
     set_addr $P172, control_171
@@ -6184,11 +6427,11 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "import"  :subid("20_1261064006.8204") :method :outer("11_1261064006.8204")
+.sub "import"  :subid("20_1266337340.21472") :method :outer("11_1266337340.21472")
     .param pmc param_190
     .param pmc param_191
 .annotate "line", 69
-    .const 'Sub' $P197 = "21_1261064006.8204" 
+    .const 'Sub' $P197 = "21_1266337340.21472" 
     capture_lex $P197
     new $P189, 'ExceptionHandler'
     set_addr $P189, control_188
@@ -6210,7 +6453,7 @@
     unless $P192, loop278_done
     shift $P195, $P192
   loop278_redo:
-    .const 'Sub' $P197 = "21_1261064006.8204" 
+    .const 'Sub' $P197 = "21_1266337340.21472" 
     capture_lex $P197
     $P197($P195)
   loop278_next:
@@ -6235,14 +6478,14 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block196"  :anon :subid("21_1261064006.8204") :outer("20_1261064006.8204")
+.sub "_block196"  :anon :subid("21_1266337340.21472") :outer("20_1266337340.21472")
     .param pmc param_200
 .annotate "line", 70
-    .const 'Sub' $P267 = "24_1261064006.8204" 
+    .const 'Sub' $P267 = "24_1266337340.21472" 
     capture_lex $P267
-    .const 'Sub' $P247 = "23_1261064006.8204" 
+    .const 'Sub' $P247 = "23_1266337340.21472" 
     capture_lex $P247
-    .const 'Sub' $P218 = "22_1261064006.8204" 
+    .const 'Sub' $P218 = "22_1266337340.21472" 
     capture_lex $P218
 .annotate "line", 71
     new $P198, "Undef"
@@ -6290,7 +6533,7 @@
     unless $P262, loop275_done
     shift $P265, $P262
   loop275_redo:
-    .const 'Sub' $P267 = "24_1261064006.8204" 
+    .const 'Sub' $P267 = "24_1266337340.21472" 
     capture_lex $P267
     $P267($P265)
   loop275_next:
@@ -6322,7 +6565,7 @@
     unless $P242, loop259_done
     shift $P245, $P242
   loop259_redo:
-    .const 'Sub' $P247 = "23_1261064006.8204" 
+    .const 'Sub' $P247 = "23_1266337340.21472" 
     capture_lex $P247
     $P247($P245)
   loop259_next:
@@ -6356,7 +6599,7 @@
     unless $P213, loop231_done
     shift $P216, $P213
   loop231_redo:
-    .const 'Sub' $P218 = "22_1261064006.8204" 
+    .const 'Sub' $P218 = "22_1266337340.21472" 
     capture_lex $P218
     $P218($P216)
   loop231_next:
@@ -6379,7 +6622,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block266"  :anon :subid("24_1261064006.8204") :outer("21_1261064006.8204")
+.sub "_block266"  :anon :subid("24_1266337340.21472") :outer("21_1266337340.21472")
     .param pmc param_268
 .annotate "line", 80
     .lex "$_", param_268
@@ -6399,7 +6642,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block246"  :anon :subid("23_1261064006.8204") :outer("21_1261064006.8204")
+.sub "_block246"  :anon :subid("23_1266337340.21472") :outer("21_1266337340.21472")
     .param pmc param_248
 .annotate "line", 77
     .lex "$_", param_248
@@ -6419,7 +6662,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block217"  :anon :subid("22_1261064006.8204") :outer("21_1261064006.8204")
+.sub "_block217"  :anon :subid("22_1266337340.21472") :outer("21_1266337340.21472")
     .param pmc param_219
 .annotate "line", 74
     .lex "$_", param_219

Modified: branches/sys_mem_reduce/ext/nqp-rx/src/stage0/NQP-s0.pir
==============================================================================
--- branches/sys_mem_reduce/ext/nqp-rx/src/stage0/NQP-s0.pir	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/ext/nqp-rx/src/stage0/NQP-s0.pir	Sat Feb 20 22:12:51 2010	(r44252)
@@ -15,7 +15,7 @@
 ### .include 'gen/nqp-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1261064023.05912")
+.sub "_block11"  :anon :subid("10_1266337354.28388")
 .annotate "line", 0
     get_hll_global $P14, ["NQP";"Grammar"], "_block13" 
     capture_lex $P14
@@ -29,9 +29,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post331") :outer("10_1261064023.05912")
+.sub "" :load :init :subid("post331") :outer("10_1266337354.28388")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1261064023.05912" 
+    .const 'Sub' $P12 = "10_1266337354.28388" 
     .local pmc block
     set block, $P12
     $P1292 = get_root_global ["parrot"], "P6metaclass"
@@ -40,293 +40,293 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block13"  :subid("11_1261064023.05912") :outer("10_1261064023.05912")
+.sub "_block13"  :subid("11_1266337354.28388") :outer("10_1266337354.28388")
 .annotate "line", 4
     get_hll_global $P1235, ["NQP";"Regex"], "_block1234" 
     capture_lex $P1235
-    .const 'Sub' $P1221 = "317_1261064023.05912" 
+    .const 'Sub' $P1221 = "317_1266337354.28388" 
     capture_lex $P1221
-    .const 'Sub' $P1215 = "315_1261064023.05912" 
+    .const 'Sub' $P1215 = "315_1266337354.28388" 
     capture_lex $P1215
-    .const 'Sub' $P1209 = "313_1261064023.05912" 
+    .const 'Sub' $P1209 = "313_1266337354.28388" 
     capture_lex $P1209
-    .const 'Sub' $P1202 = "311_1261064023.05912" 
+    .const 'Sub' $P1202 = "311_1266337354.28388" 
     capture_lex $P1202
-    .const 'Sub' $P1195 = "309_1261064023.05912" 
+    .const 'Sub' $P1195 = "309_1266337354.28388" 
     capture_lex $P1195
-    .const 'Sub' $P1188 = "307_1261064023.05912" 
+    .const 'Sub' $P1188 = "307_1266337354.28388" 
     capture_lex $P1188
-    .const 'Sub' $P1181 = "305_1261064023.05912" 
+    .const 'Sub' $P1181 = "305_1266337354.28388" 
     capture_lex $P1181
-    .const 'Sub' $P1175 = "303_1261064023.05912" 
+    .const 'Sub' $P1175 = "303_1266337354.28388" 
     capture_lex $P1175
-    .const 'Sub' $P1168 = "301_1261064023.05912" 
+    .const 'Sub' $P1168 = "301_1266337354.28388" 
     capture_lex $P1168
-    .const 'Sub' $P1161 = "299_1261064023.05912" 
+    .const 'Sub' $P1161 = "299_1266337354.28388" 
     capture_lex $P1161
-    .const 'Sub' $P1154 = "297_1261064023.05912" 
+    .const 'Sub' $P1154 = "297_1266337354.28388" 
     capture_lex $P1154
-    .const 'Sub' $P1147 = "295_1261064023.05912" 
+    .const 'Sub' $P1147 = "295_1266337354.28388" 
     capture_lex $P1147
-    .const 'Sub' $P1140 = "293_1261064023.05912" 
+    .const 'Sub' $P1140 = "293_1266337354.28388" 
     capture_lex $P1140
-    .const 'Sub' $P1133 = "291_1261064023.05912" 
+    .const 'Sub' $P1133 = "291_1266337354.28388" 
     capture_lex $P1133
-    .const 'Sub' $P1126 = "289_1261064023.05912" 
+    .const 'Sub' $P1126 = "289_1266337354.28388" 
     capture_lex $P1126
-    .const 'Sub' $P1119 = "287_1261064023.05912" 
+    .const 'Sub' $P1119 = "287_1266337354.28388" 
     capture_lex $P1119
-    .const 'Sub' $P1112 = "285_1261064023.05912" 
+    .const 'Sub' $P1112 = "285_1266337354.28388" 
     capture_lex $P1112
-    .const 'Sub' $P1105 = "283_1261064023.05912" 
+    .const 'Sub' $P1105 = "283_1266337354.28388" 
     capture_lex $P1105
-    .const 'Sub' $P1098 = "281_1261064023.05912" 
+    .const 'Sub' $P1098 = "281_1266337354.28388" 
     capture_lex $P1098
-    .const 'Sub' $P1091 = "279_1261064023.05912" 
+    .const 'Sub' $P1091 = "279_1266337354.28388" 
     capture_lex $P1091
-    .const 'Sub' $P1084 = "277_1261064023.05912" 
+    .const 'Sub' $P1084 = "277_1266337354.28388" 
     capture_lex $P1084
-    .const 'Sub' $P1077 = "275_1261064023.05912" 
+    .const 'Sub' $P1077 = "275_1266337354.28388" 
     capture_lex $P1077
-    .const 'Sub' $P1070 = "273_1261064023.05912" 
+    .const 'Sub' $P1070 = "273_1266337354.28388" 
     capture_lex $P1070
-    .const 'Sub' $P1063 = "271_1261064023.05912" 
+    .const 'Sub' $P1063 = "271_1266337354.28388" 
     capture_lex $P1063
-    .const 'Sub' $P1056 = "269_1261064023.05912" 
+    .const 'Sub' $P1056 = "269_1266337354.28388" 
     capture_lex $P1056
-    .const 'Sub' $P1049 = "267_1261064023.05912" 
+    .const 'Sub' $P1049 = "267_1266337354.28388" 
     capture_lex $P1049
-    .const 'Sub' $P1042 = "265_1261064023.05912" 
+    .const 'Sub' $P1042 = "265_1266337354.28388" 
     capture_lex $P1042
-    .const 'Sub' $P1035 = "263_1261064023.05912" 
+    .const 'Sub' $P1035 = "263_1266337354.28388" 
     capture_lex $P1035
-    .const 'Sub' $P1028 = "261_1261064023.05912" 
+    .const 'Sub' $P1028 = "261_1266337354.28388" 
     capture_lex $P1028
-    .const 'Sub' $P1021 = "259_1261064023.05912" 
+    .const 'Sub' $P1021 = "259_1266337354.28388" 
     capture_lex $P1021
-    .const 'Sub' $P1014 = "257_1261064023.05912" 
+    .const 'Sub' $P1014 = "257_1266337354.28388" 
     capture_lex $P1014
-    .const 'Sub' $P1007 = "255_1261064023.05912" 
+    .const 'Sub' $P1007 = "255_1266337354.28388" 
     capture_lex $P1007
-    .const 'Sub' $P1000 = "253_1261064023.05912" 
+    .const 'Sub' $P1000 = "253_1266337354.28388" 
     capture_lex $P1000
-    .const 'Sub' $P993 = "251_1261064023.05912" 
+    .const 'Sub' $P993 = "251_1266337354.28388" 
     capture_lex $P993
-    .const 'Sub' $P987 = "249_1261064023.05912" 
+    .const 'Sub' $P987 = "249_1266337354.28388" 
     capture_lex $P987
-    .const 'Sub' $P980 = "247_1261064023.05912" 
+    .const 'Sub' $P980 = "247_1266337354.28388" 
     capture_lex $P980
-    .const 'Sub' $P973 = "245_1261064023.05912" 
+    .const 'Sub' $P973 = "245_1266337354.28388" 
     capture_lex $P973
-    .const 'Sub' $P966 = "243_1261064023.05912" 
+    .const 'Sub' $P966 = "243_1266337354.28388" 
     capture_lex $P966
-    .const 'Sub' $P959 = "241_1261064023.05912" 
+    .const 'Sub' $P959 = "241_1266337354.28388" 
     capture_lex $P959
-    .const 'Sub' $P952 = "239_1261064023.05912" 
+    .const 'Sub' $P952 = "239_1266337354.28388" 
     capture_lex $P952
-    .const 'Sub' $P945 = "237_1261064023.05912" 
+    .const 'Sub' $P945 = "237_1266337354.28388" 
     capture_lex $P945
-    .const 'Sub' $P938 = "235_1261064023.05912" 
+    .const 'Sub' $P938 = "235_1266337354.28388" 
     capture_lex $P938
-    .const 'Sub' $P932 = "233_1261064023.05912" 
+    .const 'Sub' $P932 = "233_1266337354.28388" 
     capture_lex $P932
-    .const 'Sub' $P926 = "231_1261064023.05912" 
+    .const 'Sub' $P926 = "231_1266337354.28388" 
     capture_lex $P926
-    .const 'Sub' $P921 = "229_1261064023.05912" 
+    .const 'Sub' $P921 = "229_1266337354.28388" 
     capture_lex $P921
-    .const 'Sub' $P915 = "227_1261064023.05912" 
+    .const 'Sub' $P915 = "227_1266337354.28388" 
     capture_lex $P915
-    .const 'Sub' $P909 = "225_1261064023.05912" 
+    .const 'Sub' $P909 = "225_1266337354.28388" 
     capture_lex $P909
-    .const 'Sub' $P904 = "223_1261064023.05912" 
+    .const 'Sub' $P904 = "223_1266337354.28388" 
     capture_lex $P904
-    .const 'Sub' $P899 = "221_1261064023.05912" 
+    .const 'Sub' $P899 = "221_1266337354.28388" 
     capture_lex $P899
-    .const 'Sub' $P892 = "219_1261064023.05912" 
+    .const 'Sub' $P892 = "219_1266337354.28388" 
     capture_lex $P892
-    .const 'Sub' $P884 = "217_1261064023.05912" 
+    .const 'Sub' $P884 = "217_1266337354.28388" 
     capture_lex $P884
-    .const 'Sub' $P879 = "215_1261064023.05912" 
+    .const 'Sub' $P879 = "215_1266337354.28388" 
     capture_lex $P879
-    .const 'Sub' $P874 = "213_1261064023.05912" 
+    .const 'Sub' $P874 = "213_1266337354.28388" 
     capture_lex $P874
-    .const 'Sub' $P869 = "211_1261064023.05912" 
+    .const 'Sub' $P869 = "211_1266337354.28388" 
     capture_lex $P869
-    .const 'Sub' $P861 = "209_1261064023.05912" 
+    .const 'Sub' $P861 = "209_1266337354.28388" 
     capture_lex $P861
-    .const 'Sub' $P853 = "207_1261064023.05912" 
+    .const 'Sub' $P853 = "207_1266337354.28388" 
     capture_lex $P853
-    .const 'Sub' $P848 = "205_1261064023.05912" 
+    .const 'Sub' $P848 = "205_1266337354.28388" 
     capture_lex $P848
-    .const 'Sub' $P843 = "203_1261064023.05912" 
+    .const 'Sub' $P843 = "203_1266337354.28388" 
     capture_lex $P843
-    .const 'Sub' $P837 = "201_1261064023.05912" 
+    .const 'Sub' $P837 = "201_1266337354.28388" 
     capture_lex $P837
-    .const 'Sub' $P831 = "199_1261064023.05912" 
+    .const 'Sub' $P831 = "199_1266337354.28388" 
     capture_lex $P831
-    .const 'Sub' $P825 = "197_1261064023.05912" 
+    .const 'Sub' $P825 = "197_1266337354.28388" 
     capture_lex $P825
-    .const 'Sub' $P819 = "195_1261064023.05912" 
+    .const 'Sub' $P819 = "195_1266337354.28388" 
     capture_lex $P819
-    .const 'Sub' $P813 = "193_1261064023.05912" 
+    .const 'Sub' $P813 = "193_1266337354.28388" 
     capture_lex $P813
-    .const 'Sub' $P808 = "191_1261064023.05912" 
+    .const 'Sub' $P808 = "191_1266337354.28388" 
     capture_lex $P808
-    .const 'Sub' $P803 = "189_1261064023.05912" 
+    .const 'Sub' $P803 = "189_1266337354.28388" 
     capture_lex $P803
-    .const 'Sub' $P790 = "185_1261064023.05912" 
+    .const 'Sub' $P790 = "185_1266337354.28388" 
     capture_lex $P790
-    .const 'Sub' $P782 = "183_1261064023.05912" 
+    .const 'Sub' $P782 = "183_1266337354.28388" 
     capture_lex $P782
-    .const 'Sub' $P776 = "181_1261064023.05912" 
+    .const 'Sub' $P776 = "181_1266337354.28388" 
     capture_lex $P776
-    .const 'Sub' $P769 = "179_1261064023.05912" 
+    .const 'Sub' $P769 = "179_1266337354.28388" 
     capture_lex $P769
-    .const 'Sub' $P763 = "177_1261064023.05912" 
+    .const 'Sub' $P763 = "177_1266337354.28388" 
     capture_lex $P763
-    .const 'Sub' $P755 = "175_1261064023.05912" 
+    .const 'Sub' $P755 = "175_1266337354.28388" 
     capture_lex $P755
-    .const 'Sub' $P747 = "173_1261064023.05912" 
+    .const 'Sub' $P747 = "173_1266337354.28388" 
     capture_lex $P747
-    .const 'Sub' $P741 = "171_1261064023.05912" 
+    .const 'Sub' $P741 = "171_1266337354.28388" 
     capture_lex $P741
-    .const 'Sub' $P735 = "169_1261064023.05912" 
+    .const 'Sub' $P735 = "169_1266337354.28388" 
     capture_lex $P735
-    .const 'Sub' $P720 = "165_1261064023.05912" 
+    .const 'Sub' $P720 = "165_1266337354.28388" 
     capture_lex $P720
-    .const 'Sub' $P688 = "163_1261064023.05912" 
+    .const 'Sub' $P688 = "163_1266337354.28388" 
     capture_lex $P688
-    .const 'Sub' $P680 = "161_1261064023.05912" 
+    .const 'Sub' $P680 = "161_1266337354.28388" 
     capture_lex $P680
-    .const 'Sub' $P674 = "159_1261064023.05912" 
+    .const 'Sub' $P674 = "159_1266337354.28388" 
     capture_lex $P674
-    .const 'Sub' $P664 = "157_1261064023.05912" 
+    .const 'Sub' $P664 = "157_1266337354.28388" 
     capture_lex $P664
-    .const 'Sub' $P649 = "155_1261064023.05912" 
+    .const 'Sub' $P649 = "155_1266337354.28388" 
     capture_lex $P649
-    .const 'Sub' $P640 = "153_1261064023.05912" 
+    .const 'Sub' $P640 = "153_1266337354.28388" 
     capture_lex $P640
-    .const 'Sub' $P621 = "151_1261064023.05912" 
+    .const 'Sub' $P621 = "151_1266337354.28388" 
     capture_lex $P621
-    .const 'Sub' $P597 = "149_1261064023.05912" 
+    .const 'Sub' $P597 = "149_1266337354.28388" 
     capture_lex $P597
-    .const 'Sub' $P590 = "147_1261064023.05912" 
+    .const 'Sub' $P590 = "147_1266337354.28388" 
     capture_lex $P590
-    .const 'Sub' $P583 = "145_1261064023.05912" 
+    .const 'Sub' $P583 = "145_1266337354.28388" 
     capture_lex $P583
-    .const 'Sub' $P573 = "141_1261064023.05912" 
+    .const 'Sub' $P573 = "141_1266337354.28388" 
     capture_lex $P573
-    .const 'Sub' $P562 = "139_1261064023.05912" 
+    .const 'Sub' $P562 = "139_1266337354.28388" 
     capture_lex $P562
-    .const 'Sub' $P555 = "137_1261064023.05912" 
+    .const 'Sub' $P555 = "137_1266337354.28388" 
     capture_lex $P555
-    .const 'Sub' $P548 = "135_1261064023.05912" 
+    .const 'Sub' $P548 = "135_1266337354.28388" 
     capture_lex $P548
-    .const 'Sub' $P541 = "133_1261064023.05912" 
+    .const 'Sub' $P541 = "133_1266337354.28388" 
     capture_lex $P541
-    .const 'Sub' $P514 = "129_1261064023.05912" 
+    .const 'Sub' $P514 = "129_1266337354.28388" 
     capture_lex $P514
-    .const 'Sub' $P505 = "127_1261064023.05912" 
+    .const 'Sub' $P505 = "127_1266337354.28388" 
     capture_lex $P505
-    .const 'Sub' $P498 = "125_1261064023.05912" 
+    .const 'Sub' $P498 = "125_1266337354.28388" 
     capture_lex $P498
-    .const 'Sub' $P489 = "121_1261064023.05912" 
+    .const 'Sub' $P489 = "121_1266337354.28388" 
     capture_lex $P489
-    .const 'Sub' $P484 = "119_1261064023.05912" 
+    .const 'Sub' $P484 = "119_1266337354.28388" 
     capture_lex $P484
-    .const 'Sub' $P472 = "117_1261064023.05912" 
+    .const 'Sub' $P472 = "117_1266337354.28388" 
     capture_lex $P472
-    .const 'Sub' $P460 = "115_1261064023.05912" 
+    .const 'Sub' $P460 = "115_1266337354.28388" 
     capture_lex $P460
-    .const 'Sub' $P452 = "113_1261064023.05912" 
+    .const 'Sub' $P452 = "113_1266337354.28388" 
     capture_lex $P452
-    .const 'Sub' $P447 = "111_1261064023.05912" 
+    .const 'Sub' $P447 = "111_1266337354.28388" 
     capture_lex $P447
-    .const 'Sub' $P441 = "109_1261064023.05912" 
+    .const 'Sub' $P441 = "109_1266337354.28388" 
     capture_lex $P441
-    .const 'Sub' $P435 = "107_1261064023.05912" 
+    .const 'Sub' $P435 = "107_1266337354.28388" 
     capture_lex $P435
-    .const 'Sub' $P429 = "105_1261064023.05912" 
+    .const 'Sub' $P429 = "105_1266337354.28388" 
     capture_lex $P429
-    .const 'Sub' $P423 = "103_1261064023.05912" 
+    .const 'Sub' $P423 = "103_1266337354.28388" 
     capture_lex $P423
-    .const 'Sub' $P417 = "101_1261064023.05912" 
+    .const 'Sub' $P417 = "101_1266337354.28388" 
     capture_lex $P417
-    .const 'Sub' $P411 = "99_1261064023.05912" 
+    .const 'Sub' $P411 = "99_1266337354.28388" 
     capture_lex $P411
-    .const 'Sub' $P405 = "97_1261064023.05912" 
+    .const 'Sub' $P405 = "97_1266337354.28388" 
     capture_lex $P405
-    .const 'Sub' $P399 = "95_1261064023.05912" 
+    .const 'Sub' $P399 = "95_1266337354.28388" 
     capture_lex $P399
-    .const 'Sub' $P391 = "93_1261064023.05912" 
+    .const 'Sub' $P391 = "93_1266337354.28388" 
     capture_lex $P391
-    .const 'Sub' $P383 = "91_1261064023.05912" 
+    .const 'Sub' $P383 = "91_1266337354.28388" 
     capture_lex $P383
-    .const 'Sub' $P371 = "87_1261064023.05912" 
+    .const 'Sub' $P371 = "87_1266337354.28388" 
     capture_lex $P371
-    .const 'Sub' $P363 = "85_1261064023.05912" 
+    .const 'Sub' $P363 = "85_1266337354.28388" 
     capture_lex $P363
-    .const 'Sub' $P353 = "81_1261064023.05912" 
+    .const 'Sub' $P353 = "81_1266337354.28388" 
     capture_lex $P353
-    .const 'Sub' $P346 = "79_1261064023.05912" 
+    .const 'Sub' $P346 = "79_1266337354.28388" 
     capture_lex $P346
-    .const 'Sub' $P339 = "77_1261064023.05912" 
+    .const 'Sub' $P339 = "77_1266337354.28388" 
     capture_lex $P339
-    .const 'Sub' $P327 = "73_1261064023.05912" 
+    .const 'Sub' $P327 = "73_1266337354.28388" 
     capture_lex $P327
-    .const 'Sub' $P319 = "71_1261064023.05912" 
+    .const 'Sub' $P319 = "71_1266337354.28388" 
     capture_lex $P319
-    .const 'Sub' $P311 = "69_1261064023.05912" 
+    .const 'Sub' $P311 = "69_1266337354.28388" 
     capture_lex $P311
-    .const 'Sub' $P291 = "67_1261064023.05912" 
+    .const 'Sub' $P291 = "67_1266337354.28388" 
     capture_lex $P291
-    .const 'Sub' $P282 = "65_1261064023.05912" 
+    .const 'Sub' $P282 = "65_1266337354.28388" 
     capture_lex $P282
-    .const 'Sub' $P264 = "62_1261064023.05912" 
+    .const 'Sub' $P264 = "62_1266337354.28388" 
     capture_lex $P264
-    .const 'Sub' $P244 = "60_1261064023.05912" 
+    .const 'Sub' $P244 = "60_1266337354.28388" 
     capture_lex $P244
-    .const 'Sub' $P235 = "56_1261064023.05912" 
+    .const 'Sub' $P235 = "56_1266337354.28388" 
     capture_lex $P235
-    .const 'Sub' $P230 = "54_1261064023.05912" 
+    .const 'Sub' $P230 = "54_1266337354.28388" 
     capture_lex $P230
-    .const 'Sub' $P221 = "50_1261064023.05912" 
+    .const 'Sub' $P221 = "50_1266337354.28388" 
     capture_lex $P221
-    .const 'Sub' $P216 = "48_1261064023.05912" 
+    .const 'Sub' $P216 = "48_1266337354.28388" 
     capture_lex $P216
-    .const 'Sub' $P208 = "46_1261064023.05912" 
+    .const 'Sub' $P208 = "46_1266337354.28388" 
     capture_lex $P208
-    .const 'Sub' $P201 = "44_1261064023.05912" 
+    .const 'Sub' $P201 = "44_1266337354.28388" 
     capture_lex $P201
-    .const 'Sub' $P195 = "42_1261064023.05912" 
+    .const 'Sub' $P195 = "42_1266337354.28388" 
     capture_lex $P195
-    .const 'Sub' $P187 = "40_1261064023.05912" 
+    .const 'Sub' $P187 = "40_1266337354.28388" 
     capture_lex $P187
-    .const 'Sub' $P181 = "38_1261064023.05912" 
+    .const 'Sub' $P181 = "38_1266337354.28388" 
     capture_lex $P181
-    .const 'Sub' $P175 = "36_1261064023.05912" 
+    .const 'Sub' $P175 = "36_1266337354.28388" 
     capture_lex $P175
-    .const 'Sub' $P159 = "33_1261064023.05912" 
+    .const 'Sub' $P159 = "33_1266337354.28388" 
     capture_lex $P159
-    .const 'Sub' $P146 = "31_1261064023.05912" 
+    .const 'Sub' $P146 = "31_1266337354.28388" 
     capture_lex $P146
-    .const 'Sub' $P139 = "29_1261064023.05912" 
+    .const 'Sub' $P139 = "29_1266337354.28388" 
     capture_lex $P139
-    .const 'Sub' $P96 = "26_1261064023.05912" 
+    .const 'Sub' $P96 = "26_1266337354.28388" 
     capture_lex $P96
-    .const 'Sub' $P78 = "23_1261064023.05912" 
+    .const 'Sub' $P78 = "23_1266337354.28388" 
     capture_lex $P78
-    .const 'Sub' $P68 = "21_1261064023.05912" 
+    .const 'Sub' $P68 = "21_1266337354.28388" 
     capture_lex $P68
-    .const 'Sub' $P54 = "19_1261064023.05912" 
+    .const 'Sub' $P54 = "19_1266337354.28388" 
     capture_lex $P54
-    .const 'Sub' $P46 = "17_1261064023.05912" 
+    .const 'Sub' $P46 = "17_1266337354.28388" 
     capture_lex $P46
-    .const 'Sub' $P39 = "15_1261064023.05912" 
+    .const 'Sub' $P39 = "15_1266337354.28388" 
     capture_lex $P39
-    .const 'Sub' $P33 = "13_1261064023.05912" 
+    .const 'Sub' $P33 = "13_1266337354.28388" 
     capture_lex $P33
-    .const 'Sub' $P15 = "12_1261064023.05912" 
+    .const 'Sub' $P15 = "12_1266337354.28388" 
     capture_lex $P15
 .annotate "line", 527
     get_hll_global $P1235, ["NQP";"Regex"], "_block1234" 
@@ -338,7 +338,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "" :load :init :subid("post332") :outer("11_1261064023.05912")
+.sub "" :load :init :subid("post332") :outer("11_1266337354.28388")
 .annotate "line", 4
     get_hll_global $P14, ["NQP";"Grammar"], "_block13" 
     .local pmc block
@@ -395,7 +395,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "TOP"  :subid("12_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "TOP"  :subid("12_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     new $P17, 'ExceptionHandler'
     set_addr $P17, control_16
@@ -478,7 +478,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "identifier"  :subid("13_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "identifier"  :subid("13_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx34_tgt
     .local int rx34_pos
@@ -536,7 +536,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__identifier"  :subid("14_1261064023.05912") :method
+.sub "!PREFIX__identifier"  :subid("14_1266337354.28388") :method
 .annotate "line", 4
     $P36 = self."!PREFIX__!subrule"("ident", "")
     new $P37, "ResizablePMCArray"
@@ -546,7 +546,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "name"  :subid("15_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "name"  :subid("15_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx40_tgt
     .local int rx40_pos
@@ -620,7 +620,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__name"  :subid("16_1261064023.05912") :method
+.sub "!PREFIX__name"  :subid("16_1266337354.28388") :method
 .annotate "line", 4
     new $P42, "ResizablePMCArray"
     push $P42, ""
@@ -629,7 +629,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "deflongname"  :subid("17_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "deflongname"  :subid("17_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx47_tgt
     .local int rx47_pos
@@ -702,7 +702,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__deflongname"  :subid("18_1261064023.05912") :method
+.sub "!PREFIX__deflongname"  :subid("18_1266337354.28388") :method
 .annotate "line", 4
     $P49 = self."!PREFIX__!subrule"("identifier", "")
     new $P50, "ResizablePMCArray"
@@ -712,7 +712,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "ENDSTMT"  :subid("19_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "ENDSTMT"  :subid("19_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx55_tgt
     .local int rx55_pos
@@ -844,7 +844,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ENDSTMT"  :subid("20_1261064023.05912") :method
+.sub "!PREFIX__ENDSTMT"  :subid("20_1266337354.28388") :method
 .annotate "line", 4
     new $P57, "ResizablePMCArray"
     push $P57, ""
@@ -853,7 +853,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "ws"  :subid("21_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "ws"  :subid("21_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx69_tgt
     .local int rx69_pos
@@ -979,7 +979,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ws"  :subid("22_1261064023.05912") :method
+.sub "!PREFIX__ws"  :subid("22_1266337354.28388") :method
 .annotate "line", 4
     new $P71, "ResizablePMCArray"
     push $P71, ""
@@ -989,9 +989,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "unv"  :subid("23_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "unv"  :subid("23_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
-    .const 'Sub' $P86 = "25_1261064023.05912" 
+    .const 'Sub' $P86 = "25_1266337354.28388" 
     capture_lex $P86
     .local string rx79_tgt
     .local int rx79_pos
@@ -1037,7 +1037,7 @@
   rxanchor84_done:
   # rx subrule "before" subtype=zerowidth negate=
     rx79_cur."!cursor_pos"(rx79_pos)
-    .const 'Sub' $P86 = "25_1261064023.05912" 
+    .const 'Sub' $P86 = "25_1266337354.28388" 
     capture_lex $P86
     $P10 = rx79_cur."before"($P86)
     unless $P10, rx79_fail
@@ -1116,7 +1116,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__unv"  :subid("24_1261064023.05912") :method
+.sub "!PREFIX__unv"  :subid("24_1266337354.28388") :method
 .annotate "line", 4
     new $P81, "ResizablePMCArray"
     push $P81, ""
@@ -1127,7 +1127,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block85"  :anon :subid("25_1261064023.05912") :method :outer("23_1261064023.05912")
+.sub "_block85"  :anon :subid("25_1266337354.28388") :method :outer("23_1266337354.28388")
 .annotate "line", 44
     .local string rx87_tgt
     .local int rx87_pos
@@ -1217,9 +1217,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "pod_comment"  :subid("26_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "pod_comment"  :subid("26_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
-    .const 'Sub' $P131 = "28_1261064023.05912" 
+    .const 'Sub' $P131 = "28_1266337354.28388" 
     capture_lex $P131
     .local string rx97_tgt
     .local int rx97_pos
@@ -1651,7 +1651,7 @@
 .annotate "line", 67
   # rx subrule "before" subtype=zerowidth negate=
     rx97_cur."!cursor_pos"(rx97_pos)
-    .const 'Sub' $P131 = "28_1261064023.05912" 
+    .const 'Sub' $P131 = "28_1266337354.28388" 
     capture_lex $P131
     $P10 = rx97_cur."before"($P131)
     unless $P10, rx97_fail
@@ -1718,7 +1718,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__pod_comment"  :subid("27_1261064023.05912") :method
+.sub "!PREFIX__pod_comment"  :subid("27_1266337354.28388") :method
 .annotate "line", 4
     new $P99, "ResizablePMCArray"
     push $P99, ""
@@ -1727,7 +1727,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block130"  :anon :subid("28_1261064023.05912") :method :outer("26_1261064023.05912")
+.sub "_block130"  :anon :subid("28_1266337354.28388") :method :outer("26_1266337354.28388")
 .annotate "line", 67
     .local string rx132_tgt
     .local int rx132_pos
@@ -1810,7 +1810,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "comp_unit"  :subid("29_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "comp_unit"  :subid("29_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx140_tgt
     .local int rx140_pos
@@ -1889,7 +1889,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__comp_unit"  :subid("30_1261064023.05912") :method
+.sub "!PREFIX__comp_unit"  :subid("30_1266337354.28388") :method
 .annotate "line", 4
     $P142 = self."!PREFIX__!subrule"("", "")
     new $P143, "ResizablePMCArray"
@@ -1899,7 +1899,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statementlist"  :subid("31_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statementlist"  :subid("31_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx147_tgt
     .local int rx147_pos
@@ -2007,7 +2007,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statementlist"  :subid("32_1261064023.05912") :method
+.sub "!PREFIX__statementlist"  :subid("32_1266337354.28388") :method
 .annotate "line", 4
     new $P149, "ResizablePMCArray"
     push $P149, ""
@@ -2017,9 +2017,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement"  :subid("33_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement"  :subid("33_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
-    .const 'Sub' $P165 = "35_1261064023.05912" 
+    .const 'Sub' $P165 = "35_1266337354.28388" 
     capture_lex $P165
     .local string rx160_tgt
     .local int rx160_pos
@@ -2029,7 +2029,7 @@
     .local pmc rx160_cur
     (rx160_cur, rx160_pos, rx160_tgt) = self."!cursor_start"()
     rx160_cur."!cursor_debug"("START ", "statement")
-    rx160_cur."!cursor_caparray"("statement_mod_loop", "statement_mod_cond")
+    rx160_cur."!cursor_caparray"("statement_mod_cond", "statement_mod_loop")
     .lex unicode:"$\x{a2}", rx160_cur
     .local pmc match
     .lex "$/", match
@@ -2054,7 +2054,7 @@
 .annotate "line", 89
   # rx subrule "before" subtype=zerowidth negate=1
     rx160_cur."!cursor_pos"(rx160_pos)
-    .const 'Sub' $P165 = "35_1261064023.05912" 
+    .const 'Sub' $P165 = "35_1266337354.28388" 
     capture_lex $P165
     $P10 = rx160_cur."before"($P165)
     if $P10, rx160_fail
@@ -2150,7 +2150,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement"  :subid("34_1261064023.05912") :method
+.sub "!PREFIX__statement"  :subid("34_1266337354.28388") :method
 .annotate "line", 4
     new $P162, "ResizablePMCArray"
     push $P162, ""
@@ -2159,7 +2159,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block164"  :anon :subid("35_1261064023.05912") :method :outer("33_1261064023.05912")
+.sub "_block164"  :anon :subid("35_1266337354.28388") :method :outer("33_1266337354.28388")
 .annotate "line", 89
     .local string rx166_tgt
     .local int rx166_pos
@@ -2223,7 +2223,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "eat_terminator"  :subid("36_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "eat_terminator"  :subid("36_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx176_tgt
     .local int rx176_pos
@@ -2310,7 +2310,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__eat_terminator"  :subid("37_1261064023.05912") :method
+.sub "!PREFIX__eat_terminator"  :subid("37_1266337354.28388") :method
 .annotate "line", 4
     new $P178, "ResizablePMCArray"
     push $P178, ""
@@ -2322,7 +2322,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "xblock"  :subid("38_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "xblock"  :subid("38_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx182_tgt
     .local int rx182_pos
@@ -2393,7 +2393,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__xblock"  :subid("39_1261064023.05912") :method
+.sub "!PREFIX__xblock"  :subid("39_1266337354.28388") :method
 .annotate "line", 4
     $P184 = self."!PREFIX__!subrule"("EXPR", "")
     new $P185, "ResizablePMCArray"
@@ -2403,7 +2403,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "pblock"  :subid("40_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "pblock"  :subid("40_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx188_tgt
     .local int rx188_pos
@@ -2522,7 +2522,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__pblock"  :subid("41_1261064023.05912") :method
+.sub "!PREFIX__pblock"  :subid("41_1266337354.28388") :method
 .annotate "line", 4
     $P190 = self."!PREFIX__!subrule"("", "")
     $P191 = self."!PREFIX__!subrule"("", "")
@@ -2535,7 +2535,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "lambda"  :subid("42_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "lambda"  :subid("42_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx196_tgt
     .local int rx196_pos
@@ -2606,7 +2606,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__lambda"  :subid("43_1261064023.05912") :method
+.sub "!PREFIX__lambda"  :subid("43_1266337354.28388") :method
 .annotate "line", 4
     new $P198, "ResizablePMCArray"
     push $P198, "<->"
@@ -2616,7 +2616,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "block"  :subid("44_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "block"  :subid("44_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx202_tgt
     .local int rx202_pos
@@ -2699,7 +2699,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__block"  :subid("45_1261064023.05912") :method
+.sub "!PREFIX__block"  :subid("45_1266337354.28388") :method
 .annotate "line", 4
     $P204 = self."!PREFIX__!subrule"("", "")
     new $P205, "ResizablePMCArray"
@@ -2710,7 +2710,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "blockoid"  :subid("46_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "blockoid"  :subid("46_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx209_tgt
     .local int rx209_pos
@@ -2805,7 +2805,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__blockoid"  :subid("47_1261064023.05912") :method
+.sub "!PREFIX__blockoid"  :subid("47_1266337354.28388") :method
 .annotate "line", 4
     $P211 = self."!PREFIX__!subrule"("", "")
     new $P212, "ResizablePMCArray"
@@ -2815,7 +2815,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "newpad"  :subid("48_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "newpad"  :subid("48_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx217_tgt
     .local int rx217_pos
@@ -2866,7 +2866,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__newpad"  :subid("49_1261064023.05912") :method
+.sub "!PREFIX__newpad"  :subid("49_1266337354.28388") :method
 .annotate "line", 4
     new $P219, "ResizablePMCArray"
     push $P219, ""
@@ -2875,7 +2875,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "finishpad"  :subid("50_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "finishpad"  :subid("50_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx222_tgt
     .local int rx222_pos
@@ -2926,7 +2926,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__finishpad"  :subid("51_1261064023.05912") :method
+.sub "!PREFIX__finishpad"  :subid("51_1266337354.28388") :method
 .annotate "line", 4
     new $P224, "ResizablePMCArray"
     push $P224, ""
@@ -2935,7 +2935,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "terminator"  :subid("52_1261064023.05912") :method
+.sub "terminator"  :subid("52_1266337354.28388") :method
 .annotate "line", 139
     $P227 = self."!protoregex"("terminator")
     .return ($P227)
@@ -2943,7 +2943,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator"  :subid("53_1261064023.05912") :method
+.sub "!PREFIX__terminator"  :subid("53_1266337354.28388") :method
 .annotate "line", 139
     $P229 = self."!PREFIX__!protoregex"("terminator")
     .return ($P229)
@@ -2951,7 +2951,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "terminator:sym<;>"  :subid("54_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "terminator:sym<;>"  :subid("54_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx231_tgt
     .local int rx231_pos
@@ -3008,7 +3008,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator:sym<;>"  :subid("55_1261064023.05912") :method
+.sub "!PREFIX__terminator:sym<;>"  :subid("55_1266337354.28388") :method
 .annotate "line", 4
     new $P233, "ResizablePMCArray"
     push $P233, ";"
@@ -3017,7 +3017,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "terminator:sym<}>"  :subid("56_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "terminator:sym<}>"  :subid("56_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx236_tgt
     .local int rx236_pos
@@ -3074,7 +3074,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator:sym<}>"  :subid("57_1261064023.05912") :method
+.sub "!PREFIX__terminator:sym<}>"  :subid("57_1266337354.28388") :method
 .annotate "line", 4
     new $P238, "ResizablePMCArray"
     push $P238, "}"
@@ -3083,7 +3083,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control"  :subid("58_1261064023.05912") :method
+.sub "statement_control"  :subid("58_1266337354.28388") :method
 .annotate "line", 146
     $P241 = self."!protoregex"("statement_control")
     .return ($P241)
@@ -3091,7 +3091,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control"  :subid("59_1261064023.05912") :method
+.sub "!PREFIX__statement_control"  :subid("59_1266337354.28388") :method
 .annotate "line", 146
     $P243 = self."!PREFIX__!protoregex"("statement_control")
     .return ($P243)
@@ -3099,7 +3099,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<if>"  :subid("60_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_control:sym<if>"  :subid("60_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx245_tgt
     .local int rx245_pos
@@ -3109,7 +3109,7 @@
     .local pmc rx245_cur
     (rx245_cur, rx245_pos, rx245_tgt) = self."!cursor_start"()
     rx245_cur."!cursor_debug"("START ", "statement_control:sym<if>")
-    rx245_cur."!cursor_caparray"("xblock", "else")
+    rx245_cur."!cursor_caparray"("else", "xblock")
     .lex unicode:"$\x{a2}", rx245_cur
     .local pmc match
     .lex "$/", match
@@ -3293,7 +3293,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<if>"  :subid("61_1261064023.05912") :method
+.sub "!PREFIX__statement_control:sym<if>"  :subid("61_1266337354.28388") :method
 .annotate "line", 4
     new $P247, "ResizablePMCArray"
     push $P247, "if"
@@ -3302,9 +3302,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<unless>"  :subid("62_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_control:sym<unless>"  :subid("62_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
-    .const 'Sub' $P275 = "64_1261064023.05912" 
+    .const 'Sub' $P275 = "64_1266337354.28388" 
     capture_lex $P275
     .local string rx265_tgt
     .local int rx265_pos
@@ -3392,7 +3392,7 @@
     rx265_pos = $P10."pos"()
   # rx subrule "before" subtype=zerowidth negate=1
     rx265_cur."!cursor_pos"(rx265_pos)
-    .const 'Sub' $P275 = "64_1261064023.05912" 
+    .const 'Sub' $P275 = "64_1266337354.28388" 
     capture_lex $P275
     $P10 = rx265_cur."before"($P275)
     if $P10, rx265_fail
@@ -3444,7 +3444,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<unless>"  :subid("63_1261064023.05912") :method
+.sub "!PREFIX__statement_control:sym<unless>"  :subid("63_1266337354.28388") :method
 .annotate "line", 4
     new $P267, "ResizablePMCArray"
     push $P267, "unless"
@@ -3453,7 +3453,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block274"  :anon :subid("64_1261064023.05912") :method :outer("62_1261064023.05912")
+.sub "_block274"  :anon :subid("64_1266337354.28388") :method :outer("62_1266337354.28388")
 .annotate "line", 158
     .local string rx276_tgt
     .local int rx276_pos
@@ -3509,7 +3509,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<while>"  :subid("65_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_control:sym<while>"  :subid("65_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx283_tgt
     .local int rx283_pos
@@ -3619,7 +3619,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<while>"  :subid("66_1261064023.05912") :method
+.sub "!PREFIX__statement_control:sym<while>"  :subid("66_1266337354.28388") :method
 .annotate "line", 4
     new $P285, "ResizablePMCArray"
     push $P285, "until"
@@ -3629,7 +3629,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<repeat>"  :subid("67_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_control:sym<repeat>"  :subid("67_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx292_tgt
     .local int rx292_pos
@@ -3864,7 +3864,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<repeat>"  :subid("68_1261064023.05912") :method
+.sub "!PREFIX__statement_control:sym<repeat>"  :subid("68_1266337354.28388") :method
 .annotate "line", 4
     new $P294, "ResizablePMCArray"
     push $P294, "repeat"
@@ -3873,7 +3873,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<for>"  :subid("69_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_control:sym<for>"  :subid("69_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx312_tgt
     .local int rx312_pos
@@ -3970,7 +3970,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<for>"  :subid("70_1261064023.05912") :method
+.sub "!PREFIX__statement_control:sym<for>"  :subid("70_1266337354.28388") :method
 .annotate "line", 4
     new $P314, "ResizablePMCArray"
     push $P314, "for"
@@ -3979,7 +3979,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<CATCH>"  :subid("71_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_control:sym<CATCH>"  :subid("71_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx320_tgt
     .local int rx320_pos
@@ -4076,7 +4076,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<CATCH>"  :subid("72_1261064023.05912") :method
+.sub "!PREFIX__statement_control:sym<CATCH>"  :subid("72_1266337354.28388") :method
 .annotate "line", 4
     new $P322, "ResizablePMCArray"
     push $P322, "CATCH"
@@ -4085,7 +4085,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<CONTROL>"  :subid("73_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_control:sym<CONTROL>"  :subid("73_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx328_tgt
     .local int rx328_pos
@@ -4182,7 +4182,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<CONTROL>"  :subid("74_1261064023.05912") :method
+.sub "!PREFIX__statement_control:sym<CONTROL>"  :subid("74_1266337354.28388") :method
 .annotate "line", 4
     new $P330, "ResizablePMCArray"
     push $P330, "CONTROL"
@@ -4191,7 +4191,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_prefix"  :subid("75_1261064023.05912") :method
+.sub "statement_prefix"  :subid("75_1266337354.28388") :method
 .annotate "line", 189
     $P336 = self."!protoregex"("statement_prefix")
     .return ($P336)
@@ -4199,7 +4199,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix"  :subid("76_1261064023.05912") :method
+.sub "!PREFIX__statement_prefix"  :subid("76_1266337354.28388") :method
 .annotate "line", 189
     $P338 = self."!PREFIX__!protoregex"("statement_prefix")
     .return ($P338)
@@ -4207,7 +4207,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_prefix:sym<INIT>"  :subid("77_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_prefix:sym<INIT>"  :subid("77_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx340_tgt
     .local int rx340_pos
@@ -4286,7 +4286,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix:sym<INIT>"  :subid("78_1261064023.05912") :method
+.sub "!PREFIX__statement_prefix:sym<INIT>"  :subid("78_1266337354.28388") :method
 .annotate "line", 4
     $P342 = self."!PREFIX__!subrule"("blorst", "INIT")
     new $P343, "ResizablePMCArray"
@@ -4296,7 +4296,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_prefix:sym<try>"  :subid("79_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_prefix:sym<try>"  :subid("79_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx347_tgt
     .local int rx347_pos
@@ -4377,7 +4377,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix:sym<try>"  :subid("80_1261064023.05912") :method
+.sub "!PREFIX__statement_prefix:sym<try>"  :subid("80_1266337354.28388") :method
 .annotate "line", 4
     $P349 = self."!PREFIX__!subrule"("blorst", "try")
     new $P350, "ResizablePMCArray"
@@ -4387,7 +4387,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "blorst"  :subid("81_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "blorst"  :subid("81_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx354_tgt
     .local int rx354_pos
@@ -4476,7 +4476,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__blorst"  :subid("82_1261064023.05912") :method
+.sub "!PREFIX__blorst"  :subid("82_1266337354.28388") :method
 .annotate "line", 4
     new $P356, "ResizablePMCArray"
     push $P356, ""
@@ -4485,7 +4485,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond"  :subid("83_1261064023.05912") :method
+.sub "statement_mod_cond"  :subid("83_1266337354.28388") :method
 .annotate "line", 203
     $P360 = self."!protoregex"("statement_mod_cond")
     .return ($P360)
@@ -4493,7 +4493,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond"  :subid("84_1261064023.05912") :method
+.sub "!PREFIX__statement_mod_cond"  :subid("84_1266337354.28388") :method
 .annotate "line", 203
     $P362 = self."!PREFIX__!protoregex"("statement_mod_cond")
     .return ($P362)
@@ -4501,7 +4501,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond:sym<if>"  :subid("85_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_mod_cond:sym<if>"  :subid("85_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx364_tgt
     .local int rx364_pos
@@ -4590,7 +4590,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond:sym<if>"  :subid("86_1261064023.05912") :method
+.sub "!PREFIX__statement_mod_cond:sym<if>"  :subid("86_1266337354.28388") :method
 .annotate "line", 4
     new $P366, "ResizablePMCArray"
     push $P366, "if"
@@ -4599,7 +4599,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond:sym<unless>"  :subid("87_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_mod_cond:sym<unless>"  :subid("87_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx372_tgt
     .local int rx372_pos
@@ -4688,7 +4688,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond:sym<unless>"  :subid("88_1261064023.05912") :method
+.sub "!PREFIX__statement_mod_cond:sym<unless>"  :subid("88_1266337354.28388") :method
 .annotate "line", 4
     new $P374, "ResizablePMCArray"
     push $P374, "unless"
@@ -4697,7 +4697,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop"  :subid("89_1261064023.05912") :method
+.sub "statement_mod_loop"  :subid("89_1266337354.28388") :method
 .annotate "line", 208
     $P380 = self."!protoregex"("statement_mod_loop")
     .return ($P380)
@@ -4705,7 +4705,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop"  :subid("90_1261064023.05912") :method
+.sub "!PREFIX__statement_mod_loop"  :subid("90_1266337354.28388") :method
 .annotate "line", 208
     $P382 = self."!PREFIX__!protoregex"("statement_mod_loop")
     .return ($P382)
@@ -4713,7 +4713,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop:sym<while>"  :subid("91_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_mod_loop:sym<while>"  :subid("91_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx384_tgt
     .local int rx384_pos
@@ -4802,7 +4802,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop:sym<while>"  :subid("92_1261064023.05912") :method
+.sub "!PREFIX__statement_mod_loop:sym<while>"  :subid("92_1266337354.28388") :method
 .annotate "line", 4
     new $P386, "ResizablePMCArray"
     push $P386, "while"
@@ -4811,7 +4811,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop:sym<until>"  :subid("93_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "statement_mod_loop:sym<until>"  :subid("93_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx392_tgt
     .local int rx392_pos
@@ -4900,7 +4900,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop:sym<until>"  :subid("94_1261064023.05912") :method
+.sub "!PREFIX__statement_mod_loop:sym<until>"  :subid("94_1266337354.28388") :method
 .annotate "line", 4
     new $P394, "ResizablePMCArray"
     push $P394, "until"
@@ -4909,7 +4909,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<fatarrow>"  :subid("95_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<fatarrow>"  :subid("95_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx400_tgt
     .local int rx400_pos
@@ -4967,7 +4967,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<fatarrow>"  :subid("96_1261064023.05912") :method
+.sub "!PREFIX__term:sym<fatarrow>"  :subid("96_1266337354.28388") :method
 .annotate "line", 4
     $P402 = self."!PREFIX__!subrule"("fatarrow", "")
     new $P403, "ResizablePMCArray"
@@ -4977,7 +4977,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<colonpair>"  :subid("97_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<colonpair>"  :subid("97_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx406_tgt
     .local int rx406_pos
@@ -5035,7 +5035,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<colonpair>"  :subid("98_1261064023.05912") :method
+.sub "!PREFIX__term:sym<colonpair>"  :subid("98_1266337354.28388") :method
 .annotate "line", 4
     $P408 = self."!PREFIX__!subrule"("colonpair", "")
     new $P409, "ResizablePMCArray"
@@ -5045,7 +5045,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<variable>"  :subid("99_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<variable>"  :subid("99_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx412_tgt
     .local int rx412_pos
@@ -5103,7 +5103,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<variable>"  :subid("100_1261064023.05912") :method
+.sub "!PREFIX__term:sym<variable>"  :subid("100_1266337354.28388") :method
 .annotate "line", 4
     $P414 = self."!PREFIX__!subrule"("variable", "")
     new $P415, "ResizablePMCArray"
@@ -5113,7 +5113,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<package_declarator>"  :subid("101_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<package_declarator>"  :subid("101_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx418_tgt
     .local int rx418_pos
@@ -5171,7 +5171,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<package_declarator>"  :subid("102_1261064023.05912") :method
+.sub "!PREFIX__term:sym<package_declarator>"  :subid("102_1266337354.28388") :method
 .annotate "line", 4
     $P420 = self."!PREFIX__!subrule"("package_declarator", "")
     new $P421, "ResizablePMCArray"
@@ -5181,7 +5181,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<scope_declarator>"  :subid("103_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<scope_declarator>"  :subid("103_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx424_tgt
     .local int rx424_pos
@@ -5239,7 +5239,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<scope_declarator>"  :subid("104_1261064023.05912") :method
+.sub "!PREFIX__term:sym<scope_declarator>"  :subid("104_1266337354.28388") :method
 .annotate "line", 4
     $P426 = self."!PREFIX__!subrule"("scope_declarator", "")
     new $P427, "ResizablePMCArray"
@@ -5249,7 +5249,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<routine_declarator>"  :subid("105_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<routine_declarator>"  :subid("105_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx430_tgt
     .local int rx430_pos
@@ -5307,7 +5307,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<routine_declarator>"  :subid("106_1261064023.05912") :method
+.sub "!PREFIX__term:sym<routine_declarator>"  :subid("106_1266337354.28388") :method
 .annotate "line", 4
     $P432 = self."!PREFIX__!subrule"("routine_declarator", "")
     new $P433, "ResizablePMCArray"
@@ -5317,7 +5317,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<regex_declarator>"  :subid("107_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<regex_declarator>"  :subid("107_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx436_tgt
     .local int rx436_pos
@@ -5375,7 +5375,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<regex_declarator>"  :subid("108_1261064023.05912") :method
+.sub "!PREFIX__term:sym<regex_declarator>"  :subid("108_1266337354.28388") :method
 .annotate "line", 4
     $P438 = self."!PREFIX__!subrule"("regex_declarator", "")
     new $P439, "ResizablePMCArray"
@@ -5385,7 +5385,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<statement_prefix>"  :subid("109_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<statement_prefix>"  :subid("109_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx442_tgt
     .local int rx442_pos
@@ -5443,7 +5443,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<statement_prefix>"  :subid("110_1261064023.05912") :method
+.sub "!PREFIX__term:sym<statement_prefix>"  :subid("110_1266337354.28388") :method
 .annotate "line", 4
     $P444 = self."!PREFIX__!subrule"("statement_prefix", "")
     new $P445, "ResizablePMCArray"
@@ -5453,7 +5453,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<lambda>"  :subid("111_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<lambda>"  :subid("111_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx448_tgt
     .local int rx448_pos
@@ -5515,7 +5515,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<lambda>"  :subid("112_1261064023.05912") :method
+.sub "!PREFIX__term:sym<lambda>"  :subid("112_1266337354.28388") :method
 .annotate "line", 4
     new $P450, "ResizablePMCArray"
     push $P450, ""
@@ -5524,7 +5524,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "fatarrow"  :subid("113_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "fatarrow"  :subid("113_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx453_tgt
     .local int rx453_pos
@@ -5617,7 +5617,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__fatarrow"  :subid("114_1261064023.05912") :method
+.sub "!PREFIX__fatarrow"  :subid("114_1266337354.28388") :method
 .annotate "line", 4
     $P455 = self."!PREFIX__!subrule"("key", "")
     new $P456, "ResizablePMCArray"
@@ -5627,7 +5627,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "colonpair"  :subid("115_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "colonpair"  :subid("115_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx461_tgt
     .local int rx461_pos
@@ -5756,7 +5756,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__colonpair"  :subid("116_1261064023.05912") :method
+.sub "!PREFIX__colonpair"  :subid("116_1266337354.28388") :method
 .annotate "line", 4
     $P463 = self."!PREFIX__!subrule"("circumfix", ":")
     $P464 = self."!PREFIX__!subrule"("identifier", ":")
@@ -5770,7 +5770,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "variable"  :subid("117_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "variable"  :subid("117_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx473_tgt
     .local int rx473_pos
@@ -5925,7 +5925,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__variable"  :subid("118_1261064023.05912") :method
+.sub "!PREFIX__variable"  :subid("118_1266337354.28388") :method
 .annotate "line", 4
     $P475 = self."!PREFIX__!subrule"("sigil", "")
     $P476 = self."!PREFIX__!subrule"("sigil", "")
@@ -5940,7 +5940,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "sigil"  :subid("119_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "sigil"  :subid("119_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx485_tgt
     .local int rx485_pos
@@ -5998,7 +5998,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__sigil"  :subid("120_1261064023.05912") :method
+.sub "!PREFIX__sigil"  :subid("120_1266337354.28388") :method
 .annotate "line", 4
     new $P487, "ResizablePMCArray"
     push $P487, "&"
@@ -6010,7 +6010,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "twigil"  :subid("121_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "twigil"  :subid("121_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx490_tgt
     .local int rx490_pos
@@ -6068,7 +6068,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__twigil"  :subid("122_1261064023.05912") :method
+.sub "!PREFIX__twigil"  :subid("122_1266337354.28388") :method
 .annotate "line", 4
     new $P492, "ResizablePMCArray"
     push $P492, "?"
@@ -6079,7 +6079,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_declarator"  :subid("123_1261064023.05912") :method
+.sub "package_declarator"  :subid("123_1266337354.28388") :method
 .annotate "line", 248
     $P495 = self."!protoregex"("package_declarator")
     .return ($P495)
@@ -6087,7 +6087,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator"  :subid("124_1261064023.05912") :method
+.sub "!PREFIX__package_declarator"  :subid("124_1266337354.28388") :method
 .annotate "line", 248
     $P497 = self."!PREFIX__!protoregex"("package_declarator")
     .return ($P497)
@@ -6095,7 +6095,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_declarator:sym<module>"  :subid("125_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "package_declarator:sym<module>"  :subid("125_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx499_tgt
     .local int rx499_pos
@@ -6174,7 +6174,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator:sym<module>"  :subid("126_1261064023.05912") :method
+.sub "!PREFIX__package_declarator:sym<module>"  :subid("126_1266337354.28388") :method
 .annotate "line", 4
     $P501 = self."!PREFIX__!subrule"("package_def", "module")
     new $P502, "ResizablePMCArray"
@@ -6184,7 +6184,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_declarator:sym<class>"  :subid("127_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "package_declarator:sym<class>"  :subid("127_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx506_tgt
     .local int rx506_pos
@@ -6276,7 +6276,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator:sym<class>"  :subid("128_1261064023.05912") :method
+.sub "!PREFIX__package_declarator:sym<class>"  :subid("128_1266337354.28388") :method
 .annotate "line", 4
     $P508 = self."!PREFIX__!subrule"("package_def", "grammar")
     $P509 = self."!PREFIX__!subrule"("package_def", "class")
@@ -6288,7 +6288,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_def"  :subid("129_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "package_def"  :subid("129_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx515_tgt
     .local int rx515_pos
@@ -6492,7 +6492,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_def"  :subid("130_1261064023.05912") :method
+.sub "!PREFIX__package_def"  :subid("130_1266337354.28388") :method
 .annotate "line", 4
     new $P517, "ResizablePMCArray"
     push $P517, ""
@@ -6501,7 +6501,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator"  :subid("131_1261064023.05912") :method
+.sub "scope_declarator"  :subid("131_1266337354.28388") :method
 .annotate "line", 262
     $P538 = self."!protoregex"("scope_declarator")
     .return ($P538)
@@ -6509,7 +6509,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator"  :subid("132_1261064023.05912") :method
+.sub "!PREFIX__scope_declarator"  :subid("132_1266337354.28388") :method
 .annotate "line", 262
     $P540 = self."!PREFIX__!protoregex"("scope_declarator")
     .return ($P540)
@@ -6517,7 +6517,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<my>"  :subid("133_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "scope_declarator:sym<my>"  :subid("133_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx542_tgt
     .local int rx542_pos
@@ -6596,7 +6596,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<my>"  :subid("134_1261064023.05912") :method
+.sub "!PREFIX__scope_declarator:sym<my>"  :subid("134_1266337354.28388") :method
 .annotate "line", 4
     $P544 = self."!PREFIX__!subrule"("scoped", "my")
     new $P545, "ResizablePMCArray"
@@ -6606,7 +6606,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<our>"  :subid("135_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "scope_declarator:sym<our>"  :subid("135_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx549_tgt
     .local int rx549_pos
@@ -6685,7 +6685,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<our>"  :subid("136_1261064023.05912") :method
+.sub "!PREFIX__scope_declarator:sym<our>"  :subid("136_1266337354.28388") :method
 .annotate "line", 4
     $P551 = self."!PREFIX__!subrule"("scoped", "our")
     new $P552, "ResizablePMCArray"
@@ -6695,7 +6695,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<has>"  :subid("137_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "scope_declarator:sym<has>"  :subid("137_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx556_tgt
     .local int rx556_pos
@@ -6774,7 +6774,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<has>"  :subid("138_1261064023.05912") :method
+.sub "!PREFIX__scope_declarator:sym<has>"  :subid("138_1266337354.28388") :method
 .annotate "line", 4
     $P558 = self."!PREFIX__!subrule"("scoped", "has")
     new $P559, "ResizablePMCArray"
@@ -6784,7 +6784,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scoped"  :subid("139_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "scoped"  :subid("139_1266337354.28388") :method :outer("11_1266337354.28388")
     .param pmc param_563
 .annotate "line", 267
     .lex "$*SCOPE", param_563
@@ -6881,7 +6881,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scoped"  :subid("140_1261064023.05912") :method
+.sub "!PREFIX__scoped"  :subid("140_1266337354.28388") :method
 .annotate "line", 4
     new $P566, "ResizablePMCArray"
     push $P566, ""
@@ -6891,7 +6891,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "variable_declarator"  :subid("141_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "variable_declarator"  :subid("141_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx574_tgt
     .local int rx574_pos
@@ -6949,7 +6949,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__variable_declarator"  :subid("142_1261064023.05912") :method
+.sub "!PREFIX__variable_declarator"  :subid("142_1266337354.28388") :method
 .annotate "line", 4
     $P576 = self."!PREFIX__!subrule"("variable", "")
     new $P577, "ResizablePMCArray"
@@ -6959,7 +6959,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_declarator"  :subid("143_1261064023.05912") :method
+.sub "routine_declarator"  :subid("143_1266337354.28388") :method
 .annotate "line", 274
     $P580 = self."!protoregex"("routine_declarator")
     .return ($P580)
@@ -6967,7 +6967,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator"  :subid("144_1261064023.05912") :method
+.sub "!PREFIX__routine_declarator"  :subid("144_1266337354.28388") :method
 .annotate "line", 274
     $P582 = self."!PREFIX__!protoregex"("routine_declarator")
     .return ($P582)
@@ -6975,7 +6975,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_declarator:sym<sub>"  :subid("145_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "routine_declarator:sym<sub>"  :subid("145_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx584_tgt
     .local int rx584_pos
@@ -7054,7 +7054,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator:sym<sub>"  :subid("146_1261064023.05912") :method
+.sub "!PREFIX__routine_declarator:sym<sub>"  :subid("146_1266337354.28388") :method
 .annotate "line", 4
     $P586 = self."!PREFIX__!subrule"("routine_def", "sub")
     new $P587, "ResizablePMCArray"
@@ -7064,7 +7064,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_declarator:sym<method>"  :subid("147_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "routine_declarator:sym<method>"  :subid("147_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx591_tgt
     .local int rx591_pos
@@ -7143,7 +7143,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator:sym<method>"  :subid("148_1261064023.05912") :method
+.sub "!PREFIX__routine_declarator:sym<method>"  :subid("148_1266337354.28388") :method
 .annotate "line", 4
     $P593 = self."!PREFIX__!subrule"("method_def", "method")
     new $P594, "ResizablePMCArray"
@@ -7153,7 +7153,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_def"  :subid("149_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "routine_def"  :subid("149_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx598_tgt
     .local int rx598_pos
@@ -7163,7 +7163,7 @@
     .local pmc rx598_cur
     (rx598_cur, rx598_pos, rx598_tgt) = self."!cursor_start"()
     rx598_cur."!cursor_debug"("START ", "routine_def")
-    rx598_cur."!cursor_caparray"("sigil", "deflongname")
+    rx598_cur."!cursor_caparray"("deflongname", "sigil")
     .lex unicode:"$\x{a2}", rx598_cur
     .local pmc match
     .lex "$/", match
@@ -7360,7 +7360,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_def"  :subid("150_1261064023.05912") :method
+.sub "!PREFIX__routine_def"  :subid("150_1266337354.28388") :method
 .annotate "line", 4
     new $P600, "ResizablePMCArray"
     push $P600, ""
@@ -7369,7 +7369,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "method_def"  :subid("151_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "method_def"  :subid("151_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx622_tgt
     .local int rx622_pos
@@ -7539,7 +7539,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__method_def"  :subid("152_1261064023.05912") :method
+.sub "!PREFIX__method_def"  :subid("152_1266337354.28388") :method
 .annotate "line", 4
     new $P624, "ResizablePMCArray"
     push $P624, ""
@@ -7548,7 +7548,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "signature"  :subid("153_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "signature"  :subid("153_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx641_tgt
     .local int rx641_pos
@@ -7638,7 +7638,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__signature"  :subid("154_1261064023.05912") :method
+.sub "!PREFIX__signature"  :subid("154_1266337354.28388") :method
 .annotate "line", 4
     new $P643, "ResizablePMCArray"
     push $P643, ""
@@ -7647,7 +7647,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "parameter"  :subid("155_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "parameter"  :subid("155_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx650_tgt
     .local int rx650_pos
@@ -7808,7 +7808,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__parameter"  :subid("156_1261064023.05912") :method
+.sub "!PREFIX__parameter"  :subid("156_1266337354.28388") :method
 .annotate "line", 4
     $P652 = self."!PREFIX__!subrule"("named_param", "")
     $P653 = self."!PREFIX__!subrule"("param_var", "")
@@ -7822,7 +7822,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "param_var"  :subid("157_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "param_var"  :subid("157_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx665_tgt
     .local int rx665_pos
@@ -7930,7 +7930,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__param_var"  :subid("158_1261064023.05912") :method
+.sub "!PREFIX__param_var"  :subid("158_1266337354.28388") :method
 .annotate "line", 4
     $P667 = self."!PREFIX__!subrule"("sigil", "")
     new $P668, "ResizablePMCArray"
@@ -7940,7 +7940,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "named_param"  :subid("159_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "named_param"  :subid("159_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx675_tgt
     .local int rx675_pos
@@ -8006,7 +8006,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__named_param"  :subid("160_1261064023.05912") :method
+.sub "!PREFIX__named_param"  :subid("160_1266337354.28388") :method
 .annotate "line", 4
     $P677 = self."!PREFIX__!subrule"("param_var", ":")
     new $P678, "ResizablePMCArray"
@@ -8016,7 +8016,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "default_value"  :subid("161_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "default_value"  :subid("161_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx681_tgt
     .local int rx681_pos
@@ -8096,7 +8096,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__default_value"  :subid("162_1261064023.05912") :method
+.sub "!PREFIX__default_value"  :subid("162_1266337354.28388") :method
 .annotate "line", 4
     new $P683, "ResizablePMCArray"
     push $P683, ""
@@ -8105,7 +8105,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "regex_declarator"  :subid("163_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "regex_declarator"  :subid("163_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx689_tgt
     .local int rx689_pos
@@ -8472,7 +8472,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__regex_declarator"  :subid("164_1261064023.05912") :method
+.sub "!PREFIX__regex_declarator"  :subid("164_1266337354.28388") :method
 .annotate "line", 4
     new $P691, "ResizablePMCArray"
     push $P691, ""
@@ -8481,7 +8481,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "dotty"  :subid("165_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "dotty"  :subid("165_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx721_tgt
     .local int rx721_pos
@@ -8637,7 +8637,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__dotty"  :subid("166_1261064023.05912") :method
+.sub "!PREFIX__dotty"  :subid("166_1266337354.28388") :method
 .annotate "line", 4
     $P723 = self."!PREFIX__!subrule"("longname=identifier", ".")
     new $P724, "ResizablePMCArray"
@@ -8649,7 +8649,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term"  :subid("167_1261064023.05912") :method
+.sub "term"  :subid("167_1266337354.28388") :method
 .annotate "line", 343
     $P732 = self."!protoregex"("term")
     .return ($P732)
@@ -8657,7 +8657,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term"  :subid("168_1261064023.05912") :method
+.sub "!PREFIX__term"  :subid("168_1266337354.28388") :method
 .annotate "line", 343
     $P734 = self."!PREFIX__!protoregex"("term")
     .return ($P734)
@@ -8665,7 +8665,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<self>"  :subid("169_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<self>"  :subid("169_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx736_tgt
     .local int rx736_pos
@@ -8745,7 +8745,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<self>"  :subid("170_1261064023.05912") :method
+.sub "!PREFIX__term:sym<self>"  :subid("170_1266337354.28388") :method
 .annotate "line", 4
     new $P738, "ResizablePMCArray"
     push $P738, "self"
@@ -8754,7 +8754,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<identifier>"  :subid("171_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<identifier>"  :subid("171_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx742_tgt
     .local int rx742_pos
@@ -8826,7 +8826,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<identifier>"  :subid("172_1261064023.05912") :method
+.sub "!PREFIX__term:sym<identifier>"  :subid("172_1266337354.28388") :method
 .annotate "line", 4
     $P744 = self."!PREFIX__!subrule"("identifier", "")
     new $P745, "ResizablePMCArray"
@@ -8836,7 +8836,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<name>"  :subid("173_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<name>"  :subid("173_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx748_tgt
     .local int rx748_pos
@@ -8909,7 +8909,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<name>"  :subid("174_1261064023.05912") :method
+.sub "!PREFIX__term:sym<name>"  :subid("174_1266337354.28388") :method
 .annotate "line", 4
     $P750 = self."!PREFIX__!subrule"("name", "")
     new $P751, "ResizablePMCArray"
@@ -8919,7 +8919,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<pir::op>"  :subid("175_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<pir::op>"  :subid("175_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx756_tgt
     .local int rx756_pos
@@ -9012,7 +9012,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<pir::op>"  :subid("176_1261064023.05912") :method
+.sub "!PREFIX__term:sym<pir::op>"  :subid("176_1266337354.28388") :method
 .annotate "line", 4
     new $P758, "ResizablePMCArray"
     push $P758, "pir::"
@@ -9021,7 +9021,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "args"  :subid("177_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "args"  :subid("177_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx764_tgt
     .local int rx764_pos
@@ -9093,7 +9093,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__args"  :subid("178_1261064023.05912") :method
+.sub "!PREFIX__args"  :subid("178_1266337354.28388") :method
 .annotate "line", 4
     $P766 = self."!PREFIX__!subrule"("arglist", "(")
     new $P767, "ResizablePMCArray"
@@ -9103,7 +9103,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "arglist"  :subid("179_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "arglist"  :subid("179_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx770_tgt
     .local int rx770_pos
@@ -9175,7 +9175,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__arglist"  :subid("180_1261064023.05912") :method
+.sub "!PREFIX__arglist"  :subid("180_1266337354.28388") :method
 .annotate "line", 4
     $P772 = self."!PREFIX__!subrule"("", "")
     new $P773, "ResizablePMCArray"
@@ -9185,7 +9185,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<value>"  :subid("181_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "term:sym<value>"  :subid("181_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx777_tgt
     .local int rx777_pos
@@ -9243,7 +9243,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<value>"  :subid("182_1261064023.05912") :method
+.sub "!PREFIX__term:sym<value>"  :subid("182_1266337354.28388") :method
 .annotate "line", 4
     $P779 = self."!PREFIX__!subrule"("value", "")
     new $P780, "ResizablePMCArray"
@@ -9253,7 +9253,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "value"  :subid("183_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "value"  :subid("183_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx783_tgt
     .local int rx783_pos
@@ -9327,7 +9327,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__value"  :subid("184_1261064023.05912") :method
+.sub "!PREFIX__value"  :subid("184_1266337354.28388") :method
 .annotate "line", 4
     $P785 = self."!PREFIX__!subrule"("number", "")
     $P786 = self."!PREFIX__!subrule"("quote", "")
@@ -9339,7 +9339,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "number"  :subid("185_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "number"  :subid("185_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx791_tgt
     .local int rx791_pos
@@ -9439,7 +9439,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__number"  :subid("186_1261064023.05912") :method
+.sub "!PREFIX__number"  :subid("186_1266337354.28388") :method
 .annotate "line", 4
     new $P793, "ResizablePMCArray"
     push $P793, ""
@@ -9448,7 +9448,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote"  :subid("187_1261064023.05912") :method
+.sub "quote"  :subid("187_1266337354.28388") :method
 .annotate "line", 384
     $P800 = self."!protoregex"("quote")
     .return ($P800)
@@ -9456,7 +9456,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote"  :subid("188_1261064023.05912") :method
+.sub "!PREFIX__quote"  :subid("188_1266337354.28388") :method
 .annotate "line", 384
     $P802 = self."!PREFIX__!protoregex"("quote")
     .return ($P802)
@@ -9464,7 +9464,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<apos>"  :subid("189_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "quote:sym<apos>"  :subid("189_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx804_tgt
     .local int rx804_pos
@@ -9528,7 +9528,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<apos>"  :subid("190_1261064023.05912") :method
+.sub "!PREFIX__quote:sym<apos>"  :subid("190_1266337354.28388") :method
 .annotate "line", 4
     new $P806, "ResizablePMCArray"
     push $P806, "'"
@@ -9537,7 +9537,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<dblq>"  :subid("191_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "quote:sym<dblq>"  :subid("191_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx809_tgt
     .local int rx809_pos
@@ -9601,7 +9601,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<dblq>"  :subid("192_1261064023.05912") :method
+.sub "!PREFIX__quote:sym<dblq>"  :subid("192_1266337354.28388") :method
 .annotate "line", 4
     new $P811, "ResizablePMCArray"
     push $P811, "\""
@@ -9610,7 +9610,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<q>"  :subid("193_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "quote:sym<q>"  :subid("193_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx814_tgt
     .local int rx814_pos
@@ -9686,7 +9686,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<q>"  :subid("194_1261064023.05912") :method
+.sub "!PREFIX__quote:sym<q>"  :subid("194_1266337354.28388") :method
 .annotate "line", 4
     $P816 = self."!PREFIX__!subrule"("", "q")
     new $P817, "ResizablePMCArray"
@@ -9696,7 +9696,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<qq>"  :subid("195_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "quote:sym<qq>"  :subid("195_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx820_tgt
     .local int rx820_pos
@@ -9772,7 +9772,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<qq>"  :subid("196_1261064023.05912") :method
+.sub "!PREFIX__quote:sym<qq>"  :subid("196_1266337354.28388") :method
 .annotate "line", 4
     $P822 = self."!PREFIX__!subrule"("", "qq")
     new $P823, "ResizablePMCArray"
@@ -9782,7 +9782,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<Q>"  :subid("197_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "quote:sym<Q>"  :subid("197_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx826_tgt
     .local int rx826_pos
@@ -9858,7 +9858,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<Q>"  :subid("198_1261064023.05912") :method
+.sub "!PREFIX__quote:sym<Q>"  :subid("198_1266337354.28388") :method
 .annotate "line", 4
     $P828 = self."!PREFIX__!subrule"("", "Q")
     new $P829, "ResizablePMCArray"
@@ -9868,7 +9868,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<Q:PIR>"  :subid("199_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "quote:sym<Q:PIR>"  :subid("199_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx832_tgt
     .local int rx832_pos
@@ -9938,7 +9938,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<Q:PIR>"  :subid("200_1261064023.05912") :method
+.sub "!PREFIX__quote:sym<Q:PIR>"  :subid("200_1266337354.28388") :method
 .annotate "line", 4
     $P834 = self."!PREFIX__!subrule"("", "Q:PIR")
     new $P835, "ResizablePMCArray"
@@ -9948,7 +9948,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym</ />"  :subid("201_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "quote:sym</ />"  :subid("201_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx838_tgt
     .local int rx838_pos
@@ -10033,7 +10033,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym</ />"  :subid("202_1261064023.05912") :method
+.sub "!PREFIX__quote:sym</ />"  :subid("202_1266337354.28388") :method
 .annotate "line", 4
     $P840 = self."!PREFIX__!subrule"("", "/")
     new $P841, "ResizablePMCArray"
@@ -10043,7 +10043,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<$>"  :subid("203_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "quote_escape:sym<$>"  :subid("203_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx844_tgt
     .local int rx844_pos
@@ -10111,7 +10111,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<$>"  :subid("204_1261064023.05912") :method
+.sub "!PREFIX__quote_escape:sym<$>"  :subid("204_1266337354.28388") :method
 .annotate "line", 4
     new $P846, "ResizablePMCArray"
     push $P846, "$"
@@ -10120,7 +10120,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<{ }>"  :subid("205_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "quote_escape:sym<{ }>"  :subid("205_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx849_tgt
     .local int rx849_pos
@@ -10188,7 +10188,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<{ }>"  :subid("206_1261064023.05912") :method
+.sub "!PREFIX__quote_escape:sym<{ }>"  :subid("206_1266337354.28388") :method
 .annotate "line", 4
     new $P851, "ResizablePMCArray"
     push $P851, "{"
@@ -10197,7 +10197,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<( )>"  :subid("207_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "circumfix:sym<( )>"  :subid("207_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx854_tgt
     .local int rx854_pos
@@ -10281,7 +10281,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<( )>"  :subid("208_1261064023.05912") :method
+.sub "!PREFIX__circumfix:sym<( )>"  :subid("208_1266337354.28388") :method
 .annotate "line", 4
     $P856 = self."!PREFIX__!subrule"("", "(")
     new $P857, "ResizablePMCArray"
@@ -10291,7 +10291,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<[ ]>"  :subid("209_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "circumfix:sym<[ ]>"  :subid("209_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx862_tgt
     .local int rx862_pos
@@ -10375,7 +10375,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<[ ]>"  :subid("210_1261064023.05912") :method
+.sub "!PREFIX__circumfix:sym<[ ]>"  :subid("210_1266337354.28388") :method
 .annotate "line", 4
     $P864 = self."!PREFIX__!subrule"("", "[")
     new $P865, "ResizablePMCArray"
@@ -10385,7 +10385,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<ang>"  :subid("211_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "circumfix:sym<ang>"  :subid("211_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx870_tgt
     .local int rx870_pos
@@ -10449,7 +10449,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<ang>"  :subid("212_1261064023.05912") :method
+.sub "!PREFIX__circumfix:sym<ang>"  :subid("212_1266337354.28388") :method
 .annotate "line", 4
     new $P872, "ResizablePMCArray"
     push $P872, "<"
@@ -10458,7 +10458,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("213_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("213_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx875_tgt
     .local int rx875_pos
@@ -10522,7 +10522,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub unicode:"!PREFIX__circumfix:sym<\x{ab} \x{bb}>"  :subid("214_1261064023.05912") :method
+.sub unicode:"!PREFIX__circumfix:sym<\x{ab} \x{bb}>"  :subid("214_1266337354.28388") :method
 .annotate "line", 4
     new $P877, "ResizablePMCArray"
     push $P877, unicode:"\x{ab}"
@@ -10531,7 +10531,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<{ }>"  :subid("215_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "circumfix:sym<{ }>"  :subid("215_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx880_tgt
     .local int rx880_pos
@@ -10595,7 +10595,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<{ }>"  :subid("216_1261064023.05912") :method
+.sub "!PREFIX__circumfix:sym<{ }>"  :subid("216_1266337354.28388") :method
 .annotate "line", 4
     new $P882, "ResizablePMCArray"
     push $P882, "{"
@@ -10604,7 +10604,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<sigil>"  :subid("217_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "circumfix:sym<sigil>"  :subid("217_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx885_tgt
     .local int rx885_pos
@@ -10694,7 +10694,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<sigil>"  :subid("218_1261064023.05912") :method
+.sub "!PREFIX__circumfix:sym<sigil>"  :subid("218_1266337354.28388") :method
 .annotate "line", 4
     $P887 = self."!PREFIX__!subrule"("sigil", "")
     new $P888, "ResizablePMCArray"
@@ -10704,7 +10704,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "semilist"  :subid("219_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "semilist"  :subid("219_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 4
     .local string rx893_tgt
     .local int rx893_pos
@@ -10772,7 +10772,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__semilist"  :subid("220_1261064023.05912") :method
+.sub "!PREFIX__semilist"  :subid("220_1266337354.28388") :method
 .annotate "line", 4
     new $P895, "ResizablePMCArray"
     push $P895, ""
@@ -10781,7 +10781,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infixish"  :subid("221_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infixish"  :subid("221_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx900_tgt
     .local int rx900_pos
@@ -10843,7 +10843,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infixish"  :subid("222_1261064023.05912") :method
+.sub "!PREFIX__infixish"  :subid("222_1266337354.28388") :method
 .annotate "line", 413
     new $P902, "ResizablePMCArray"
     push $P902, ""
@@ -10852,7 +10852,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infixstopper"  :subid("223_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infixstopper"  :subid("223_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx905_tgt
     .local int rx905_pos
@@ -10907,7 +10907,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infixstopper"  :subid("224_1261064023.05912") :method
+.sub "!PREFIX__infixstopper"  :subid("224_1266337354.28388") :method
 .annotate "line", 413
     new $P907, "ResizablePMCArray"
     push $P907, ""
@@ -10916,7 +10916,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<[ ]>"  :subid("225_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "postcircumfix:sym<[ ]>"  :subid("225_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx910_tgt
     .local int rx910_pos
@@ -11002,7 +11002,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<[ ]>"  :subid("226_1261064023.05912") :method
+.sub "!PREFIX__postcircumfix:sym<[ ]>"  :subid("226_1266337354.28388") :method
 .annotate "line", 413
     $P912 = self."!PREFIX__!subrule"("", "[")
     new $P913, "ResizablePMCArray"
@@ -11012,7 +11012,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<{ }>"  :subid("227_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "postcircumfix:sym<{ }>"  :subid("227_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx916_tgt
     .local int rx916_pos
@@ -11098,7 +11098,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<{ }>"  :subid("228_1261064023.05912") :method
+.sub "!PREFIX__postcircumfix:sym<{ }>"  :subid("228_1266337354.28388") :method
 .annotate "line", 413
     $P918 = self."!PREFIX__!subrule"("", "{")
     new $P919, "ResizablePMCArray"
@@ -11108,7 +11108,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<ang>"  :subid("229_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "postcircumfix:sym<ang>"  :subid("229_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx922_tgt
     .local int rx922_pos
@@ -11181,7 +11181,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<ang>"  :subid("230_1261064023.05912") :method
+.sub "!PREFIX__postcircumfix:sym<ang>"  :subid("230_1266337354.28388") :method
 .annotate "line", 413
     new $P924, "ResizablePMCArray"
     push $P924, "<"
@@ -11190,7 +11190,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<( )>"  :subid("231_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "postcircumfix:sym<( )>"  :subid("231_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx927_tgt
     .local int rx927_pos
@@ -11276,7 +11276,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<( )>"  :subid("232_1261064023.05912") :method
+.sub "!PREFIX__postcircumfix:sym<( )>"  :subid("232_1266337354.28388") :method
 .annotate "line", 413
     $P929 = self."!PREFIX__!subrule"("", "(")
     new $P930, "ResizablePMCArray"
@@ -11286,7 +11286,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postfix:sym<.>"  :subid("233_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "postfix:sym<.>"  :subid("233_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx933_tgt
     .local int rx933_pos
@@ -11351,7 +11351,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<.>"  :subid("234_1261064023.05912") :method
+.sub "!PREFIX__postfix:sym<.>"  :subid("234_1266337354.28388") :method
 .annotate "line", 413
     $P935 = self."!PREFIX__!subrule"("dotty", "")
     new $P936, "ResizablePMCArray"
@@ -11361,7 +11361,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<++>"  :subid("235_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "prefix:sym<++>"  :subid("235_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx939_tgt
     .local int rx939_pos
@@ -11440,7 +11440,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<++>"  :subid("236_1261064023.05912") :method
+.sub "!PREFIX__prefix:sym<++>"  :subid("236_1266337354.28388") :method
 .annotate "line", 413
     $P941 = self."!PREFIX__!subrule"("O", "++")
     new $P942, "ResizablePMCArray"
@@ -11450,7 +11450,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<-->"  :subid("237_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "prefix:sym<-->"  :subid("237_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx946_tgt
     .local int rx946_pos
@@ -11529,7 +11529,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<-->"  :subid("238_1261064023.05912") :method
+.sub "!PREFIX__prefix:sym<-->"  :subid("238_1266337354.28388") :method
 .annotate "line", 413
     $P948 = self."!PREFIX__!subrule"("O", "--")
     new $P949, "ResizablePMCArray"
@@ -11539,7 +11539,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postfix:sym<++>"  :subid("239_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "postfix:sym<++>"  :subid("239_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx953_tgt
     .local int rx953_pos
@@ -11618,7 +11618,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<++>"  :subid("240_1261064023.05912") :method
+.sub "!PREFIX__postfix:sym<++>"  :subid("240_1266337354.28388") :method
 .annotate "line", 413
     $P955 = self."!PREFIX__!subrule"("O", "++")
     new $P956, "ResizablePMCArray"
@@ -11628,7 +11628,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postfix:sym<-->"  :subid("241_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "postfix:sym<-->"  :subid("241_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx960_tgt
     .local int rx960_pos
@@ -11707,7 +11707,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<-->"  :subid("242_1261064023.05912") :method
+.sub "!PREFIX__postfix:sym<-->"  :subid("242_1266337354.28388") :method
 .annotate "line", 413
     $P962 = self."!PREFIX__!subrule"("O", "--")
     new $P963, "ResizablePMCArray"
@@ -11717,7 +11717,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<**>"  :subid("243_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<**>"  :subid("243_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx967_tgt
     .local int rx967_pos
@@ -11796,7 +11796,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<**>"  :subid("244_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<**>"  :subid("244_1266337354.28388") :method
 .annotate "line", 413
     $P969 = self."!PREFIX__!subrule"("O", "**")
     new $P970, "ResizablePMCArray"
@@ -11806,7 +11806,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<+>"  :subid("245_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "prefix:sym<+>"  :subid("245_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx974_tgt
     .local int rx974_pos
@@ -11885,7 +11885,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<+>"  :subid("246_1261064023.05912") :method
+.sub "!PREFIX__prefix:sym<+>"  :subid("246_1266337354.28388") :method
 .annotate "line", 413
     $P976 = self."!PREFIX__!subrule"("O", "+")
     new $P977, "ResizablePMCArray"
@@ -11895,7 +11895,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<~>"  :subid("247_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "prefix:sym<~>"  :subid("247_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx981_tgt
     .local int rx981_pos
@@ -11974,7 +11974,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<~>"  :subid("248_1261064023.05912") :method
+.sub "!PREFIX__prefix:sym<~>"  :subid("248_1266337354.28388") :method
 .annotate "line", 413
     $P983 = self."!PREFIX__!subrule"("O", "~")
     new $P984, "ResizablePMCArray"
@@ -11984,7 +11984,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<->"  :subid("249_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "prefix:sym<->"  :subid("249_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx988_tgt
     .local int rx988_pos
@@ -12073,7 +12073,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<->"  :subid("250_1261064023.05912") :method
+.sub "!PREFIX__prefix:sym<->"  :subid("250_1266337354.28388") :method
 .annotate "line", 413
     new $P990, "ResizablePMCArray"
     push $P990, "-"
@@ -12082,7 +12082,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<?>"  :subid("251_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "prefix:sym<?>"  :subid("251_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx994_tgt
     .local int rx994_pos
@@ -12161,7 +12161,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<?>"  :subid("252_1261064023.05912") :method
+.sub "!PREFIX__prefix:sym<?>"  :subid("252_1266337354.28388") :method
 .annotate "line", 413
     $P996 = self."!PREFIX__!subrule"("O", "?")
     new $P997, "ResizablePMCArray"
@@ -12171,7 +12171,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<!>"  :subid("253_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "prefix:sym<!>"  :subid("253_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1001_tgt
     .local int rx1001_pos
@@ -12250,7 +12250,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<!>"  :subid("254_1261064023.05912") :method
+.sub "!PREFIX__prefix:sym<!>"  :subid("254_1266337354.28388") :method
 .annotate "line", 413
     $P1003 = self."!PREFIX__!subrule"("O", "!")
     new $P1004, "ResizablePMCArray"
@@ -12260,7 +12260,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<|>"  :subid("255_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "prefix:sym<|>"  :subid("255_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1008_tgt
     .local int rx1008_pos
@@ -12339,7 +12339,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<|>"  :subid("256_1261064023.05912") :method
+.sub "!PREFIX__prefix:sym<|>"  :subid("256_1266337354.28388") :method
 .annotate "line", 413
     $P1010 = self."!PREFIX__!subrule"("O", "|")
     new $P1011, "ResizablePMCArray"
@@ -12349,7 +12349,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<*>"  :subid("257_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<*>"  :subid("257_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1015_tgt
     .local int rx1015_pos
@@ -12428,7 +12428,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<*>"  :subid("258_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<*>"  :subid("258_1266337354.28388") :method
 .annotate "line", 413
     $P1017 = self."!PREFIX__!subrule"("O", "*")
     new $P1018, "ResizablePMCArray"
@@ -12438,7 +12438,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym</>"  :subid("259_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym</>"  :subid("259_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1022_tgt
     .local int rx1022_pos
@@ -12517,7 +12517,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym</>"  :subid("260_1261064023.05912") :method
+.sub "!PREFIX__infix:sym</>"  :subid("260_1266337354.28388") :method
 .annotate "line", 413
     $P1024 = self."!PREFIX__!subrule"("O", "/")
     new $P1025, "ResizablePMCArray"
@@ -12527,7 +12527,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<%>"  :subid("261_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<%>"  :subid("261_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1029_tgt
     .local int rx1029_pos
@@ -12606,7 +12606,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<%>"  :subid("262_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<%>"  :subid("262_1266337354.28388") :method
 .annotate "line", 413
     $P1031 = self."!PREFIX__!subrule"("O", "%")
     new $P1032, "ResizablePMCArray"
@@ -12616,7 +12616,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<+>"  :subid("263_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<+>"  :subid("263_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1036_tgt
     .local int rx1036_pos
@@ -12695,7 +12695,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<+>"  :subid("264_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<+>"  :subid("264_1266337354.28388") :method
 .annotate "line", 413
     $P1038 = self."!PREFIX__!subrule"("O", "+")
     new $P1039, "ResizablePMCArray"
@@ -12705,7 +12705,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<->"  :subid("265_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<->"  :subid("265_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1043_tgt
     .local int rx1043_pos
@@ -12784,7 +12784,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<->"  :subid("266_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<->"  :subid("266_1266337354.28388") :method
 .annotate "line", 413
     $P1045 = self."!PREFIX__!subrule"("O", "-")
     new $P1046, "ResizablePMCArray"
@@ -12794,7 +12794,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<~>"  :subid("267_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<~>"  :subid("267_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1050_tgt
     .local int rx1050_pos
@@ -12873,7 +12873,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<~>"  :subid("268_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<~>"  :subid("268_1266337354.28388") :method
 .annotate "line", 413
     $P1052 = self."!PREFIX__!subrule"("O", "~")
     new $P1053, "ResizablePMCArray"
@@ -12883,7 +12883,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<==>"  :subid("269_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<==>"  :subid("269_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1057_tgt
     .local int rx1057_pos
@@ -12962,7 +12962,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<==>"  :subid("270_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<==>"  :subid("270_1266337354.28388") :method
 .annotate "line", 413
     $P1059 = self."!PREFIX__!subrule"("O", "==")
     new $P1060, "ResizablePMCArray"
@@ -12972,7 +12972,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<!=>"  :subid("271_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<!=>"  :subid("271_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1064_tgt
     .local int rx1064_pos
@@ -13051,7 +13051,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<!=>"  :subid("272_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<!=>"  :subid("272_1266337354.28388") :method
 .annotate "line", 413
     $P1066 = self."!PREFIX__!subrule"("O", "!=")
     new $P1067, "ResizablePMCArray"
@@ -13061,7 +13061,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<<=>"  :subid("273_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<<=>"  :subid("273_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1071_tgt
     .local int rx1071_pos
@@ -13140,7 +13140,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<<=>"  :subid("274_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<<=>"  :subid("274_1266337354.28388") :method
 .annotate "line", 413
     $P1073 = self."!PREFIX__!subrule"("O", "<=")
     new $P1074, "ResizablePMCArray"
@@ -13150,7 +13150,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<>=>"  :subid("275_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<>=>"  :subid("275_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1078_tgt
     .local int rx1078_pos
@@ -13229,7 +13229,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<>=>"  :subid("276_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<>=>"  :subid("276_1266337354.28388") :method
 .annotate "line", 413
     $P1080 = self."!PREFIX__!subrule"("O", ">=")
     new $P1081, "ResizablePMCArray"
@@ -13239,7 +13239,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<<>"  :subid("277_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<<>"  :subid("277_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1085_tgt
     .local int rx1085_pos
@@ -13318,7 +13318,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<<>"  :subid("278_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<<>"  :subid("278_1266337354.28388") :method
 .annotate "line", 413
     $P1087 = self."!PREFIX__!subrule"("O", "<")
     new $P1088, "ResizablePMCArray"
@@ -13328,7 +13328,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<>>"  :subid("279_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<>>"  :subid("279_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1092_tgt
     .local int rx1092_pos
@@ -13407,7 +13407,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<>>"  :subid("280_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<>>"  :subid("280_1266337354.28388") :method
 .annotate "line", 413
     $P1094 = self."!PREFIX__!subrule"("O", ">")
     new $P1095, "ResizablePMCArray"
@@ -13417,7 +13417,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<eq>"  :subid("281_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<eq>"  :subid("281_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1099_tgt
     .local int rx1099_pos
@@ -13496,7 +13496,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<eq>"  :subid("282_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<eq>"  :subid("282_1266337354.28388") :method
 .annotate "line", 413
     $P1101 = self."!PREFIX__!subrule"("O", "eq")
     new $P1102, "ResizablePMCArray"
@@ -13506,7 +13506,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<ne>"  :subid("283_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<ne>"  :subid("283_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1106_tgt
     .local int rx1106_pos
@@ -13585,7 +13585,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<ne>"  :subid("284_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<ne>"  :subid("284_1266337354.28388") :method
 .annotate "line", 413
     $P1108 = self."!PREFIX__!subrule"("O", "ne")
     new $P1109, "ResizablePMCArray"
@@ -13595,7 +13595,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<le>"  :subid("285_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<le>"  :subid("285_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1113_tgt
     .local int rx1113_pos
@@ -13674,7 +13674,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<le>"  :subid("286_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<le>"  :subid("286_1266337354.28388") :method
 .annotate "line", 413
     $P1115 = self."!PREFIX__!subrule"("O", "le")
     new $P1116, "ResizablePMCArray"
@@ -13684,7 +13684,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<ge>"  :subid("287_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<ge>"  :subid("287_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1120_tgt
     .local int rx1120_pos
@@ -13763,7 +13763,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<ge>"  :subid("288_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<ge>"  :subid("288_1266337354.28388") :method
 .annotate "line", 413
     $P1122 = self."!PREFIX__!subrule"("O", "ge")
     new $P1123, "ResizablePMCArray"
@@ -13773,7 +13773,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<lt>"  :subid("289_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<lt>"  :subid("289_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1127_tgt
     .local int rx1127_pos
@@ -13852,7 +13852,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<lt>"  :subid("290_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<lt>"  :subid("290_1266337354.28388") :method
 .annotate "line", 413
     $P1129 = self."!PREFIX__!subrule"("O", "lt")
     new $P1130, "ResizablePMCArray"
@@ -13862,7 +13862,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<gt>"  :subid("291_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<gt>"  :subid("291_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1134_tgt
     .local int rx1134_pos
@@ -13941,7 +13941,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<gt>"  :subid("292_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<gt>"  :subid("292_1266337354.28388") :method
 .annotate "line", 413
     $P1136 = self."!PREFIX__!subrule"("O", "gt")
     new $P1137, "ResizablePMCArray"
@@ -13951,7 +13951,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<=:=>"  :subid("293_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<=:=>"  :subid("293_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1141_tgt
     .local int rx1141_pos
@@ -14030,7 +14030,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<=:=>"  :subid("294_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<=:=>"  :subid("294_1266337354.28388") :method
 .annotate "line", 413
     $P1143 = self."!PREFIX__!subrule"("O", "=:=")
     new $P1144, "ResizablePMCArray"
@@ -14040,7 +14040,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<~~>"  :subid("295_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<~~>"  :subid("295_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1148_tgt
     .local int rx1148_pos
@@ -14119,7 +14119,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<~~>"  :subid("296_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<~~>"  :subid("296_1266337354.28388") :method
 .annotate "line", 413
     $P1150 = self."!PREFIX__!subrule"("O", "~~")
     new $P1151, "ResizablePMCArray"
@@ -14129,7 +14129,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<&&>"  :subid("297_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<&&>"  :subid("297_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1155_tgt
     .local int rx1155_pos
@@ -14208,7 +14208,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<&&>"  :subid("298_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<&&>"  :subid("298_1266337354.28388") :method
 .annotate "line", 413
     $P1157 = self."!PREFIX__!subrule"("O", "&&")
     new $P1158, "ResizablePMCArray"
@@ -14218,7 +14218,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<||>"  :subid("299_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<||>"  :subid("299_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1162_tgt
     .local int rx1162_pos
@@ -14297,7 +14297,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<||>"  :subid("300_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<||>"  :subid("300_1266337354.28388") :method
 .annotate "line", 413
     $P1164 = self."!PREFIX__!subrule"("O", "||")
     new $P1165, "ResizablePMCArray"
@@ -14307,7 +14307,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<//>"  :subid("301_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<//>"  :subid("301_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1169_tgt
     .local int rx1169_pos
@@ -14386,7 +14386,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<//>"  :subid("302_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<//>"  :subid("302_1266337354.28388") :method
 .annotate "line", 413
     $P1171 = self."!PREFIX__!subrule"("O", "//")
     new $P1172, "ResizablePMCArray"
@@ -14396,7 +14396,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<?? !!>"  :subid("303_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<?? !!>"  :subid("303_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1176_tgt
     .local int rx1176_pos
@@ -14485,7 +14485,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<?? !!>"  :subid("304_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<?? !!>"  :subid("304_1266337354.28388") :method
 .annotate "line", 413
     $P1178 = self."!PREFIX__!subrule"("", "??")
     new $P1179, "ResizablePMCArray"
@@ -14495,7 +14495,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<=>"  :subid("305_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<=>"  :subid("305_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1182_tgt
     .local int rx1182_pos
@@ -14573,7 +14573,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<=>"  :subid("306_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<=>"  :subid("306_1266337354.28388") :method
 .annotate "line", 413
     $P1184 = self."!PREFIX__!subrule"("", "=")
     new $P1185, "ResizablePMCArray"
@@ -14583,7 +14583,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<:=>"  :subid("307_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<:=>"  :subid("307_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1189_tgt
     .local int rx1189_pos
@@ -14662,7 +14662,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<:=>"  :subid("308_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<:=>"  :subid("308_1266337354.28388") :method
 .annotate "line", 413
     $P1191 = self."!PREFIX__!subrule"("O", ":=")
     new $P1192, "ResizablePMCArray"
@@ -14672,7 +14672,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<::=>"  :subid("309_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<::=>"  :subid("309_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1196_tgt
     .local int rx1196_pos
@@ -14751,7 +14751,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<::=>"  :subid("310_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<::=>"  :subid("310_1266337354.28388") :method
 .annotate "line", 413
     $P1198 = self."!PREFIX__!subrule"("O", "::=")
     new $P1199, "ResizablePMCArray"
@@ -14761,7 +14761,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<,>"  :subid("311_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "infix:sym<,>"  :subid("311_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1203_tgt
     .local int rx1203_pos
@@ -14840,7 +14840,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<,>"  :subid("312_1261064023.05912") :method
+.sub "!PREFIX__infix:sym<,>"  :subid("312_1266337354.28388") :method
 .annotate "line", 413
     $P1205 = self."!PREFIX__!subrule"("O", ",")
     new $P1206, "ResizablePMCArray"
@@ -14850,7 +14850,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<return>"  :subid("313_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "prefix:sym<return>"  :subid("313_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1210_tgt
     .local int rx1210_pos
@@ -14935,7 +14935,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<return>"  :subid("314_1261064023.05912") :method
+.sub "!PREFIX__prefix:sym<return>"  :subid("314_1266337354.28388") :method
 .annotate "line", 413
     new $P1212, "ResizablePMCArray"
     push $P1212, "return"
@@ -14944,7 +14944,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<make>"  :subid("315_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "prefix:sym<make>"  :subid("315_1266337354.28388") :method :outer("11_1266337354.28388")
 .annotate "line", 413
     .local string rx1216_tgt
     .local int rx1216_pos
@@ -15029,7 +15029,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<make>"  :subid("316_1261064023.05912") :method
+.sub "!PREFIX__prefix:sym<make>"  :subid("316_1266337354.28388") :method
 .annotate "line", 413
     new $P1218, "ResizablePMCArray"
     push $P1218, "make"
@@ -15038,7 +15038,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "smartmatch"  :subid("317_1261064023.05912") :method :outer("11_1261064023.05912")
+.sub "smartmatch"  :subid("317_1266337354.28388") :method :outer("11_1266337354.28388")
     .param pmc param_1224
 .annotate "line", 521
     new $P1223, 'ExceptionHandler'
@@ -15091,28 +15091,28 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1234"  :subid("318_1261064023.05912") :outer("11_1261064023.05912")
+.sub "_block1234"  :subid("318_1266337354.28388") :outer("11_1266337354.28388")
 .annotate "line", 527
-    .const 'Sub' $P1268 = "329_1261064023.05912" 
+    .const 'Sub' $P1268 = "329_1266337354.28388" 
     capture_lex $P1268
-    .const 'Sub' $P1255 = "326_1261064023.05912" 
+    .const 'Sub' $P1255 = "326_1266337354.28388" 
     capture_lex $P1255
-    .const 'Sub' $P1250 = "324_1261064023.05912" 
+    .const 'Sub' $P1250 = "324_1266337354.28388" 
     capture_lex $P1250
-    .const 'Sub' $P1245 = "322_1261064023.05912" 
+    .const 'Sub' $P1245 = "322_1266337354.28388" 
     capture_lex $P1245
-    .const 'Sub' $P1236 = "319_1261064023.05912" 
+    .const 'Sub' $P1236 = "319_1266337354.28388" 
     capture_lex $P1236
-    .const 'Sub' $P1268 = "329_1261064023.05912" 
+    .const 'Sub' $P1268 = "329_1266337354.28388" 
     capture_lex $P1268
     .return ($P1268)
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "metachar:sym<:my>"  :subid("319_1261064023.05912") :method :outer("318_1261064023.05912")
+.sub "metachar:sym<:my>"  :subid("319_1266337354.28388") :method :outer("318_1266337354.28388")
 .annotate "line", 527
-    .const 'Sub' $P1242 = "321_1261064023.05912" 
+    .const 'Sub' $P1242 = "321_1266337354.28388" 
     capture_lex $P1242
     .local string rx1237_tgt
     .local int rx1237_pos
@@ -15153,7 +15153,7 @@
     add rx1237_pos, 1
   # rx subrule "before" subtype=zerowidth negate=
     rx1237_cur."!cursor_pos"(rx1237_pos)
-    .const 'Sub' $P1242 = "321_1261064023.05912" 
+    .const 'Sub' $P1242 = "321_1266337354.28388" 
     capture_lex $P1242
     $P10 = rx1237_cur."before"($P1242)
     unless $P10, rx1237_fail
@@ -15196,7 +15196,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__metachar:sym<:my>"  :subid("320_1261064023.05912") :method
+.sub "!PREFIX__metachar:sym<:my>"  :subid("320_1266337354.28388") :method
 .annotate "line", 527
     new $P1239, "ResizablePMCArray"
     push $P1239, ":"
@@ -15205,7 +15205,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1241"  :anon :subid("321_1261064023.05912") :method :outer("319_1261064023.05912")
+.sub "_block1241"  :anon :subid("321_1266337354.28388") :method :outer("319_1266337354.28388")
 .annotate "line", 529
     .local string rx1243_tgt
     .local int rx1243_pos
@@ -15261,7 +15261,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "metachar:sym<{ }>"  :subid("322_1261064023.05912") :method :outer("318_1261064023.05912")
+.sub "metachar:sym<{ }>"  :subid("322_1266337354.28388") :method :outer("318_1266337354.28388")
 .annotate "line", 527
     .local string rx1246_tgt
     .local int rx1246_pos
@@ -15326,7 +15326,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__metachar:sym<{ }>"  :subid("323_1261064023.05912") :method
+.sub "!PREFIX__metachar:sym<{ }>"  :subid("323_1266337354.28388") :method
 .annotate "line", 527
     new $P1248, "ResizablePMCArray"
     push $P1248, "{"
@@ -15335,7 +15335,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "assertion:sym<{ }>"  :subid("324_1261064023.05912") :method :outer("318_1261064023.05912")
+.sub "assertion:sym<{ }>"  :subid("324_1266337354.28388") :method :outer("318_1266337354.28388")
 .annotate "line", 527
     .local string rx1251_tgt
     .local int rx1251_pos
@@ -15400,7 +15400,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<{ }>"  :subid("325_1261064023.05912") :method
+.sub "!PREFIX__assertion:sym<{ }>"  :subid("325_1266337354.28388") :method
 .annotate "line", 527
     new $P1253, "ResizablePMCArray"
     push $P1253, "{"
@@ -15409,9 +15409,9 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "assertion:sym<name>"  :subid("326_1261064023.05912") :method :outer("318_1261064023.05912")
+.sub "assertion:sym<name>"  :subid("326_1266337354.28388") :method :outer("318_1266337354.28388")
 .annotate "line", 527
-    .const 'Sub' $P1264 = "328_1261064023.05912" 
+    .const 'Sub' $P1264 = "328_1266337354.28388" 
     capture_lex $P1264
     .local string rx1256_tgt
     .local int rx1256_pos
@@ -15421,7 +15421,7 @@
     .local pmc rx1256_cur
     (rx1256_cur, rx1256_pos, rx1256_tgt) = self."!cursor_start"()
     rx1256_cur."!cursor_debug"("START ", "assertion:sym<name>")
-    rx1256_cur."!cursor_caparray"("arglist", "nibbler", "assertion")
+    rx1256_cur."!cursor_caparray"("nibbler", "arglist", "assertion")
     .lex unicode:"$\x{a2}", rx1256_cur
     .local pmc match
     .lex "$/", match
@@ -15476,7 +15476,7 @@
 .annotate "line", 543
   # rx subrule "before" subtype=zerowidth negate=
     rx1256_cur."!cursor_pos"(rx1256_pos)
-    .const 'Sub' $P1264 = "328_1261064023.05912" 
+    .const 'Sub' $P1264 = "328_1266337354.28388" 
     capture_lex $P1264
     $P10 = rx1256_cur."before"($P1264)
     unless $P10, rx1256_fail
@@ -15583,7 +15583,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<name>"  :subid("327_1261064023.05912") :method
+.sub "!PREFIX__assertion:sym<name>"  :subid("327_1266337354.28388") :method
 .annotate "line", 527
     new $P1258, "ResizablePMCArray"
     push $P1258, ""
@@ -15592,7 +15592,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1263"  :anon :subid("328_1261064023.05912") :method :outer("326_1261064023.05912")
+.sub "_block1263"  :anon :subid("328_1266337354.28388") :method :outer("326_1266337354.28388")
 .annotate "line", 543
     .local string rx1265_tgt
     .local int rx1265_pos
@@ -15648,7 +15648,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "codeblock"  :subid("329_1261064023.05912") :method :outer("318_1261064023.05912")
+.sub "codeblock"  :subid("329_1266337354.28388") :method :outer("318_1266337354.28388")
 .annotate "line", 527
     .local string rx1269_tgt
     .local int rx1269_pos
@@ -15707,7 +15707,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__codeblock"  :subid("330_1261064023.05912") :method
+.sub "!PREFIX__codeblock"  :subid("330_1266337354.28388") :method
 .annotate "line", 527
     $P1271 = self."!PREFIX__!subrule"("block", "")
     new $P1272, "ResizablePMCArray"
@@ -15718,7 +15718,7 @@
 ### .include 'gen/nqp-actions.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1261064035.64813")
+.sub "_block11"  :anon :subid("10_1266337365.65225")
 .annotate "line", 0
     get_hll_global $P14, ["NQP";"Actions"], "_block13" 
     capture_lex $P14
@@ -15732,9 +15732,9 @@
 
 
 .namespace []
-.sub "" :load :init :subid("post126") :outer("10_1261064035.64813")
+.sub "" :load :init :subid("post126") :outer("10_1266337365.65225")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1261064035.64813" 
+    .const 'Sub' $P12 = "10_1266337365.65225" 
     .local pmc block
     set block, $P12
     $P2166 = get_root_global ["parrot"], "P6metaclass"
@@ -15743,199 +15743,199 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block13"  :subid("11_1261064035.64813") :outer("10_1261064035.64813")
+.sub "_block13"  :subid("11_1266337365.65225") :outer("10_1266337365.65225")
 .annotate "line", 3
-    .const 'Sub' $P2161 = "125_1261064035.64813" 
+    .const 'Sub' $P2161 = "125_1266337365.65225" 
     capture_lex $P2161
     get_hll_global $P2097, ["NQP";"RegexActions"], "_block2096" 
     capture_lex $P2097
-    .const 'Sub' $P2086 = "119_1261064035.64813" 
+    .const 'Sub' $P2086 = "119_1266337365.65225" 
     capture_lex $P2086
-    .const 'Sub' $P2074 = "118_1261064035.64813" 
+    .const 'Sub' $P2074 = "118_1266337365.65225" 
     capture_lex $P2074
-    .const 'Sub' $P2064 = "117_1261064035.64813" 
+    .const 'Sub' $P2064 = "117_1266337365.65225" 
     capture_lex $P2064
-    .const 'Sub' $P2054 = "116_1261064035.64813" 
+    .const 'Sub' $P2054 = "116_1266337365.65225" 
     capture_lex $P2054
-    .const 'Sub' $P2044 = "115_1261064035.64813" 
+    .const 'Sub' $P2044 = "115_1266337365.65225" 
     capture_lex $P2044
-    .const 'Sub' $P2030 = "114_1261064035.64813" 
+    .const 'Sub' $P2030 = "114_1266337365.65225" 
     capture_lex $P2030
-    .const 'Sub' $P2020 = "113_1261064035.64813" 
+    .const 'Sub' $P2020 = "113_1266337365.65225" 
     capture_lex $P2020
-    .const 'Sub' $P1983 = "112_1261064035.64813" 
+    .const 'Sub' $P1983 = "112_1266337365.65225" 
     capture_lex $P1983
-    .const 'Sub' $P1969 = "111_1261064035.64813" 
+    .const 'Sub' $P1969 = "111_1266337365.65225" 
     capture_lex $P1969
-    .const 'Sub' $P1959 = "110_1261064035.64813" 
+    .const 'Sub' $P1959 = "110_1266337365.65225" 
     capture_lex $P1959
-    .const 'Sub' $P1949 = "109_1261064035.64813" 
+    .const 'Sub' $P1949 = "109_1266337365.65225" 
     capture_lex $P1949
-    .const 'Sub' $P1939 = "108_1261064035.64813" 
+    .const 'Sub' $P1939 = "108_1266337365.65225" 
     capture_lex $P1939
-    .const 'Sub' $P1929 = "107_1261064035.64813" 
+    .const 'Sub' $P1929 = "107_1266337365.65225" 
     capture_lex $P1929
-    .const 'Sub' $P1919 = "106_1261064035.64813" 
+    .const 'Sub' $P1919 = "106_1266337365.65225" 
     capture_lex $P1919
-    .const 'Sub' $P1891 = "105_1261064035.64813" 
+    .const 'Sub' $P1891 = "105_1266337365.65225" 
     capture_lex $P1891
-    .const 'Sub' $P1874 = "104_1261064035.64813" 
+    .const 'Sub' $P1874 = "104_1266337365.65225" 
     capture_lex $P1874
-    .const 'Sub' $P1864 = "103_1261064035.64813" 
+    .const 'Sub' $P1864 = "103_1266337365.65225" 
     capture_lex $P1864
-    .const 'Sub' $P1852 = "102_1261064035.64813" 
+    .const 'Sub' $P1852 = "102_1266337365.65225" 
     capture_lex $P1852
-    .const 'Sub' $P1840 = "101_1261064035.64813" 
+    .const 'Sub' $P1840 = "101_1266337365.65225" 
     capture_lex $P1840
-    .const 'Sub' $P1828 = "100_1261064035.64813" 
+    .const 'Sub' $P1828 = "100_1266337365.65225" 
     capture_lex $P1828
-    .const 'Sub' $P1818 = "99_1261064035.64813" 
+    .const 'Sub' $P1818 = "99_1266337365.65225" 
     capture_lex $P1818
-    .const 'Sub' $P1789 = "98_1261064035.64813" 
+    .const 'Sub' $P1789 = "98_1266337365.65225" 
     capture_lex $P1789
-    .const 'Sub' $P1767 = "97_1261064035.64813" 
+    .const 'Sub' $P1767 = "97_1266337365.65225" 
     capture_lex $P1767
-    .const 'Sub' $P1757 = "96_1261064035.64813" 
+    .const 'Sub' $P1757 = "96_1266337365.65225" 
     capture_lex $P1757
-    .const 'Sub' $P1747 = "95_1261064035.64813" 
+    .const 'Sub' $P1747 = "95_1266337365.65225" 
     capture_lex $P1747
-    .const 'Sub' $P1720 = "94_1261064035.64813" 
+    .const 'Sub' $P1720 = "94_1266337365.65225" 
     capture_lex $P1720
-    .const 'Sub' $P1702 = "93_1261064035.64813" 
+    .const 'Sub' $P1702 = "93_1266337365.65225" 
     capture_lex $P1702
-    .const 'Sub' $P1692 = "92_1261064035.64813" 
+    .const 'Sub' $P1692 = "92_1266337365.65225" 
     capture_lex $P1692
-    .const 'Sub' $P1608 = "89_1261064035.64813" 
+    .const 'Sub' $P1608 = "89_1266337365.65225" 
     capture_lex $P1608
-    .const 'Sub' $P1598 = "88_1261064035.64813" 
+    .const 'Sub' $P1598 = "88_1266337365.65225" 
     capture_lex $P1598
-    .const 'Sub' $P1569 = "87_1261064035.64813" 
+    .const 'Sub' $P1569 = "87_1266337365.65225" 
     capture_lex $P1569
-    .const 'Sub' $P1527 = "86_1261064035.64813" 
+    .const 'Sub' $P1527 = "86_1266337365.65225" 
     capture_lex $P1527
-    .const 'Sub' $P1511 = "85_1261064035.64813" 
+    .const 'Sub' $P1511 = "85_1266337365.65225" 
     capture_lex $P1511
-    .const 'Sub' $P1502 = "84_1261064035.64813" 
+    .const 'Sub' $P1502 = "84_1266337365.65225" 
     capture_lex $P1502
-    .const 'Sub' $P1470 = "83_1261064035.64813" 
+    .const 'Sub' $P1470 = "83_1266337365.65225" 
     capture_lex $P1470
-    .const 'Sub' $P1371 = "80_1261064035.64813" 
+    .const 'Sub' $P1371 = "80_1266337365.65225" 
     capture_lex $P1371
-    .const 'Sub' $P1354 = "79_1261064035.64813" 
+    .const 'Sub' $P1354 = "79_1266337365.65225" 
     capture_lex $P1354
-    .const 'Sub' $P1334 = "78_1261064035.64813" 
+    .const 'Sub' $P1334 = "78_1266337365.65225" 
     capture_lex $P1334
-    .const 'Sub' $P1250 = "77_1261064035.64813" 
+    .const 'Sub' $P1250 = "77_1266337365.65225" 
     capture_lex $P1250
-    .const 'Sub' $P1226 = "75_1261064035.64813" 
+    .const 'Sub' $P1226 = "75_1266337365.65225" 
     capture_lex $P1226
-    .const 'Sub' $P1192 = "73_1261064035.64813" 
+    .const 'Sub' $P1192 = "73_1266337365.65225" 
     capture_lex $P1192
-    .const 'Sub' $P1142 = "71_1261064035.64813" 
+    .const 'Sub' $P1142 = "71_1266337365.65225" 
     capture_lex $P1142
-    .const 'Sub' $P1132 = "70_1261064035.64813" 
+    .const 'Sub' $P1132 = "70_1266337365.65225" 
     capture_lex $P1132
-    .const 'Sub' $P1122 = "69_1261064035.64813" 
+    .const 'Sub' $P1122 = "69_1266337365.65225" 
     capture_lex $P1122
-    .const 'Sub' $P1051 = "67_1261064035.64813" 
+    .const 'Sub' $P1051 = "67_1266337365.65225" 
     capture_lex $P1051
-    .const 'Sub' $P1034 = "66_1261064035.64813" 
+    .const 'Sub' $P1034 = "66_1266337365.65225" 
     capture_lex $P1034
-    .const 'Sub' $P1024 = "65_1261064035.64813" 
+    .const 'Sub' $P1024 = "65_1266337365.65225" 
     capture_lex $P1024
-    .const 'Sub' $P1014 = "64_1261064035.64813" 
+    .const 'Sub' $P1014 = "64_1266337365.65225" 
     capture_lex $P1014
-    .const 'Sub' $P1004 = "63_1261064035.64813" 
+    .const 'Sub' $P1004 = "63_1266337365.65225" 
     capture_lex $P1004
-    .const 'Sub' $P980 = "62_1261064035.64813" 
+    .const 'Sub' $P980 = "62_1266337365.65225" 
     capture_lex $P980
-    .const 'Sub' $P927 = "61_1261064035.64813" 
+    .const 'Sub' $P927 = "61_1266337365.65225" 
     capture_lex $P927
-    .const 'Sub' $P917 = "60_1261064035.64813" 
+    .const 'Sub' $P917 = "60_1266337365.65225" 
     capture_lex $P917
-    .const 'Sub' $P828 = "58_1261064035.64813" 
+    .const 'Sub' $P828 = "58_1266337365.65225" 
     capture_lex $P828
-    .const 'Sub' $P802 = "57_1261064035.64813" 
+    .const 'Sub' $P802 = "57_1266337365.65225" 
     capture_lex $P802
-    .const 'Sub' $P786 = "56_1261064035.64813" 
+    .const 'Sub' $P786 = "56_1266337365.65225" 
     capture_lex $P786
-    .const 'Sub' $P776 = "55_1261064035.64813" 
+    .const 'Sub' $P776 = "55_1266337365.65225" 
     capture_lex $P776
-    .const 'Sub' $P766 = "54_1261064035.64813" 
+    .const 'Sub' $P766 = "54_1266337365.65225" 
     capture_lex $P766
-    .const 'Sub' $P756 = "53_1261064035.64813" 
+    .const 'Sub' $P756 = "53_1266337365.65225" 
     capture_lex $P756
-    .const 'Sub' $P746 = "52_1261064035.64813" 
+    .const 'Sub' $P746 = "52_1266337365.65225" 
     capture_lex $P746
-    .const 'Sub' $P736 = "51_1261064035.64813" 
+    .const 'Sub' $P736 = "51_1266337365.65225" 
     capture_lex $P736
-    .const 'Sub' $P726 = "50_1261064035.64813" 
+    .const 'Sub' $P726 = "50_1266337365.65225" 
     capture_lex $P726
-    .const 'Sub' $P716 = "49_1261064035.64813" 
+    .const 'Sub' $P716 = "49_1266337365.65225" 
     capture_lex $P716
-    .const 'Sub' $P706 = "48_1261064035.64813" 
+    .const 'Sub' $P706 = "48_1266337365.65225" 
     capture_lex $P706
-    .const 'Sub' $P696 = "47_1261064035.64813" 
+    .const 'Sub' $P696 = "47_1266337365.65225" 
     capture_lex $P696
-    .const 'Sub' $P686 = "46_1261064035.64813" 
+    .const 'Sub' $P686 = "46_1266337365.65225" 
     capture_lex $P686
-    .const 'Sub' $P676 = "45_1261064035.64813" 
+    .const 'Sub' $P676 = "45_1266337365.65225" 
     capture_lex $P676
-    .const 'Sub' $P666 = "44_1261064035.64813" 
+    .const 'Sub' $P666 = "44_1266337365.65225" 
     capture_lex $P666
-    .const 'Sub' $P656 = "43_1261064035.64813" 
+    .const 'Sub' $P656 = "43_1266337365.65225" 
     capture_lex $P656
-    .const 'Sub' $P638 = "42_1261064035.64813" 
+    .const 'Sub' $P638 = "42_1266337365.65225" 
     capture_lex $P638
-    .const 'Sub' $P603 = "41_1261064035.64813" 
+    .const 'Sub' $P603 = "41_1266337365.65225" 
     capture_lex $P603
-    .const 'Sub' $P587 = "40_1261064035.64813" 
+    .const 'Sub' $P587 = "40_1266337365.65225" 
     capture_lex $P587
-    .const 'Sub' $P566 = "39_1261064035.64813" 
+    .const 'Sub' $P566 = "39_1266337365.65225" 
     capture_lex $P566
-    .const 'Sub' $P546 = "38_1261064035.64813" 
+    .const 'Sub' $P546 = "38_1266337365.65225" 
     capture_lex $P546
-    .const 'Sub' $P533 = "37_1261064035.64813" 
+    .const 'Sub' $P533 = "37_1266337365.65225" 
     capture_lex $P533
-    .const 'Sub' $P507 = "36_1261064035.64813" 
+    .const 'Sub' $P507 = "36_1266337365.65225" 
     capture_lex $P507
-    .const 'Sub' $P471 = "35_1261064035.64813" 
+    .const 'Sub' $P471 = "35_1266337365.65225" 
     capture_lex $P471
-    .const 'Sub' $P454 = "34_1261064035.64813" 
+    .const 'Sub' $P454 = "34_1266337365.65225" 
     capture_lex $P454
-    .const 'Sub' $P440 = "33_1261064035.64813" 
+    .const 'Sub' $P440 = "33_1266337365.65225" 
     capture_lex $P440
-    .const 'Sub' $P387 = "31_1261064035.64813" 
+    .const 'Sub' $P387 = "31_1266337365.65225" 
     capture_lex $P387
-    .const 'Sub' $P374 = "30_1261064035.64813" 
+    .const 'Sub' $P374 = "30_1266337365.65225" 
     capture_lex $P374
-    .const 'Sub' $P355 = "29_1261064035.64813" 
+    .const 'Sub' $P355 = "29_1266337365.65225" 
     capture_lex $P355
-    .const 'Sub' $P345 = "28_1261064035.64813" 
+    .const 'Sub' $P345 = "28_1266337365.65225" 
     capture_lex $P345
-    .const 'Sub' $P335 = "27_1261064035.64813" 
+    .const 'Sub' $P335 = "27_1266337365.65225" 
     capture_lex $P335
-    .const 'Sub' $P319 = "26_1261064035.64813" 
+    .const 'Sub' $P319 = "26_1266337365.65225" 
     capture_lex $P319
-    .const 'Sub' $P259 = "24_1261064035.64813" 
+    .const 'Sub' $P259 = "24_1266337365.65225" 
     capture_lex $P259
-    .const 'Sub' $P210 = "22_1261064035.64813" 
+    .const 'Sub' $P210 = "22_1266337365.65225" 
     capture_lex $P210
-    .const 'Sub' $P191 = "21_1261064035.64813" 
+    .const 'Sub' $P191 = "21_1266337365.65225" 
     capture_lex $P191
-    .const 'Sub' $P158 = "20_1261064035.64813" 
+    .const 'Sub' $P158 = "20_1266337365.65225" 
     capture_lex $P158
-    .const 'Sub' $P148 = "19_1261064035.64813" 
+    .const 'Sub' $P148 = "19_1266337365.65225" 
     capture_lex $P148
-    .const 'Sub' $P94 = "18_1261064035.64813" 
+    .const 'Sub' $P94 = "18_1266337365.65225" 
     capture_lex $P94
-    .const 'Sub' $P79 = "17_1261064035.64813" 
+    .const 'Sub' $P79 = "17_1266337365.65225" 
     capture_lex $P79
-    .const 'Sub' $P61 = "16_1261064035.64813" 
+    .const 'Sub' $P61 = "16_1266337365.65225" 
     capture_lex $P61
-    .const 'Sub' $P26 = "13_1261064035.64813" 
+    .const 'Sub' $P26 = "13_1266337365.65225" 
     capture_lex $P26
-    .const 'Sub' $P16 = "12_1261064035.64813" 
+    .const 'Sub' $P16 = "12_1266337365.65225" 
     capture_lex $P16
     get_global $P15, "@BLOCK"
     unless_null $P15, vivify_129
@@ -15943,23 +15943,23 @@
     set_global "@BLOCK", $P15
   vivify_129:
 .annotate "line", 9
-    .const 'Sub' $P16 = "12_1261064035.64813" 
+    .const 'Sub' $P16 = "12_1266337365.65225" 
     capture_lex $P16
     .lex "xblock_immediate", $P16
 .annotate "line", 14
-    .const 'Sub' $P26 = "13_1261064035.64813" 
+    .const 'Sub' $P26 = "13_1266337365.65225" 
     capture_lex $P26
     .lex "block_immediate", $P26
 .annotate "line", 24
-    .const 'Sub' $P61 = "16_1261064035.64813" 
+    .const 'Sub' $P61 = "16_1266337365.65225" 
     capture_lex $P61
     .lex "sigiltype", $P61
 .annotate "line", 40
-    .const 'Sub' $P79 = "17_1261064035.64813" 
+    .const 'Sub' $P79 = "17_1266337365.65225" 
     capture_lex $P79
     .lex "colonpair_str", $P79
 .annotate "line", 187
-    .const 'Sub' $P94 = "18_1261064035.64813" 
+    .const 'Sub' $P94 = "18_1266337365.65225" 
     capture_lex $P94
     .lex "push_block_handler", $P94
 .annotate "line", 3
@@ -15982,13 +15982,13 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "" :load :init :subid("post127") :outer("11_1261064035.64813")
+.sub "" :load :init :subid("post127") :outer("11_1266337365.65225")
 .annotate "line", 3
     get_hll_global $P14, ["NQP";"Actions"], "_block13" 
     .local pmc block
     set block, $P14
 .annotate "line", 5
-    .const 'Sub' $P2161 = "125_1261064035.64813" 
+    .const 'Sub' $P2161 = "125_1266337365.65225" 
     capture_lex $P2161
     $P2161()
     $P2164 = get_root_global ["parrot"], "P6metaclass"
@@ -15997,7 +15997,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block2160"  :anon :subid("125_1261064035.64813") :outer("11_1261064035.64813")
+.sub "_block2160"  :anon :subid("125_1266337365.65225") :outer("11_1266337365.65225")
 .annotate "line", 6
     get_global $P2162, "@BLOCK"
     unless_null $P2162, vivify_128
@@ -16012,7 +16012,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "xblock_immediate"  :subid("12_1261064035.64813") :outer("11_1261064035.64813")
+.sub "xblock_immediate"  :subid("12_1266337365.65225") :outer("11_1266337365.65225")
     .param pmc param_19
 .annotate "line", 9
     new $P18, 'ExceptionHandler'
@@ -16048,10 +16048,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "block_immediate"  :subid("13_1261064035.64813") :outer("11_1261064035.64813")
+.sub "block_immediate"  :subid("13_1266337365.65225") :outer("11_1266337365.65225")
     .param pmc param_29
 .annotate "line", 14
-    .const 'Sub' $P39 = "14_1261064035.64813" 
+    .const 'Sub' $P39 = "14_1266337365.65225" 
     capture_lex $P39
     new $P28, 'ExceptionHandler'
     set_addr $P28, control_27
@@ -16073,7 +16073,7 @@
     set $P32, $P37
   unless_33_end:
     if $P32, unless_31_end
-    .const 'Sub' $P39 = "14_1261064035.64813" 
+    .const 'Sub' $P39 = "14_1266337365.65225" 
     capture_lex $P39
     $P39()
   unless_31_end:
@@ -16089,9 +16089,9 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block38"  :anon :subid("14_1261064035.64813") :outer("13_1261064035.64813")
+.sub "_block38"  :anon :subid("14_1266337365.65225") :outer("13_1266337365.65225")
 .annotate "line", 16
-    .const 'Sub' $P50 = "15_1261064035.64813" 
+    .const 'Sub' $P50 = "15_1266337365.65225" 
     capture_lex $P50
 .annotate "line", 17
     new $P40, "Undef"
@@ -16114,7 +16114,7 @@
     unless $P44, loop55_done
     shift $P48, $P44
   loop55_redo:
-    .const 'Sub' $P50 = "15_1261064035.64813" 
+    .const 'Sub' $P50 = "15_1266337365.65225" 
     capture_lex $P50
     $P50($P48)
   loop55_next:
@@ -16137,7 +16137,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block49"  :anon :subid("15_1261064035.64813") :outer("14_1261064035.64813")
+.sub "_block49"  :anon :subid("15_1266337365.65225") :outer("14_1266337365.65225")
     .param pmc param_51
 .annotate "line", 18
     .lex "$_", param_51
@@ -16149,7 +16149,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "sigiltype"  :subid("16_1261064035.64813") :outer("11_1261064035.64813")
+.sub "sigiltype"  :subid("16_1266337365.65225") :outer("11_1266337365.65225")
     .param pmc param_64
 .annotate "line", 24
     new $P63, 'ExceptionHandler'
@@ -16195,7 +16195,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "colonpair_str"  :subid("17_1261064035.64813") :outer("11_1261064035.64813")
+.sub "colonpair_str"  :subid("17_1266337365.65225") :outer("11_1266337365.65225")
     .param pmc param_82
 .annotate "line", 40
     new $P81, 'ExceptionHandler'
@@ -16233,7 +16233,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "push_block_handler"  :subid("18_1261064035.64813") :outer("11_1261064035.64813")
+.sub "push_block_handler"  :subid("18_1266337365.65225") :outer("11_1266337365.65225")
     .param pmc param_97
     .param pmc param_98
 .annotate "line", 187
@@ -16350,7 +16350,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "TOP"  :subid("19_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "TOP"  :subid("19_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_151
 .annotate "line", 30
     new $P150, 'ExceptionHandler'
@@ -16380,7 +16380,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "deflongname"  :subid("20_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "deflongname"  :subid("20_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_161
 .annotate "line", 32
     new $P160, 'ExceptionHandler'
@@ -16469,7 +16469,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "comp_unit"  :subid("21_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "comp_unit"  :subid("21_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_194
 .annotate "line", 46
     new $P193, 'ExceptionHandler'
@@ -16522,10 +16522,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statementlist"  :subid("22_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "statementlist"  :subid("22_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_213
 .annotate "line", 54
-    .const 'Sub' $P227 = "23_1261064035.64813" 
+    .const 'Sub' $P227 = "23_1266337365.65225" 
     capture_lex $P227
     new $P212, 'ExceptionHandler'
     set_addr $P212, control_211
@@ -16570,7 +16570,7 @@
     unless $P221, loop252_done
     shift $P225, $P221
   loop252_redo:
-    .const 'Sub' $P227 = "23_1261064035.64813" 
+    .const 'Sub' $P227 = "23_1266337365.65225" 
     capture_lex $P227
     $P227($P225)
   loop252_next:
@@ -16600,7 +16600,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block226"  :anon :subid("23_1261064035.64813") :outer("22_1261064035.64813")
+.sub "_block226"  :anon :subid("23_1266337365.65225") :outer("22_1266337365.65225")
     .param pmc param_229
 .annotate "line", 58
     new $P228, "Undef"
@@ -16660,12 +16660,12 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement"  :subid("24_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "statement"  :subid("24_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_262
     .param pmc param_263 :optional
     .param int has_param_263 :opt_flag
 .annotate "line", 69
-    .const 'Sub' $P271 = "25_1261064035.64813" 
+    .const 'Sub' $P271 = "25_1266337365.65225" 
     capture_lex $P271
     new $P261, 'ExceptionHandler'
     set_addr $P261, control_260
@@ -16724,7 +16724,7 @@
     goto if_267_end
   if_267:
 .annotate "line", 71
-    .const 'Sub' $P271 = "25_1261064035.64813" 
+    .const 'Sub' $P271 = "25_1266337365.65225" 
     capture_lex $P271
     $P271()
   if_267_end:
@@ -16743,7 +16743,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block270"  :anon :subid("25_1261064035.64813") :outer("24_1261064035.64813")
+.sub "_block270"  :anon :subid("25_1266337365.65225") :outer("24_1266337365.65225")
 .annotate "line", 72
     new $P272, "Undef"
     .lex "$mc", $P272
@@ -16856,7 +16856,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "xblock"  :subid("26_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "xblock"  :subid("26_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_322
 .annotate "line", 87
     new $P321, 'ExceptionHandler'
@@ -16900,7 +16900,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "pblock"  :subid("27_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "pblock"  :subid("27_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_338
 .annotate "line", 91
     new $P337, 'ExceptionHandler'
@@ -16932,7 +16932,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "block"  :subid("28_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "block"  :subid("28_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_348
 .annotate "line", 95
     new $P347, 'ExceptionHandler'
@@ -16964,7 +16964,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "blockoid"  :subid("29_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "blockoid"  :subid("29_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_358
 .annotate "line", 99
     new $P357, 'ExceptionHandler'
@@ -17017,7 +17017,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "newpad"  :subid("30_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "newpad"  :subid("30_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_377
 .annotate "line", 107
     new $P376, 'ExceptionHandler'
@@ -17052,10 +17052,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<if>"  :subid("31_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "statement_control:sym<if>"  :subid("31_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_390
 .annotate "line", 114
-    .const 'Sub' $P418 = "32_1261064035.64813" 
+    .const 'Sub' $P418 = "32_1266337365.65225" 
     capture_lex $P418
     new $P389, 'ExceptionHandler'
     set_addr $P389, control_388
@@ -17140,7 +17140,7 @@
     isgt $I416, $N415, 0.0
     unless $I416, loop433_done
   loop433_redo:
-    .const 'Sub' $P418 = "32_1261064035.64813" 
+    .const 'Sub' $P418 = "32_1266337365.65225" 
     capture_lex $P418
     $P418()
   loop433_next:
@@ -17168,7 +17168,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block417"  :anon :subid("32_1261064035.64813") :outer("31_1261064035.64813")
+.sub "_block417"  :anon :subid("32_1266337365.65225") :outer("31_1266337365.65225")
 .annotate "line", 123
     new $P419, "Undef"
     .lex "$else", $P419
@@ -17207,7 +17207,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<unless>"  :subid("33_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "statement_control:sym<unless>"  :subid("33_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_443
 .annotate "line", 130
     new $P442, 'ExceptionHandler'
@@ -17248,7 +17248,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<while>"  :subid("34_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "statement_control:sym<while>"  :subid("34_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_457
 .annotate "line", 136
     new $P456, 'ExceptionHandler'
@@ -17298,7 +17298,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<repeat>"  :subid("35_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "statement_control:sym<repeat>"  :subid("35_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_474
 .annotate "line", 142
     new $P473, 'ExceptionHandler'
@@ -17398,7 +17398,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<for>"  :subid("36_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "statement_control:sym<for>"  :subid("36_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_510
 .annotate "line", 156
     new $P509, 'ExceptionHandler'
@@ -17478,7 +17478,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<return>"  :subid("37_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "statement_control:sym<return>"  :subid("37_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_536
 .annotate "line", 169
     new $P535, 'ExceptionHandler'
@@ -17513,7 +17513,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<CATCH>"  :subid("38_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "statement_control:sym<CATCH>"  :subid("38_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_549
 .annotate "line", 173
     new $P548, 'ExceptionHandler'
@@ -17571,7 +17571,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_control:sym<CONTROL>"  :subid("39_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "statement_control:sym<CONTROL>"  :subid("39_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_569
 .annotate "line", 180
     new $P568, 'ExceptionHandler'
@@ -17629,7 +17629,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_prefix:sym<INIT>"  :subid("40_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "statement_prefix:sym<INIT>"  :subid("40_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_590
 .annotate "line", 224
     new $P589, 'ExceptionHandler'
@@ -17675,7 +17675,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_prefix:sym<try>"  :subid("41_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "statement_prefix:sym<try>"  :subid("41_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_606
 .annotate "line", 229
     new $P605, 'ExceptionHandler'
@@ -17752,7 +17752,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "blorst"  :subid("42_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "blorst"  :subid("42_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_641
 .annotate "line", 252
     new $P640, 'ExceptionHandler'
@@ -17811,7 +17811,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_cond:sym<if>"  :subid("43_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "statement_mod_cond:sym<if>"  :subid("43_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_659
 .annotate "line", 260
     new $P658, 'ExceptionHandler'
@@ -17841,7 +17841,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_cond:sym<unless>"  :subid("44_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "statement_mod_cond:sym<unless>"  :subid("44_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_669
 .annotate "line", 261
     new $P668, 'ExceptionHandler'
@@ -17871,7 +17871,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_loop:sym<while>"  :subid("45_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "statement_mod_loop:sym<while>"  :subid("45_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_679
 .annotate "line", 263
     new $P678, 'ExceptionHandler'
@@ -17901,7 +17901,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "statement_mod_loop:sym<until>"  :subid("46_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "statement_mod_loop:sym<until>"  :subid("46_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_689
 .annotate "line", 264
     new $P688, 'ExceptionHandler'
@@ -17931,7 +17931,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<fatarrow>"  :subid("47_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "term:sym<fatarrow>"  :subid("47_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_699
 .annotate "line", 268
     new $P698, 'ExceptionHandler'
@@ -17961,7 +17961,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<colonpair>"  :subid("48_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "term:sym<colonpair>"  :subid("48_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_709
 .annotate "line", 269
     new $P708, 'ExceptionHandler'
@@ -17991,7 +17991,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<variable>"  :subid("49_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "term:sym<variable>"  :subid("49_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_719
 .annotate "line", 270
     new $P718, 'ExceptionHandler'
@@ -18021,7 +18021,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<package_declarator>"  :subid("50_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "term:sym<package_declarator>"  :subid("50_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_729
 .annotate "line", 271
     new $P728, 'ExceptionHandler'
@@ -18051,7 +18051,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<scope_declarator>"  :subid("51_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "term:sym<scope_declarator>"  :subid("51_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_739
 .annotate "line", 272
     new $P738, 'ExceptionHandler'
@@ -18081,7 +18081,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<routine_declarator>"  :subid("52_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "term:sym<routine_declarator>"  :subid("52_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_749
 .annotate "line", 273
     new $P748, 'ExceptionHandler'
@@ -18111,7 +18111,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<regex_declarator>"  :subid("53_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "term:sym<regex_declarator>"  :subid("53_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_759
 .annotate "line", 274
     new $P758, 'ExceptionHandler'
@@ -18141,7 +18141,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<statement_prefix>"  :subid("54_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "term:sym<statement_prefix>"  :subid("54_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_769
 .annotate "line", 275
     new $P768, 'ExceptionHandler'
@@ -18171,7 +18171,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<lambda>"  :subid("55_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "term:sym<lambda>"  :subid("55_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_779
 .annotate "line", 276
     new $P778, 'ExceptionHandler'
@@ -18201,7 +18201,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "fatarrow"  :subid("56_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "fatarrow"  :subid("56_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_789
 .annotate "line", 278
     new $P788, 'ExceptionHandler'
@@ -18250,7 +18250,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "colonpair"  :subid("57_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "colonpair"  :subid("57_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_805
 .annotate "line", 284
     new $P804, 'ExceptionHandler'
@@ -18331,10 +18331,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "variable"  :subid("58_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "variable"  :subid("58_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_831
 .annotate "line", 292
-    .const 'Sub' $P844 = "59_1261064035.64813" 
+    .const 'Sub' $P844 = "59_1266337365.65225" 
     capture_lex $P844
     new $P830, 'ExceptionHandler'
     set_addr $P830, control_829
@@ -18358,7 +18358,7 @@
   vivify_296:
     if $P836, if_834
 .annotate "line", 298
-    .const 'Sub' $P844 = "59_1261064035.64813" 
+    .const 'Sub' $P844 = "59_1266337365.65225" 
     capture_lex $P844
     $P844()
     goto if_834_end
@@ -18395,7 +18395,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block843"  :anon :subid("59_1261064035.64813") :outer("58_1261064035.64813")
+.sub "_block843"  :anon :subid("59_1266337365.65225") :outer("58_1266337365.65225")
 .annotate "line", 299
     new $P845, "ResizablePMCArray"
     .lex "@name", $P845
@@ -18564,7 +18564,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "package_declarator:sym<module>"  :subid("60_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "package_declarator:sym<module>"  :subid("60_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_920
 .annotate "line", 330
     new $P919, 'ExceptionHandler'
@@ -18594,7 +18594,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "package_declarator:sym<class>"  :subid("61_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "package_declarator:sym<class>"  :subid("61_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_930
 .annotate "line", 331
     new $P929, 'ExceptionHandler'
@@ -18751,7 +18751,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "package_def"  :subid("62_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "package_def"  :subid("62_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_983
 .annotate "line", 354
     new $P982, 'ExceptionHandler'
@@ -18829,7 +18829,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<my>"  :subid("63_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "scope_declarator:sym<my>"  :subid("63_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1007
 .annotate "line", 361
     new $P1006, 'ExceptionHandler'
@@ -18859,7 +18859,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<our>"  :subid("64_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "scope_declarator:sym<our>"  :subid("64_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1017
 .annotate "line", 362
     new $P1016, 'ExceptionHandler'
@@ -18889,7 +18889,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "scope_declarator:sym<has>"  :subid("65_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "scope_declarator:sym<has>"  :subid("65_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1027
 .annotate "line", 363
     new $P1026, 'ExceptionHandler'
@@ -18919,7 +18919,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "scoped"  :subid("66_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "scoped"  :subid("66_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1037
 .annotate "line", 365
     new $P1036, 'ExceptionHandler'
@@ -18977,10 +18977,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "variable_declarator"  :subid("67_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "variable_declarator"  :subid("67_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1054
 .annotate "line", 371
-    .const 'Sub' $P1094 = "68_1261064035.64813" 
+    .const 'Sub' $P1094 = "68_1266337365.65225" 
     capture_lex $P1094
     new $P1053, 'ExceptionHandler'
     set_addr $P1053, control_1052
@@ -19062,7 +19062,7 @@
     iseq $I1079, $S1078, "has"
     if $I1079, if_1076
 .annotate "line", 388
-    .const 'Sub' $P1094 = "68_1261064035.64813" 
+    .const 'Sub' $P1094 = "68_1266337365.65225" 
     capture_lex $P1094
     $P1094()
     goto if_1076_end
@@ -19122,7 +19122,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1093"  :anon :subid("68_1261064035.64813") :outer("67_1261064035.64813")
+.sub "_block1093"  :anon :subid("68_1266337365.65225") :outer("67_1266337365.65225")
 .annotate "line", 389
     new $P1095, "Undef"
     .lex "$scope", $P1095
@@ -19183,7 +19183,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "routine_declarator:sym<sub>"  :subid("69_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "routine_declarator:sym<sub>"  :subid("69_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1125
 .annotate "line", 399
     new $P1124, 'ExceptionHandler'
@@ -19213,7 +19213,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "routine_declarator:sym<method>"  :subid("70_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "routine_declarator:sym<method>"  :subid("70_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1135
 .annotate "line", 400
     new $P1134, 'ExceptionHandler'
@@ -19243,10 +19243,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "routine_def"  :subid("71_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "routine_def"  :subid("71_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1145
 .annotate "line", 402
-    .const 'Sub' $P1156 = "72_1261064035.64813" 
+    .const 'Sub' $P1156 = "72_1266337365.65225" 
     capture_lex $P1156
     new $P1144, 'ExceptionHandler'
     set_addr $P1144, control_1143
@@ -19283,7 +19283,7 @@
     new $P1154, "Undef"
   vivify_380:
     unless $P1154, if_1152_end
-    .const 'Sub' $P1156 = "72_1261064035.64813" 
+    .const 'Sub' $P1156 = "72_1266337365.65225" 
     capture_lex $P1156
     $P1156()
   if_1152_end:
@@ -19302,7 +19302,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1155"  :anon :subid("72_1261064035.64813") :outer("71_1261064035.64813")
+.sub "_block1155"  :anon :subid("72_1266337365.65225") :outer("71_1266337365.65225")
 .annotate "line", 407
     new $P1157, "Undef"
     .lex "$name", $P1157
@@ -19398,10 +19398,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "method_def"  :subid("73_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "method_def"  :subid("73_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1195
 .annotate "line", 420
-    .const 'Sub' $P1211 = "74_1261064035.64813" 
+    .const 'Sub' $P1211 = "74_1266337365.65225" 
     capture_lex $P1211
     new $P1194, 'ExceptionHandler'
     set_addr $P1194, control_1193
@@ -19453,7 +19453,7 @@
     new $P1209, "Undef"
   vivify_399:
     unless $P1209, if_1207_end
-    .const 'Sub' $P1211 = "74_1261064035.64813" 
+    .const 'Sub' $P1211 = "74_1266337365.65225" 
     capture_lex $P1211
     $P1211()
   if_1207_end:
@@ -19472,7 +19472,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1210"  :anon :subid("74_1261064035.64813") :outer("73_1261064035.64813")
+.sub "_block1210"  :anon :subid("74_1266337365.65225") :outer("73_1266337365.65225")
 .annotate "line", 427
     new $P1212, "Undef"
     .lex "$name", $P1212
@@ -19503,10 +19503,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "signature"  :subid("75_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "signature"  :subid("75_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1229
 .annotate "line", 434
-    .const 'Sub' $P1240 = "76_1261064035.64813" 
+    .const 'Sub' $P1240 = "76_1266337365.65225" 
     capture_lex $P1240
     new $P1228, 'ExceptionHandler'
     set_addr $P1228, control_1227
@@ -19550,7 +19550,7 @@
     unless $P1234, loop1246_done
     shift $P1238, $P1234
   loop1246_redo:
-    .const 'Sub' $P1240 = "76_1261064035.64813" 
+    .const 'Sub' $P1240 = "76_1266337365.65225" 
     capture_lex $P1240
     $P1240($P1238)
   loop1246_next:
@@ -19575,7 +19575,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1239"  :anon :subid("76_1261064035.64813") :outer("75_1261064035.64813")
+.sub "_block1239"  :anon :subid("76_1266337365.65225") :outer("75_1266337365.65225")
     .param pmc param_1241
 .annotate "line", 436
     .lex "$_", param_1241
@@ -19588,7 +19588,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "parameter"  :subid("77_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "parameter"  :subid("77_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1253
 .annotate "line", 439
     new $P1252, 'ExceptionHandler'
@@ -19820,7 +19820,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "param_var"  :subid("78_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "param_var"  :subid("78_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1337
 .annotate "line", 471
     new $P1336, 'ExceptionHandler'
@@ -19873,7 +19873,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "named_param"  :subid("79_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "named_param"  :subid("79_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1357
 .annotate "line", 479
     new $P1356, 'ExceptionHandler'
@@ -19926,14 +19926,14 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "regex_declarator"  :subid("80_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "regex_declarator"  :subid("80_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1374
     .param pmc param_1375 :optional
     .param int has_param_1375 :opt_flag
 .annotate "line", 485
-    .const 'Sub' $P1445 = "82_1261064035.64813" 
+    .const 'Sub' $P1445 = "82_1266337365.65225" 
     capture_lex $P1445
-    .const 'Sub' $P1417 = "81_1261064035.64813" 
+    .const 'Sub' $P1417 = "81_1266337365.65225" 
     capture_lex $P1417
     new $P1373, 'ExceptionHandler'
     set_addr $P1373, control_1372
@@ -19991,13 +19991,13 @@
     iseq $I1415, $S1414, "open"
     if $I1415, if_1412
 .annotate "line", 531
-    .const 'Sub' $P1445 = "82_1261064035.64813" 
+    .const 'Sub' $P1445 = "82_1266337365.65225" 
     capture_lex $P1445
     $P1445()
     goto if_1412_end
   if_1412:
 .annotate "line", 518
-    .const 'Sub' $P1417 = "81_1261064035.64813" 
+    .const 'Sub' $P1417 = "81_1266337365.65225" 
     capture_lex $P1417
     $P1417()
   if_1412_end:
@@ -20054,7 +20054,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1444"  :anon :subid("82_1261064035.64813") :outer("80_1261064035.64813")
+.sub "_block1444"  :anon :subid("82_1266337365.65225") :outer("80_1266337365.65225")
 .annotate "line", 532
     new $P1446, "Undef"
     .lex "$regex", $P1446
@@ -20105,7 +20105,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1416"  :anon :subid("81_1261064035.64813") :outer("80_1261064035.64813")
+.sub "_block1416"  :anon :subid("81_1266337365.65225") :outer("80_1266337365.65225")
 .annotate "line", 519
     new $P1418, "Hash"
     .lex "%h", $P1418
@@ -20203,7 +20203,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "dotty"  :subid("83_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "dotty"  :subid("83_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1473
 .annotate "line", 549
     new $P1472, 'ExceptionHandler'
@@ -20300,7 +20300,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<self>"  :subid("84_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "term:sym<self>"  :subid("84_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1505
 .annotate "line", 558
     new $P1504, 'ExceptionHandler'
@@ -20325,7 +20325,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<identifier>"  :subid("85_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "term:sym<identifier>"  :subid("85_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1514
 .annotate "line", 562
     new $P1513, 'ExceptionHandler'
@@ -20374,7 +20374,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<name>"  :subid("86_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "term:sym<name>"  :subid("86_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1530
 .annotate "line", 568
     new $P1529, 'ExceptionHandler'
@@ -20492,7 +20492,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<pir::op>"  :subid("87_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "term:sym<pir::op>"  :subid("87_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1572
 .annotate "line", 582
     new $P1571, 'ExceptionHandler'
@@ -20583,7 +20583,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "args"  :subid("88_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "args"  :subid("88_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1601
 .annotate "line", 597
     new $P1600, 'ExceptionHandler'
@@ -20613,10 +20613,10 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "arglist"  :subid("89_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "arglist"  :subid("89_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1611
 .annotate "line", 599
-    .const 'Sub' $P1622 = "90_1261064035.64813" 
+    .const 'Sub' $P1622 = "90_1266337365.65225" 
     capture_lex $P1622
     new $P1610, 'ExceptionHandler'
     set_addr $P1610, control_1609
@@ -20648,7 +20648,7 @@
     new $P1620, "Undef"
   vivify_498:
     unless $P1620, if_1618_end
-    .const 'Sub' $P1622 = "90_1261064035.64813" 
+    .const 'Sub' $P1622 = "90_1266337365.65225" 
     capture_lex $P1622
     $P1622()
   if_1618_end:
@@ -20756,9 +20756,9 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1621"  :anon :subid("90_1261064035.64813") :outer("89_1261064035.64813")
+.sub "_block1621"  :anon :subid("90_1266337365.65225") :outer("89_1266337365.65225")
 .annotate "line", 601
-    .const 'Sub' $P1643 = "91_1261064035.64813" 
+    .const 'Sub' $P1643 = "91_1266337365.65225" 
     capture_lex $P1643
 .annotate "line", 602
     new $P1623, "Undef"
@@ -20811,7 +20811,7 @@
     unless $P1637, loop1648_done
     shift $P1641, $P1637
   loop1648_redo:
-    .const 'Sub' $P1643 = "91_1261064035.64813" 
+    .const 'Sub' $P1643 = "91_1266337365.65225" 
     capture_lex $P1643
     $P1643($P1641)
   loop1648_next:
@@ -20834,7 +20834,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1642"  :anon :subid("91_1261064035.64813") :outer("90_1261064035.64813")
+.sub "_block1642"  :anon :subid("91_1266337365.65225") :outer("90_1266337365.65225")
     .param pmc param_1644
 .annotate "line", 604
     .lex "$_", param_1644
@@ -20846,7 +20846,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "term:sym<value>"  :subid("92_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "term:sym<value>"  :subid("92_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1695
 .annotate "line", 621
     new $P1694, 'ExceptionHandler'
@@ -20876,7 +20876,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<( )>"  :subid("93_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "circumfix:sym<( )>"  :subid("93_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1705
 .annotate "line", 623
     new $P1704, 'ExceptionHandler'
@@ -20932,7 +20932,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<[ ]>"  :subid("94_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "circumfix:sym<[ ]>"  :subid("94_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1723
 .annotate "line", 629
     new $P1722, 'ExceptionHandler'
@@ -21008,7 +21008,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<ang>"  :subid("95_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "circumfix:sym<ang>"  :subid("95_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1750
 .annotate "line", 644
     new $P1749, 'ExceptionHandler'
@@ -21038,7 +21038,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("96_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("96_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1760
 .annotate "line", 645
     new $P1759, 'ExceptionHandler'
@@ -21068,7 +21068,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<{ }>"  :subid("97_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "circumfix:sym<{ }>"  :subid("97_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1770
 .annotate "line", 647
     new $P1769, 'ExceptionHandler'
@@ -21134,7 +21134,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "circumfix:sym<sigil>"  :subid("98_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "circumfix:sym<sigil>"  :subid("98_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1792
 .annotate "line", 653
     new $P1791, 'ExceptionHandler'
@@ -21213,7 +21213,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "semilist"  :subid("99_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "semilist"  :subid("99_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1821
 .annotate "line", 660
     new $P1820, 'ExceptionHandler'
@@ -21243,7 +21243,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<[ ]>"  :subid("100_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "postcircumfix:sym<[ ]>"  :subid("100_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1831
 .annotate "line", 662
     new $P1830, 'ExceptionHandler'
@@ -21277,7 +21277,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<{ }>"  :subid("101_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "postcircumfix:sym<{ }>"  :subid("101_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1843
 .annotate "line", 668
     new $P1842, 'ExceptionHandler'
@@ -21311,7 +21311,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<ang>"  :subid("102_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "postcircumfix:sym<ang>"  :subid("102_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1855
 .annotate "line", 674
     new $P1854, 'ExceptionHandler'
@@ -21345,7 +21345,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postcircumfix:sym<( )>"  :subid("103_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "postcircumfix:sym<( )>"  :subid("103_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1867
 .annotate "line", 680
     new $P1866, 'ExceptionHandler'
@@ -21377,7 +21377,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "value"  :subid("104_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "value"  :subid("104_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1877
 .annotate "line", 684
     new $P1876, 'ExceptionHandler'
@@ -21432,7 +21432,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "number"  :subid("105_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "number"  :subid("105_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1894
 .annotate "line", 688
     new $P1893, 'ExceptionHandler'
@@ -21510,7 +21510,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<apos>"  :subid("106_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "quote:sym<apos>"  :subid("106_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1922
 .annotate "line", 694
     new $P1921, 'ExceptionHandler'
@@ -21540,7 +21540,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<dblq>"  :subid("107_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "quote:sym<dblq>"  :subid("107_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1932
 .annotate "line", 695
     new $P1931, 'ExceptionHandler'
@@ -21570,7 +21570,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<qq>"  :subid("108_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "quote:sym<qq>"  :subid("108_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1942
 .annotate "line", 696
     new $P1941, 'ExceptionHandler'
@@ -21600,7 +21600,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<q>"  :subid("109_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "quote:sym<q>"  :subid("109_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1952
 .annotate "line", 697
     new $P1951, 'ExceptionHandler'
@@ -21630,7 +21630,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<Q>"  :subid("110_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "quote:sym<Q>"  :subid("110_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1962
 .annotate "line", 698
     new $P1961, 'ExceptionHandler'
@@ -21660,7 +21660,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym<Q:PIR>"  :subid("111_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "quote:sym<Q:PIR>"  :subid("111_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1972
 .annotate "line", 699
     new $P1971, 'ExceptionHandler'
@@ -21696,7 +21696,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote:sym</ />"  :subid("112_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "quote:sym</ />"  :subid("112_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_1986
     .param pmc param_1987 :optional
     .param int has_param_1987 :opt_flag
@@ -21805,7 +21805,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote_escape:sym<$>"  :subid("113_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "quote_escape:sym<$>"  :subid("113_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_2023
 .annotate "line", 728
     new $P2022, 'ExceptionHandler'
@@ -21835,7 +21835,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "quote_escape:sym<{ }>"  :subid("114_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "quote_escape:sym<{ }>"  :subid("114_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_2033
 .annotate "line", 729
     new $P2032, 'ExceptionHandler'
@@ -21873,7 +21873,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postfix:sym<.>"  :subid("115_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "postfix:sym<.>"  :subid("115_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_2047
 .annotate "line", 737
     new $P2046, 'ExceptionHandler'
@@ -21903,7 +21903,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postfix:sym<++>"  :subid("116_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "postfix:sym<++>"  :subid("116_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_2057
 .annotate "line", 739
     new $P2056, 'ExceptionHandler'
@@ -21933,7 +21933,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "postfix:sym<-->"  :subid("117_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "postfix:sym<-->"  :subid("117_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_2067
 .annotate "line", 745
     new $P2066, 'ExceptionHandler'
@@ -21963,7 +21963,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "prefix:sym<make>"  :subid("118_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "prefix:sym<make>"  :subid("118_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_2077
 .annotate "line", 751
     new $P2076, 'ExceptionHandler'
@@ -21993,7 +21993,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "infix:sym<~~>"  :subid("119_1261064035.64813") :method :outer("11_1261064035.64813")
+.sub "infix:sym<~~>"  :subid("119_1266337365.65225") :method :outer("11_1266337365.65225")
     .param pmc param_2089
 .annotate "line", 760
     new $P2088, 'ExceptionHandler'
@@ -22019,18 +22019,18 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "_block2096"  :subid("120_1261064035.64813") :outer("11_1261064035.64813")
+.sub "_block2096"  :subid("120_1266337365.65225") :outer("11_1266337365.65225")
 .annotate "line", 765
-    .const 'Sub' $P2132 = "124_1261064035.64813" 
+    .const 'Sub' $P2132 = "124_1266337365.65225" 
     capture_lex $P2132
-    .const 'Sub' $P2122 = "123_1261064035.64813" 
+    .const 'Sub' $P2122 = "123_1266337365.65225" 
     capture_lex $P2122
-    .const 'Sub' $P2112 = "122_1261064035.64813" 
+    .const 'Sub' $P2112 = "122_1266337365.65225" 
     capture_lex $P2112
-    .const 'Sub' $P2098 = "121_1261064035.64813" 
+    .const 'Sub' $P2098 = "121_1266337365.65225" 
     capture_lex $P2098
 .annotate "line", 776
-    .const 'Sub' $P2132 = "124_1261064035.64813" 
+    .const 'Sub' $P2132 = "124_1266337365.65225" 
     capture_lex $P2132
 .annotate "line", 765
     .return ($P2132)
@@ -22038,7 +22038,7 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "metachar:sym<:my>"  :subid("121_1261064035.64813") :method :outer("120_1261064035.64813")
+.sub "metachar:sym<:my>"  :subid("121_1266337365.65225") :method :outer("120_1266337365.65225")
     .param pmc param_2101
 .annotate "line", 767
     new $P2100, 'ExceptionHandler'
@@ -22077,7 +22077,7 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "metachar:sym<{ }>"  :subid("122_1261064035.64813") :method :outer("120_1261064035.64813")
+.sub "metachar:sym<{ }>"  :subid("122_1266337365.65225") :method :outer("120_1266337365.65225")
     .param pmc param_2115
 .annotate "line", 772
     new $P2114, 'ExceptionHandler'
@@ -22107,7 +22107,7 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "assertion:sym<{ }>"  :subid("123_1261064035.64813") :method :outer("120_1261064035.64813")
+.sub "assertion:sym<{ }>"  :subid("123_1266337365.65225") :method :outer("120_1266337365.65225")
     .param pmc param_2125
 .annotate "line", 774
     new $P2124, 'ExceptionHandler'
@@ -22137,7 +22137,7 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "codeblock"  :subid("124_1261064035.64813") :method :outer("120_1261064035.64813")
+.sub "codeblock"  :subid("124_1266337365.65225") :method :outer("120_1266337365.65225")
     .param pmc param_2135
 .annotate "line", 776
     new $P2134, 'ExceptionHandler'

Modified: branches/sys_mem_reduce/ext/nqp-rx/src/stage0/P6Regex-s0.pir
==============================================================================
--- branches/sys_mem_reduce/ext/nqp-rx/src/stage0/P6Regex-s0.pir	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/ext/nqp-rx/src/stage0/P6Regex-s0.pir	Sat Feb 20 22:12:51 2010	(r44252)
@@ -16,7 +16,7 @@
 ### .include 'gen/p6regex-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1261064009.3328")
+.sub "_block11"  :anon :subid("10_1266337342.27136")
 .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_1261064009.3328")
+.sub "" :load :init :subid("post158") :outer("10_1266337342.27136")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1261064009.3328" 
+    .const 'Sub' $P12 = "10_1266337342.27136" 
     .local pmc block
     set block, $P12
     $P580 = get_root_global ["parrot"], "P6metaclass"
@@ -41,140 +41,140 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block13"  :subid("11_1261064009.3328") :outer("10_1261064009.3328")
+.sub "_block13"  :subid("11_1266337342.27136") :outer("10_1266337342.27136")
 .annotate "line", 3
-    .const 'Sub' $P571 = "156_1261064009.3328" 
+    .const 'Sub' $P571 = "156_1266337342.27136" 
     capture_lex $P571
-    .const 'Sub' $P563 = "154_1261064009.3328" 
+    .const 'Sub' $P563 = "154_1266337342.27136" 
     capture_lex $P563
-    .const 'Sub' $P555 = "152_1261064009.3328" 
+    .const 'Sub' $P555 = "152_1266337342.27136" 
     capture_lex $P555
-    .const 'Sub' $P534 = "147_1261064009.3328" 
+    .const 'Sub' $P534 = "147_1266337342.27136" 
     capture_lex $P534
-    .const 'Sub' $P499 = "141_1261064009.3328" 
+    .const 'Sub' $P499 = "141_1266337342.27136" 
     capture_lex $P499
-    .const 'Sub' $P487 = "138_1261064009.3328" 
+    .const 'Sub' $P487 = "138_1266337342.27136" 
     capture_lex $P487
-    .const 'Sub' $P474 = "135_1261064009.3328" 
+    .const 'Sub' $P474 = "135_1266337342.27136" 
     capture_lex $P474
-    .const 'Sub' $P468 = "133_1261064009.3328" 
+    .const 'Sub' $P468 = "133_1266337342.27136" 
     capture_lex $P468
-    .const 'Sub' $P457 = "130_1261064009.3328" 
+    .const 'Sub' $P457 = "130_1266337342.27136" 
     capture_lex $P457
-    .const 'Sub' $P446 = "127_1261064009.3328" 
+    .const 'Sub' $P446 = "127_1266337342.27136" 
     capture_lex $P446
-    .const 'Sub' $P437 = "123_1261064009.3328" 
+    .const 'Sub' $P437 = "123_1266337342.27136" 
     capture_lex $P437
-    .const 'Sub' $P431 = "121_1261064009.3328" 
+    .const 'Sub' $P431 = "121_1266337342.27136" 
     capture_lex $P431
-    .const 'Sub' $P425 = "119_1261064009.3328" 
+    .const 'Sub' $P425 = "119_1266337342.27136" 
     capture_lex $P425
-    .const 'Sub' $P419 = "117_1261064009.3328" 
+    .const 'Sub' $P419 = "117_1266337342.27136" 
     capture_lex $P419
-    .const 'Sub' $P413 = "115_1261064009.3328" 
+    .const 'Sub' $P413 = "115_1266337342.27136" 
     capture_lex $P413
-    .const 'Sub' $P402 = "113_1261064009.3328" 
-    capture_lex $P402
-    .const 'Sub' $P391 = "111_1261064009.3328" 
-    capture_lex $P391
-    .const 'Sub' $P383 = "109_1261064009.3328" 
+    .const 'Sub' $P405 = "113_1266337342.27136" 
+    capture_lex $P405
+    .const 'Sub' $P394 = "111_1266337342.27136" 
+    capture_lex $P394
+    .const 'Sub' $P383 = "109_1266337342.27136" 
     capture_lex $P383
-    .const 'Sub' $P377 = "107_1261064009.3328" 
+    .const 'Sub' $P377 = "107_1266337342.27136" 
     capture_lex $P377
-    .const 'Sub' $P371 = "105_1261064009.3328" 
+    .const 'Sub' $P371 = "105_1266337342.27136" 
     capture_lex $P371
-    .const 'Sub' $P365 = "103_1261064009.3328" 
+    .const 'Sub' $P365 = "103_1266337342.27136" 
     capture_lex $P365
-    .const 'Sub' $P359 = "101_1261064009.3328" 
+    .const 'Sub' $P359 = "101_1266337342.27136" 
     capture_lex $P359
-    .const 'Sub' $P353 = "99_1261064009.3328" 
+    .const 'Sub' $P353 = "99_1266337342.27136" 
     capture_lex $P353
-    .const 'Sub' $P347 = "97_1261064009.3328" 
+    .const 'Sub' $P347 = "97_1266337342.27136" 
     capture_lex $P347
-    .const 'Sub' $P341 = "95_1261064009.3328" 
+    .const 'Sub' $P341 = "95_1266337342.27136" 
     capture_lex $P341
-    .const 'Sub' $P335 = "93_1261064009.3328" 
+    .const 'Sub' $P335 = "93_1266337342.27136" 
     capture_lex $P335
-    .const 'Sub' $P323 = "89_1261064009.3328" 
+    .const 'Sub' $P323 = "89_1266337342.27136" 
     capture_lex $P323
-    .const 'Sub' $P311 = "87_1261064009.3328" 
+    .const 'Sub' $P311 = "87_1266337342.27136" 
     capture_lex $P311
-    .const 'Sub' $P304 = "85_1261064009.3328" 
+    .const 'Sub' $P304 = "85_1266337342.27136" 
     capture_lex $P304
-    .const 'Sub' $P287 = "83_1261064009.3328" 
+    .const 'Sub' $P287 = "83_1266337342.27136" 
     capture_lex $P287
-    .const 'Sub' $P280 = "81_1261064009.3328" 
+    .const 'Sub' $P280 = "81_1266337342.27136" 
     capture_lex $P280
-    .const 'Sub' $P274 = "79_1261064009.3328" 
+    .const 'Sub' $P274 = "79_1266337342.27136" 
     capture_lex $P274
-    .const 'Sub' $P268 = "77_1261064009.3328" 
+    .const 'Sub' $P268 = "77_1266337342.27136" 
     capture_lex $P268
-    .const 'Sub' $P261 = "75_1261064009.3328" 
+    .const 'Sub' $P261 = "75_1266337342.27136" 
     capture_lex $P261
-    .const 'Sub' $P254 = "73_1261064009.3328" 
+    .const 'Sub' $P254 = "73_1266337342.27136" 
     capture_lex $P254
-    .const 'Sub' $P247 = "71_1261064009.3328" 
+    .const 'Sub' $P247 = "71_1266337342.27136" 
     capture_lex $P247
-    .const 'Sub' $P240 = "69_1261064009.3328" 
+    .const 'Sub' $P240 = "69_1266337342.27136" 
     capture_lex $P240
-    .const 'Sub' $P234 = "67_1261064009.3328" 
+    .const 'Sub' $P234 = "67_1266337342.27136" 
     capture_lex $P234
-    .const 'Sub' $P228 = "65_1261064009.3328" 
+    .const 'Sub' $P228 = "65_1266337342.27136" 
     capture_lex $P228
-    .const 'Sub' $P222 = "63_1261064009.3328" 
+    .const 'Sub' $P222 = "63_1266337342.27136" 
     capture_lex $P222
-    .const 'Sub' $P216 = "61_1261064009.3328" 
+    .const 'Sub' $P216 = "61_1266337342.27136" 
     capture_lex $P216
-    .const 'Sub' $P210 = "59_1261064009.3328" 
+    .const 'Sub' $P210 = "59_1266337342.27136" 
     capture_lex $P210
-    .const 'Sub' $P205 = "57_1261064009.3328" 
+    .const 'Sub' $P205 = "57_1266337342.27136" 
     capture_lex $P205
-    .const 'Sub' $P200 = "55_1261064009.3328" 
+    .const 'Sub' $P200 = "55_1266337342.27136" 
     capture_lex $P200
-    .const 'Sub' $P194 = "53_1261064009.3328" 
+    .const 'Sub' $P194 = "53_1266337342.27136" 
     capture_lex $P194
-    .const 'Sub' $P188 = "51_1261064009.3328" 
+    .const 'Sub' $P188 = "51_1266337342.27136" 
     capture_lex $P188
-    .const 'Sub' $P182 = "49_1261064009.3328" 
+    .const 'Sub' $P182 = "49_1266337342.27136" 
     capture_lex $P182
-    .const 'Sub' $P166 = "44_1261064009.3328" 
+    .const 'Sub' $P166 = "44_1266337342.27136" 
     capture_lex $P166
-    .const 'Sub' $P154 = "42_1261064009.3328" 
+    .const 'Sub' $P154 = "42_1266337342.27136" 
     capture_lex $P154
-    .const 'Sub' $P147 = "40_1261064009.3328" 
+    .const 'Sub' $P147 = "40_1266337342.27136" 
     capture_lex $P147
-    .const 'Sub' $P140 = "38_1261064009.3328" 
+    .const 'Sub' $P140 = "38_1266337342.27136" 
     capture_lex $P140
-    .const 'Sub' $P133 = "36_1261064009.3328" 
+    .const 'Sub' $P133 = "36_1266337342.27136" 
     capture_lex $P133
-    .const 'Sub' $P114 = "31_1261064009.3328" 
+    .const 'Sub' $P114 = "31_1266337342.27136" 
     capture_lex $P114
-    .const 'Sub' $P101 = "28_1261064009.3328" 
+    .const 'Sub' $P101 = "28_1266337342.27136" 
     capture_lex $P101
-    .const 'Sub' $P94 = "26_1261064009.3328" 
+    .const 'Sub' $P94 = "26_1266337342.27136" 
     capture_lex $P94
-    .const 'Sub' $P82 = "24_1261064009.3328" 
+    .const 'Sub' $P82 = "24_1266337342.27136" 
     capture_lex $P82
-    .const 'Sub' $P75 = "22_1261064009.3328" 
+    .const 'Sub' $P75 = "22_1266337342.27136" 
     capture_lex $P75
-    .const 'Sub' $P63 = "20_1261064009.3328" 
+    .const 'Sub' $P63 = "20_1266337342.27136" 
     capture_lex $P63
-    .const 'Sub' $P56 = "18_1261064009.3328" 
+    .const 'Sub' $P56 = "18_1266337342.27136" 
     capture_lex $P56
-    .const 'Sub' $P46 = "15_1261064009.3328" 
+    .const 'Sub' $P46 = "15_1266337342.27136" 
     capture_lex $P46
-    .const 'Sub' $P38 = "13_1261064009.3328" 
+    .const 'Sub' $P38 = "13_1266337342.27136" 
     capture_lex $P38
-    .const 'Sub' $P15 = "12_1261064009.3328" 
+    .const 'Sub' $P15 = "12_1266337342.27136" 
     capture_lex $P15
-    .const 'Sub' $P571 = "156_1261064009.3328" 
+    .const 'Sub' $P571 = "156_1266337342.27136" 
     capture_lex $P571
     .return ($P571)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "obs"  :subid("12_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "obs"  :subid("12_1266337342.27136") :method :outer("11_1266337342.27136")
     .param pmc param_18
     .param pmc param_19
     .param pmc param_20 :optional
@@ -222,7 +222,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "ws"  :subid("13_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "ws"  :subid("13_1266337342.27136") :method :outer("11_1266337342.27136")
 .annotate "line", 3
     .local string rx39_tgt
     .local int rx39_pos
@@ -304,7 +304,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__ws"  :subid("14_1261064009.3328") :method
+.sub "!PREFIX__ws"  :subid("14_1266337342.27136") :method
 .annotate "line", 3
     new $P41, "ResizablePMCArray"
     push $P41, ""
@@ -313,9 +313,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "normspace"  :subid("15_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "normspace"  :subid("15_1266337342.27136") :method :outer("11_1266337342.27136")
 .annotate "line", 3
-    .const 'Sub' $P52 = "17_1261064009.3328" 
+    .const 'Sub' $P52 = "17_1266337342.27136" 
     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_1261064009.3328" 
+    .const 'Sub' $P52 = "17_1266337342.27136" 
     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_1261064009.3328") :method
+.sub "!PREFIX__normspace"  :subid("16_1266337342.27136") :method
 .annotate "line", 3
     new $P49, "ResizablePMCArray"
     push $P49, ""
@@ -386,7 +386,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block51"  :anon :subid("17_1261064009.3328") :method :outer("15_1261064009.3328")
+.sub "_block51"  :anon :subid("17_1266337342.27136") :method :outer("15_1266337342.27136")
 .annotate "line", 10
     .local string rx53_tgt
     .local int rx53_pos
@@ -454,7 +454,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "arg"  :subid("18_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "arg"  :subid("18_1266337342.27136") :method :outer("11_1266337342.27136")
 .annotate "line", 3
     .local string rx57_tgt
     .local int rx57_pos
@@ -565,7 +565,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__arg"  :subid("19_1261064009.3328") :method
+.sub "!PREFIX__arg"  :subid("19_1266337342.27136") :method
 .annotate "line", 3
     new $P59, "ResizablePMCArray"
     push $P59, ""
@@ -576,7 +576,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "arglist"  :subid("20_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "arglist"  :subid("20_1266337342.27136") :method :outer("11_1266337342.27136")
 .annotate "line", 3
     .local string rx64_tgt
     .local int rx64_pos
@@ -682,7 +682,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__arglist"  :subid("21_1261064009.3328") :method
+.sub "!PREFIX__arglist"  :subid("21_1266337342.27136") :method
 .annotate "line", 3
     new $P66, "ResizablePMCArray"
     push $P66, ""
@@ -691,7 +691,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "TOP"  :subid("22_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "TOP"  :subid("22_1266337342.27136") :method :outer("11_1266337342.27136")
 .annotate "line", 3
     .local string rx76_tgt
     .local int rx76_pos
@@ -764,7 +764,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__TOP"  :subid("23_1261064009.3328") :method
+.sub "!PREFIX__TOP"  :subid("23_1266337342.27136") :method
 .annotate "line", 3
     $P78 = self."!PREFIX__!subrule"("nibbler", "")
     new $P79, "ResizablePMCArray"
@@ -774,7 +774,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "nibbler"  :subid("24_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "nibbler"  :subid("24_1266337342.27136") :method :outer("11_1266337342.27136")
 .annotate "line", 3
     .local string rx83_tgt
     .local int rx83_pos
@@ -942,7 +942,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__nibbler"  :subid("25_1261064009.3328") :method
+.sub "!PREFIX__nibbler"  :subid("25_1266337342.27136") :method
 .annotate "line", 3
     new $P85, "ResizablePMCArray"
     push $P85, ""
@@ -951,7 +951,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "termish"  :subid("26_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "termish"  :subid("26_1266337342.27136") :method :outer("11_1266337342.27136")
 .annotate "line", 3
     .local string rx95_tgt
     .local int rx95_pos
@@ -1019,7 +1019,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__termish"  :subid("27_1261064009.3328") :method
+.sub "!PREFIX__termish"  :subid("27_1266337342.27136") :method
 .annotate "line", 3
     new $P97, "ResizablePMCArray"
     push $P97, ""
@@ -1028,9 +1028,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantified_atom"  :subid("28_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "quantified_atom"  :subid("28_1266337342.27136") :method :outer("11_1266337342.27136")
 .annotate "line", 3
-    .const 'Sub' $P110 = "30_1261064009.3328" 
+    .const 'Sub' $P110 = "30_1266337342.27136" 
     capture_lex $P110
     .local string rx102_tgt
     .local int rx102_pos
@@ -1040,7 +1040,7 @@
     .local pmc rx102_cur
     (rx102_cur, rx102_pos, rx102_tgt) = self."!cursor_start"()
     rx102_cur."!cursor_debug"("START ", "quantified_atom")
-    rx102_cur."!cursor_caparray"("backmod", "quantifier")
+    rx102_cur."!cursor_caparray"("quantifier", "backmod")
     .lex unicode:"$\x{a2}", rx102_cur
     .local pmc match
     .lex "$/", match
@@ -1093,7 +1093,7 @@
   alt108_1:
   # rx subrule "before" subtype=zerowidth negate=
     rx102_cur."!cursor_pos"(rx102_pos)
-    .const 'Sub' $P110 = "30_1261064009.3328" 
+    .const 'Sub' $P110 = "30_1266337342.27136" 
     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_1261064009.3328") :method
+.sub "!PREFIX__quantified_atom"  :subid("29_1266337342.27136") :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_1261064009.3328") :method :outer("28_1261064009.3328")
+.sub "_block109"  :anon :subid("30_1266337342.27136") :method :outer("28_1266337342.27136")
 .annotate "line", 41
     .local string rx111_tgt
     .local int rx111_pos
@@ -1197,9 +1197,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "atom"  :subid("31_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "atom"  :subid("31_1266337342.27136") :method :outer("11_1266337342.27136")
 .annotate "line", 3
-    .const 'Sub' $P125 = "33_1261064009.3328" 
+    .const 'Sub' $P125 = "33_1266337342.27136" 
     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_1261064009.3328" 
+    .const 'Sub' $P125 = "33_1266337342.27136" 
     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_1261064009.3328") :method
+.sub "!PREFIX__atom"  :subid("32_1266337342.27136") :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_1261064009.3328") :method :outer("31_1261064009.3328")
+.sub "_block124"  :anon :subid("33_1266337342.27136") :method :outer("31_1266337342.27136")
 .annotate "line", 47
     .local string rx126_tgt
     .local int rx126_pos
@@ -1362,7 +1362,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier"  :subid("34_1261064009.3328") :method
+.sub "quantifier"  :subid("34_1266337342.27136") :method
 .annotate "line", 52
     $P130 = self."!protoregex"("quantifier")
     .return ($P130)
@@ -1370,7 +1370,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier"  :subid("35_1261064009.3328") :method
+.sub "!PREFIX__quantifier"  :subid("35_1266337342.27136") :method
 .annotate "line", 52
     $P132 = self."!PREFIX__!protoregex"("quantifier")
     .return ($P132)
@@ -1378,7 +1378,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<*>"  :subid("36_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "quantifier:sym<*>"  :subid("36_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__quantifier:sym<*>"  :subid("37_1266337342.27136") :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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "quantifier:sym<+>"  :subid("38_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__quantifier:sym<+>"  :subid("39_1266337342.27136") :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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "quantifier:sym<?>"  :subid("40_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__quantifier:sym<?>"  :subid("41_1266337342.27136") :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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "quantifier:sym<**>"  :subid("42_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__quantifier:sym<**>"  :subid("43_1266337342.27136") :method
 .annotate "line", 3
     new $P157, "ResizablePMCArray"
     push $P157, "**"
@@ -1843,9 +1843,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backmod"  :subid("44_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "backmod"  :subid("44_1266337342.27136") :method :outer("11_1266337342.27136")
 .annotate "line", 3
-    .const 'Sub' $P175 = "46_1261064009.3328" 
+    .const 'Sub' $P175 = "46_1266337342.27136" 
     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_1261064009.3328" 
+    .const 'Sub' $P175 = "46_1266337342.27136" 
     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_1261064009.3328") :method
+.sub "!PREFIX__backmod"  :subid("45_1266337342.27136") :method
 .annotate "line", 3
     new $P169, "ResizablePMCArray"
     push $P169, ""
@@ -1948,7 +1948,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block174"  :anon :subid("46_1261064009.3328") :method :outer("44_1261064009.3328")
+.sub "_block174"  :anon :subid("46_1266337342.27136") :method :outer("44_1266337342.27136")
 .annotate "line", 71
     .local string rx176_tgt
     .local int rx176_pos
@@ -2004,7 +2004,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar"  :subid("47_1261064009.3328") :method
+.sub "metachar"  :subid("47_1266337342.27136") :method
 .annotate "line", 73
     $P179 = self."!protoregex"("metachar")
     .return ($P179)
@@ -2012,7 +2012,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar"  :subid("48_1261064009.3328") :method
+.sub "!PREFIX__metachar"  :subid("48_1266337342.27136") :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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "metachar:sym<ws>"  :subid("49_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__metachar:sym<ws>"  :subid("50_1266337342.27136") :method
 .annotate "line", 3
     $P185 = self."!PREFIX__!subrule"("", "")
     new $P186, "ResizablePMCArray"
@@ -2086,7 +2086,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<[ ]>"  :subid("51_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "metachar:sym<[ ]>"  :subid("51_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__metachar:sym<[ ]>"  :subid("52_1266337342.27136") :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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "metachar:sym<( )>"  :subid("53_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__metachar:sym<( )>"  :subid("54_1266337342.27136") :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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "metachar:sym<'>"  :subid("55_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__metachar:sym<'>"  :subid("56_1266337342.27136") :method
 .annotate "line", 3
     new $P203, "ResizablePMCArray"
     push $P203, "'"
@@ -2323,7 +2323,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<\">"  :subid("57_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "metachar:sym<\">"  :subid("57_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__metachar:sym<\">"  :subid("58_1266337342.27136") :method
 .annotate "line", 3
     new $P208, "ResizablePMCArray"
     push $P208, "\""
@@ -2396,7 +2396,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<.>"  :subid("59_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "metachar:sym<.>"  :subid("59_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__metachar:sym<.>"  :subid("60_1266337342.27136") :method
 .annotate "line", 3
     new $P213, "ResizablePMCArray"
     push $P213, "."
@@ -2477,7 +2477,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<^>"  :subid("61_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "metachar:sym<^>"  :subid("61_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__metachar:sym<^>"  :subid("62_1266337342.27136") :method
 .annotate "line", 3
     new $P219, "ResizablePMCArray"
     push $P219, "^"
@@ -2558,7 +2558,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<^^>"  :subid("63_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "metachar:sym<^^>"  :subid("63_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__metachar:sym<^^>"  :subid("64_1266337342.27136") :method
 .annotate "line", 3
     new $P225, "ResizablePMCArray"
     push $P225, "^^"
@@ -2639,7 +2639,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<$>"  :subid("65_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "metachar:sym<$>"  :subid("65_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__metachar:sym<$>"  :subid("66_1266337342.27136") :method
 .annotate "line", 3
     new $P231, "ResizablePMCArray"
     push $P231, "$"
@@ -2720,7 +2720,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<$$>"  :subid("67_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "metachar:sym<$$>"  :subid("67_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__metachar:sym<$$>"  :subid("68_1266337342.27136") :method
 .annotate "line", 3
     new $P237, "ResizablePMCArray"
     push $P237, "$$"
@@ -2801,7 +2801,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<:::>"  :subid("69_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "metachar:sym<:::>"  :subid("69_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__metachar:sym<:::>"  :subid("70_1266337342.27136") :method
 .annotate "line", 3
     $P243 = self."!PREFIX__!subrule"("", ":::")
     new $P244, "ResizablePMCArray"
@@ -2888,7 +2888,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<::>"  :subid("71_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "metachar:sym<::>"  :subid("71_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__metachar:sym<::>"  :subid("72_1266337342.27136") :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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "metachar:sym<lwb>"  :subid("73_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__metachar:sym<lwb>"  :subid("74_1266337342.27136") :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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "metachar:sym<rwb>"  :subid("75_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__metachar:sym<rwb>"  :subid("76_1266337342.27136") :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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "metachar:sym<bs>"  :subid("77_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__metachar:sym<bs>"  :subid("78_1266337342.27136") :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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "metachar:sym<mod>"  :subid("79_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__metachar:sym<mod>"  :subid("80_1266337342.27136") :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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "metachar:sym<~>"  :subid("81_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__metachar:sym<~>"  :subid("82_1266337342.27136") :method
 .annotate "line", 3
     $P283 = self."!PREFIX__!subrule"("", "~")
     new $P284, "ResizablePMCArray"
@@ -3417,7 +3417,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<{*}>"  :subid("83_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "metachar:sym<{*}>"  :subid("83_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__metachar:sym<{*}>"  :subid("84_1266337342.27136") :method
 .annotate "line", 3
     new $P290, "ResizablePMCArray"
     push $P290, "{*}"
@@ -3593,7 +3593,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<assert>"  :subid("85_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "metachar:sym<assert>"  :subid("85_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__metachar:sym<assert>"  :subid("86_1266337342.27136") :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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "metachar:sym<var>"  :subid("87_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__metachar:sym<var>"  :subid("88_1266337342.27136") :method
 .annotate "line", 3
     new $P314, "ResizablePMCArray"
     push $P314, "$"
@@ -3860,7 +3860,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<PIR>"  :subid("89_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "metachar:sym<PIR>"  :subid("89_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__metachar:sym<PIR>"  :subid("90_1266337342.27136") :method
 .annotate "line", 3
     new $P326, "ResizablePMCArray"
     push $P326, ":PIR{{"
@@ -3960,7 +3960,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash"  :subid("91_1261064009.3328") :method
+.sub "backslash"  :subid("91_1266337342.27136") :method
 .annotate "line", 120
     $P332 = self."!protoregex"("backslash")
     .return ($P332)
@@ -3968,7 +3968,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash"  :subid("92_1261064009.3328") :method
+.sub "!PREFIX__backslash"  :subid("92_1266337342.27136") :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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "backslash:sym<w>"  :subid("93_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__backslash:sym<w>"  :subid("94_1266337342.27136") :method
 .annotate "line", 3
     new $P338, "ResizablePMCArray"
     push $P338, "N"
@@ -4064,7 +4064,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<b>"  :subid("95_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "backslash:sym<b>"  :subid("95_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__backslash:sym<b>"  :subid("96_1266337342.27136") :method
 .annotate "line", 3
     new $P344, "ResizablePMCArray"
     push $P344, "B"
@@ -4146,7 +4146,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<e>"  :subid("97_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "backslash:sym<e>"  :subid("97_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__backslash:sym<e>"  :subid("98_1266337342.27136") :method
 .annotate "line", 3
     new $P350, "ResizablePMCArray"
     push $P350, "E"
@@ -4228,7 +4228,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<f>"  :subid("99_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "backslash:sym<f>"  :subid("99_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__backslash:sym<f>"  :subid("100_1266337342.27136") :method
 .annotate "line", 3
     new $P356, "ResizablePMCArray"
     push $P356, "F"
@@ -4310,7 +4310,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<h>"  :subid("101_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "backslash:sym<h>"  :subid("101_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__backslash:sym<h>"  :subid("102_1266337342.27136") :method
 .annotate "line", 3
     new $P362, "ResizablePMCArray"
     push $P362, "H"
@@ -4392,7 +4392,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<r>"  :subid("103_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "backslash:sym<r>"  :subid("103_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__backslash:sym<r>"  :subid("104_1266337342.27136") :method
 .annotate "line", 3
     new $P368, "ResizablePMCArray"
     push $P368, "R"
@@ -4474,7 +4474,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<t>"  :subid("105_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "backslash:sym<t>"  :subid("105_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__backslash:sym<t>"  :subid("106_1266337342.27136") :method
 .annotate "line", 3
     new $P374, "ResizablePMCArray"
     push $P374, "T"
@@ -4556,7 +4556,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<v>"  :subid("107_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "backslash:sym<v>"  :subid("107_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__backslash:sym<v>"  :subid("108_1266337342.27136") :method
 .annotate "line", 3
     new $P380, "ResizablePMCArray"
     push $P380, "V"
@@ -4638,7 +4638,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<c>"  :subid("109_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "backslash:sym<o>"  :subid("109_1266337342.27136") :method :outer("11_1266337342.27136")
 .annotate "line", 3
     .local string rx384_tgt
     .local int rx384_pos
@@ -4647,7 +4647,7 @@
     .local int rx384_rep
     .local pmc rx384_cur
     (rx384_cur, rx384_pos, rx384_tgt) = self."!cursor_start"()
-    rx384_cur."!cursor_debug"("START ", "backslash:sym<c>")
+    rx384_cur."!cursor_debug"("START ", "backslash:sym<o>")
     .lex unicode:"$\x{a2}", rx384_cur
     .local pmc match
     .lex "$/", match
@@ -4658,49 +4658,76 @@
     substr rx384_tgt, rx384_tgt, rx384_off
   rx384_start:
     $I10 = self.'from'()
-    ne $I10, -1, rxscan389_done
-    goto rxscan389_scan
-  rxscan389_loop:
+    ne $I10, -1, rxscan391_done
+    goto rxscan391_scan
+  rxscan391_loop:
     ($P10) = rx384_cur."from"()
     inc $P10
     set rx384_pos, $P10
-    ge rx384_pos, rx384_eos, rxscan389_done
-  rxscan389_scan:
-    set_addr $I10, rxscan389_loop
+    ge rx384_pos, rx384_eos, rxscan391_done
+  rxscan391_scan:
+    set_addr $I10, rxscan391_loop
     rx384_cur."!mark_push"(0, rx384_pos, $I10)
-  rxscan389_done:
+  rxscan391_done:
 .annotate "line", 129
   # rx subcapture "sym"
-    set_addr $I10, rxcap_390_fail
+    set_addr $I10, rxcap_392_fail
     rx384_cur."!mark_push"(0, rx384_pos, $I10)
   # rx enumcharlist negate=0 
     ge rx384_pos, rx384_eos, rx384_fail
     sub $I10, rx384_pos, rx384_off
     substr $S10, rx384_tgt, $I10, 1
-    index $I11, "cC", $S10
+    index $I11, "oO", $S10
     lt $I11, 0, rx384_fail
     inc rx384_pos
-    set_addr $I10, rxcap_390_fail
+    set_addr $I10, rxcap_392_fail
     ($I12, $I11) = rx384_cur."!mark_peek"($I10)
     rx384_cur."!cursor_pos"($I11)
     ($P10) = rx384_cur."!cursor_start"()
     $P10."!cursor_pass"(rx384_pos, "")
     rx384_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_390_done
-  rxcap_390_fail:
+    goto rxcap_392_done
+  rxcap_392_fail:
     goto rx384_fail
-  rxcap_390_done:
-  # rx subrule "charspec" subtype=capture negate=
+  rxcap_392_done:
+  alt393_0:
+    set_addr $I10, alt393_1
+    rx384_cur."!mark_push"(0, rx384_pos, $I10)
+  # rx subrule "octint" subtype=capture negate=
     rx384_cur."!cursor_pos"(rx384_pos)
-    $P10 = rx384_cur."charspec"()
+    $P10 = rx384_cur."octint"()
     unless $P10, rx384_fail
     rx384_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("charspec")
+    $P10."!cursor_names"("octint")
     rx384_pos = $P10."pos"()
+    goto alt393_end
+  alt393_1:
+  # rx literal  "["
+    add $I11, rx384_pos, 1
+    gt $I11, rx384_eos, rx384_fail
+    sub $I11, rx384_pos, rx384_off
+    substr $S10, rx384_tgt, $I11, 1
+    ne $S10, "[", rx384_fail
+    add rx384_pos, 1
+  # rx subrule "octints" subtype=capture negate=
+    rx384_cur."!cursor_pos"(rx384_pos)
+    $P10 = rx384_cur."octints"()
+    unless $P10, rx384_fail
+    rx384_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("octints")
+    rx384_pos = $P10."pos"()
+  # rx literal  "]"
+    add $I11, rx384_pos, 1
+    gt $I11, rx384_eos, rx384_fail
+    sub $I11, rx384_pos, rx384_off
+    substr $S10, rx384_tgt, $I11, 1
+    ne $S10, "]", rx384_fail
+    add rx384_pos, 1
+  alt393_end:
   # rx pass
-    rx384_cur."!cursor_pass"(rx384_pos, "backslash:sym<c>")
-    rx384_cur."!cursor_debug"("PASS  ", "backslash:sym<c>", " at pos=", rx384_pos)
+    rx384_cur."!cursor_pass"(rx384_pos, "backslash:sym<o>")
+    rx384_cur."!cursor_debug"("PASS  ", "backslash:sym<o>", " at pos=", rx384_pos)
     .return (rx384_cur)
   rx384_fail:
 .annotate "line", 3
@@ -4710,270 +4737,243 @@
     jump $I10
   rx384_done:
     rx384_cur."!cursor_fail"()
-    rx384_cur."!cursor_debug"("FAIL  ", "backslash:sym<c>")
+    rx384_cur."!cursor_debug"("FAIL  ", "backslash:sym<o>")
     .return (rx384_cur)
     .return ()
 .end
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<c>"  :subid("110_1261064009.3328") :method
+.sub "!PREFIX__backslash:sym<o>"  :subid("110_1266337342.27136") :method
 .annotate "line", 3
-    $P386 = self."!PREFIX__!subrule"("charspec", "C")
-    $P387 = self."!PREFIX__!subrule"("charspec", "c")
-    new $P388, "ResizablePMCArray"
-    push $P388, $P386
-    push $P388, $P387
-    .return ($P388)
+    $P386 = self."!PREFIX__!subrule"("octints", "O[")
+    $P387 = self."!PREFIX__!subrule"("octint", "O")
+    $P388 = self."!PREFIX__!subrule"("octints", "o[")
+    $P389 = self."!PREFIX__!subrule"("octint", "o")
+    new $P390, "ResizablePMCArray"
+    push $P390, $P386
+    push $P390, $P387
+    push $P390, $P388
+    push $P390, $P389
+    .return ($P390)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<o>"  :subid("111_1261064009.3328") :method :outer("11_1261064009.3328")
-.annotate "line", 3
-    .local string rx392_tgt
-    .local int rx392_pos
-    .local int rx392_off
-    .local int rx392_eos
-    .local int rx392_rep
-    .local pmc rx392_cur
-    (rx392_cur, rx392_pos, rx392_tgt) = self."!cursor_start"()
-    rx392_cur."!cursor_debug"("START ", "backslash:sym<o>")
-    .lex unicode:"$\x{a2}", rx392_cur
-    .local pmc match
-    .lex "$/", match
-    length rx392_eos, rx392_tgt
-    set rx392_off, 0
-    lt rx392_pos, 2, rx392_start
-    sub rx392_off, rx392_pos, 1
-    substr rx392_tgt, rx392_tgt, rx392_off
-  rx392_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan399_done
-    goto rxscan399_scan
-  rxscan399_loop:
-    ($P10) = rx392_cur."from"()
-    inc $P10
-    set rx392_pos, $P10
-    ge rx392_pos, rx392_eos, rxscan399_done
-  rxscan399_scan:
-    set_addr $I10, rxscan399_loop
-    rx392_cur."!mark_push"(0, rx392_pos, $I10)
-  rxscan399_done:
+.sub "backslash:sym<x>"  :subid("111_1266337342.27136") :method :outer("11_1266337342.27136")
+.annotate "line", 3
+    .local string rx395_tgt
+    .local int rx395_pos
+    .local int rx395_off
+    .local int rx395_eos
+    .local int rx395_rep
+    .local pmc rx395_cur
+    (rx395_cur, rx395_pos, rx395_tgt) = self."!cursor_start"()
+    rx395_cur."!cursor_debug"("START ", "backslash:sym<x>")
+    .lex unicode:"$\x{a2}", rx395_cur
+    .local pmc match
+    .lex "$/", match
+    length rx395_eos, rx395_tgt
+    set rx395_off, 0
+    lt rx395_pos, 2, rx395_start
+    sub rx395_off, rx395_pos, 1
+    substr rx395_tgt, rx395_tgt, rx395_off
+  rx395_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan402_done
+    goto rxscan402_scan
+  rxscan402_loop:
+    ($P10) = rx395_cur."from"()
+    inc $P10
+    set rx395_pos, $P10
+    ge rx395_pos, rx395_eos, rxscan402_done
+  rxscan402_scan:
+    set_addr $I10, rxscan402_loop
+    rx395_cur."!mark_push"(0, rx395_pos, $I10)
+  rxscan402_done:
 .annotate "line", 130
   # rx subcapture "sym"
-    set_addr $I10, rxcap_400_fail
-    rx392_cur."!mark_push"(0, rx392_pos, $I10)
+    set_addr $I10, rxcap_403_fail
+    rx395_cur."!mark_push"(0, rx395_pos, $I10)
   # rx enumcharlist negate=0 
-    ge rx392_pos, rx392_eos, rx392_fail
-    sub $I10, rx392_pos, rx392_off
-    substr $S10, rx392_tgt, $I10, 1
-    index $I11, "oO", $S10
-    lt $I11, 0, rx392_fail
-    inc rx392_pos
-    set_addr $I10, rxcap_400_fail
-    ($I12, $I11) = rx392_cur."!mark_peek"($I10)
-    rx392_cur."!cursor_pos"($I11)
-    ($P10) = rx392_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx392_pos, "")
-    rx392_cur."!mark_push"(0, -1, 0, $P10)
+    ge rx395_pos, rx395_eos, rx395_fail
+    sub $I10, rx395_pos, rx395_off
+    substr $S10, rx395_tgt, $I10, 1
+    index $I11, "xX", $S10
+    lt $I11, 0, rx395_fail
+    inc rx395_pos
+    set_addr $I10, rxcap_403_fail
+    ($I12, $I11) = rx395_cur."!mark_peek"($I10)
+    rx395_cur."!cursor_pos"($I11)
+    ($P10) = rx395_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx395_pos, "")
+    rx395_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_400_done
-  rxcap_400_fail:
-    goto rx392_fail
-  rxcap_400_done:
-  alt401_0:
-    set_addr $I10, alt401_1
-    rx392_cur."!mark_push"(0, rx392_pos, $I10)
-  # rx subrule "octint" subtype=capture negate=
-    rx392_cur."!cursor_pos"(rx392_pos)
-    $P10 = rx392_cur."octint"()
-    unless $P10, rx392_fail
-    rx392_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("octint")
-    rx392_pos = $P10."pos"()
-    goto alt401_end
-  alt401_1:
+    goto rxcap_403_done
+  rxcap_403_fail:
+    goto rx395_fail
+  rxcap_403_done:
+  alt404_0:
+    set_addr $I10, alt404_1
+    rx395_cur."!mark_push"(0, rx395_pos, $I10)
+  # rx subrule "hexint" subtype=capture negate=
+    rx395_cur."!cursor_pos"(rx395_pos)
+    $P10 = rx395_cur."hexint"()
+    unless $P10, rx395_fail
+    rx395_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("hexint")
+    rx395_pos = $P10."pos"()
+    goto alt404_end
+  alt404_1:
   # rx literal  "["
-    add $I11, rx392_pos, 1
-    gt $I11, rx392_eos, rx392_fail
-    sub $I11, rx392_pos, rx392_off
-    substr $S10, rx392_tgt, $I11, 1
-    ne $S10, "[", rx392_fail
-    add rx392_pos, 1
-  # rx subrule "octints" subtype=capture negate=
-    rx392_cur."!cursor_pos"(rx392_pos)
-    $P10 = rx392_cur."octints"()
-    unless $P10, rx392_fail
-    rx392_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("octints")
-    rx392_pos = $P10."pos"()
+    add $I11, rx395_pos, 1
+    gt $I11, rx395_eos, rx395_fail
+    sub $I11, rx395_pos, rx395_off
+    substr $S10, rx395_tgt, $I11, 1
+    ne $S10, "[", rx395_fail
+    add rx395_pos, 1
+  # rx subrule "hexints" subtype=capture negate=
+    rx395_cur."!cursor_pos"(rx395_pos)
+    $P10 = rx395_cur."hexints"()
+    unless $P10, rx395_fail
+    rx395_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("hexints")
+    rx395_pos = $P10."pos"()
   # rx literal  "]"
-    add $I11, rx392_pos, 1
-    gt $I11, rx392_eos, rx392_fail
-    sub $I11, rx392_pos, rx392_off
-    substr $S10, rx392_tgt, $I11, 1
-    ne $S10, "]", rx392_fail
-    add rx392_pos, 1
-  alt401_end:
-  # rx pass
-    rx392_cur."!cursor_pass"(rx392_pos, "backslash:sym<o>")
-    rx392_cur."!cursor_debug"("PASS  ", "backslash:sym<o>", " at pos=", rx392_pos)
-    .return (rx392_cur)
-  rx392_fail:
-.annotate "line", 3
-    (rx392_rep, rx392_pos, $I10, $P10) = rx392_cur."!mark_fail"(0)
-    lt rx392_pos, -1, rx392_done
-    eq rx392_pos, -1, rx392_fail
-    jump $I10
-  rx392_done:
-    rx392_cur."!cursor_fail"()
-    rx392_cur."!cursor_debug"("FAIL  ", "backslash:sym<o>")
-    .return (rx392_cur)
+    add $I11, rx395_pos, 1
+    gt $I11, rx395_eos, rx395_fail
+    sub $I11, rx395_pos, rx395_off
+    substr $S10, rx395_tgt, $I11, 1
+    ne $S10, "]", rx395_fail
+    add rx395_pos, 1
+  alt404_end:
+  # rx pass
+    rx395_cur."!cursor_pass"(rx395_pos, "backslash:sym<x>")
+    rx395_cur."!cursor_debug"("PASS  ", "backslash:sym<x>", " at pos=", rx395_pos)
+    .return (rx395_cur)
+  rx395_fail:
+.annotate "line", 3
+    (rx395_rep, rx395_pos, $I10, $P10) = rx395_cur."!mark_fail"(0)
+    lt rx395_pos, -1, rx395_done
+    eq rx395_pos, -1, rx395_fail
+    jump $I10
+  rx395_done:
+    rx395_cur."!cursor_fail"()
+    rx395_cur."!cursor_debug"("FAIL  ", "backslash:sym<x>")
+    .return (rx395_cur)
     .return ()
 .end
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<o>"  :subid("112_1261064009.3328") :method
-.annotate "line", 3
-    $P394 = self."!PREFIX__!subrule"("octints", "O[")
-    $P395 = self."!PREFIX__!subrule"("octint", "O")
-    $P396 = self."!PREFIX__!subrule"("octints", "o[")
-    $P397 = self."!PREFIX__!subrule"("octint", "o")
-    new $P398, "ResizablePMCArray"
-    push $P398, $P394
-    push $P398, $P395
-    push $P398, $P396
-    push $P398, $P397
-    .return ($P398)
-.end
-
-
-.namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<x>"  :subid("113_1261064009.3328") :method :outer("11_1261064009.3328")
-.annotate "line", 3
-    .local string rx403_tgt
-    .local int rx403_pos
-    .local int rx403_off
-    .local int rx403_eos
-    .local int rx403_rep
-    .local pmc rx403_cur
-    (rx403_cur, rx403_pos, rx403_tgt) = self."!cursor_start"()
-    rx403_cur."!cursor_debug"("START ", "backslash:sym<x>")
-    .lex unicode:"$\x{a2}", rx403_cur
-    .local pmc match
-    .lex "$/", match
-    length rx403_eos, rx403_tgt
-    set rx403_off, 0
-    lt rx403_pos, 2, rx403_start
-    sub rx403_off, rx403_pos, 1
-    substr rx403_tgt, rx403_tgt, rx403_off
-  rx403_start:
-    $I10 = self.'from'()
-    ne $I10, -1, rxscan410_done
-    goto rxscan410_scan
-  rxscan410_loop:
-    ($P10) = rx403_cur."from"()
-    inc $P10
-    set rx403_pos, $P10
-    ge rx403_pos, rx403_eos, rxscan410_done
-  rxscan410_scan:
-    set_addr $I10, rxscan410_loop
-    rx403_cur."!mark_push"(0, rx403_pos, $I10)
-  rxscan410_done:
+.sub "!PREFIX__backslash:sym<x>"  :subid("112_1266337342.27136") :method
+.annotate "line", 3
+    $P397 = self."!PREFIX__!subrule"("hexints", "X[")
+    $P398 = self."!PREFIX__!subrule"("hexint", "X")
+    $P399 = self."!PREFIX__!subrule"("hexints", "x[")
+    $P400 = self."!PREFIX__!subrule"("hexint", "x")
+    new $P401, "ResizablePMCArray"
+    push $P401, $P397
+    push $P401, $P398
+    push $P401, $P399
+    push $P401, $P400
+    .return ($P401)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Grammar"]
+.sub "backslash:sym<c>"  :subid("113_1266337342.27136") :method :outer("11_1266337342.27136")
+.annotate "line", 3
+    .local string rx406_tgt
+    .local int rx406_pos
+    .local int rx406_off
+    .local int rx406_eos
+    .local int rx406_rep
+    .local pmc rx406_cur
+    (rx406_cur, rx406_pos, rx406_tgt) = self."!cursor_start"()
+    rx406_cur."!cursor_debug"("START ", "backslash:sym<c>")
+    .lex unicode:"$\x{a2}", rx406_cur
+    .local pmc match
+    .lex "$/", match
+    length rx406_eos, rx406_tgt
+    set rx406_off, 0
+    lt rx406_pos, 2, rx406_start
+    sub rx406_off, rx406_pos, 1
+    substr rx406_tgt, rx406_tgt, rx406_off
+  rx406_start:
+    $I10 = self.'from'()
+    ne $I10, -1, rxscan411_done
+    goto rxscan411_scan
+  rxscan411_loop:
+    ($P10) = rx406_cur."from"()
+    inc $P10
+    set rx406_pos, $P10
+    ge rx406_pos, rx406_eos, rxscan411_done
+  rxscan411_scan:
+    set_addr $I10, rxscan411_loop
+    rx406_cur."!mark_push"(0, rx406_pos, $I10)
+  rxscan411_done:
 .annotate "line", 131
   # rx subcapture "sym"
-    set_addr $I10, rxcap_411_fail
-    rx403_cur."!mark_push"(0, rx403_pos, $I10)
+    set_addr $I10, rxcap_412_fail
+    rx406_cur."!mark_push"(0, rx406_pos, $I10)
   # rx enumcharlist negate=0 
-    ge rx403_pos, rx403_eos, rx403_fail
-    sub $I10, rx403_pos, rx403_off
-    substr $S10, rx403_tgt, $I10, 1
-    index $I11, "xX", $S10
-    lt $I11, 0, rx403_fail
-    inc rx403_pos
-    set_addr $I10, rxcap_411_fail
-    ($I12, $I11) = rx403_cur."!mark_peek"($I10)
-    rx403_cur."!cursor_pos"($I11)
-    ($P10) = rx403_cur."!cursor_start"()
-    $P10."!cursor_pass"(rx403_pos, "")
-    rx403_cur."!mark_push"(0, -1, 0, $P10)
+    ge rx406_pos, rx406_eos, rx406_fail
+    sub $I10, rx406_pos, rx406_off
+    substr $S10, rx406_tgt, $I10, 1
+    index $I11, "cC", $S10
+    lt $I11, 0, rx406_fail
+    inc rx406_pos
+    set_addr $I10, rxcap_412_fail
+    ($I12, $I11) = rx406_cur."!mark_peek"($I10)
+    rx406_cur."!cursor_pos"($I11)
+    ($P10) = rx406_cur."!cursor_start"()
+    $P10."!cursor_pass"(rx406_pos, "")
+    rx406_cur."!mark_push"(0, -1, 0, $P10)
     $P10."!cursor_names"("sym")
-    goto rxcap_411_done
-  rxcap_411_fail:
-    goto rx403_fail
-  rxcap_411_done:
-  alt412_0:
-    set_addr $I10, alt412_1
-    rx403_cur."!mark_push"(0, rx403_pos, $I10)
-  # rx subrule "hexint" subtype=capture negate=
-    rx403_cur."!cursor_pos"(rx403_pos)
-    $P10 = rx403_cur."hexint"()
-    unless $P10, rx403_fail
-    rx403_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("hexint")
-    rx403_pos = $P10."pos"()
-    goto alt412_end
-  alt412_1:
-  # rx literal  "["
-    add $I11, rx403_pos, 1
-    gt $I11, rx403_eos, rx403_fail
-    sub $I11, rx403_pos, rx403_off
-    substr $S10, rx403_tgt, $I11, 1
-    ne $S10, "[", rx403_fail
-    add rx403_pos, 1
-  # rx subrule "hexints" subtype=capture negate=
-    rx403_cur."!cursor_pos"(rx403_pos)
-    $P10 = rx403_cur."hexints"()
-    unless $P10, rx403_fail
-    rx403_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("hexints")
-    rx403_pos = $P10."pos"()
-  # rx literal  "]"
-    add $I11, rx403_pos, 1
-    gt $I11, rx403_eos, rx403_fail
-    sub $I11, rx403_pos, rx403_off
-    substr $S10, rx403_tgt, $I11, 1
-    ne $S10, "]", rx403_fail
-    add rx403_pos, 1
-  alt412_end:
+    goto rxcap_412_done
+  rxcap_412_fail:
+    goto rx406_fail
+  rxcap_412_done:
+  # rx subrule "charspec" subtype=capture negate=
+    rx406_cur."!cursor_pos"(rx406_pos)
+    $P10 = rx406_cur."charspec"()
+    unless $P10, rx406_fail
+    rx406_cur."!mark_push"(0, -1, 0, $P10)
+    $P10."!cursor_names"("charspec")
+    rx406_pos = $P10."pos"()
   # rx pass
-    rx403_cur."!cursor_pass"(rx403_pos, "backslash:sym<x>")
-    rx403_cur."!cursor_debug"("PASS  ", "backslash:sym<x>", " at pos=", rx403_pos)
-    .return (rx403_cur)
-  rx403_fail:
+    rx406_cur."!cursor_pass"(rx406_pos, "backslash:sym<c>")
+    rx406_cur."!cursor_debug"("PASS  ", "backslash:sym<c>", " at pos=", rx406_pos)
+    .return (rx406_cur)
+  rx406_fail:
 .annotate "line", 3
-    (rx403_rep, rx403_pos, $I10, $P10) = rx403_cur."!mark_fail"(0)
-    lt rx403_pos, -1, rx403_done
-    eq rx403_pos, -1, rx403_fail
+    (rx406_rep, rx406_pos, $I10, $P10) = rx406_cur."!mark_fail"(0)
+    lt rx406_pos, -1, rx406_done
+    eq rx406_pos, -1, rx406_fail
     jump $I10
-  rx403_done:
-    rx403_cur."!cursor_fail"()
-    rx403_cur."!cursor_debug"("FAIL  ", "backslash:sym<x>")
-    .return (rx403_cur)
+  rx406_done:
+    rx406_cur."!cursor_fail"()
+    rx406_cur."!cursor_debug"("FAIL  ", "backslash:sym<c>")
+    .return (rx406_cur)
     .return ()
 .end
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<x>"  :subid("114_1261064009.3328") :method
+.sub "!PREFIX__backslash:sym<c>"  :subid("114_1266337342.27136") :method
 .annotate "line", 3
-    $P405 = self."!PREFIX__!subrule"("hexints", "X[")
-    $P406 = self."!PREFIX__!subrule"("hexint", "X")
-    $P407 = self."!PREFIX__!subrule"("hexints", "x[")
-    $P408 = self."!PREFIX__!subrule"("hexint", "x")
-    new $P409, "ResizablePMCArray"
-    push $P409, $P405
-    push $P409, $P406
-    push $P409, $P407
-    push $P409, $P408
-    .return ($P409)
+    $P408 = self."!PREFIX__!subrule"("charspec", "C")
+    $P409 = self."!PREFIX__!subrule"("charspec", "c")
+    new $P410, "ResizablePMCArray"
+    push $P410, $P408
+    push $P410, $P409
+    .return ($P410)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<A>"  :subid("115_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "backslash:sym<A>"  :subid("115_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__backslash:sym<A>"  :subid("116_1266337342.27136") :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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "backslash:sym<z>"  :subid("117_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__backslash:sym<z>"  :subid("118_1266337342.27136") :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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "backslash:sym<Z>"  :subid("119_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__backslash:sym<Z>"  :subid("120_1266337342.27136") :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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "backslash:sym<Q>"  :subid("121_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__backslash:sym<Q>"  :subid("122_1266337342.27136") :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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "backslash:sym<misc>"  :subid("123_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__backslash:sym<misc>"  :subid("124_1266337342.27136") :method
 .annotate "line", 3
     new $P440, "ResizablePMCArray"
     push $P440, ""
@@ -5331,7 +5331,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion"  :subid("125_1261064009.3328") :method
+.sub "assertion"  :subid("125_1266337342.27136") :method
 .annotate "line", 138
     $P443 = self."!protoregex"("assertion")
     .return ($P443)
@@ -5339,7 +5339,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion"  :subid("126_1261064009.3328") :method
+.sub "!PREFIX__assertion"  :subid("126_1266337342.27136") :method
 .annotate "line", 138
     $P445 = self."!PREFIX__!protoregex"("assertion")
     .return ($P445)
@@ -5347,9 +5347,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<?>"  :subid("127_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "assertion:sym<?>"  :subid("127_1266337342.27136") :method :outer("11_1266337342.27136")
 .annotate "line", 3
-    .const 'Sub' $P454 = "129_1261064009.3328" 
+    .const 'Sub' $P454 = "129_1266337342.27136" 
     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_1261064009.3328" 
+    .const 'Sub' $P454 = "129_1266337342.27136" 
     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_1261064009.3328") :method
+.sub "!PREFIX__assertion:sym<?>"  :subid("128_1266337342.27136") :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_1261064009.3328") :method :outer("127_1261064009.3328")
+.sub "_block453"  :anon :subid("129_1266337342.27136") :method :outer("127_1266337342.27136")
 .annotate "line", 140
     .local string rx455_tgt
     .local int rx455_pos
@@ -5493,9 +5493,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<!>"  :subid("130_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "assertion:sym<!>"  :subid("130_1266337342.27136") :method :outer("11_1266337342.27136")
 .annotate "line", 3
-    .const 'Sub' $P465 = "132_1261064009.3328" 
+    .const 'Sub' $P465 = "132_1266337342.27136" 
     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_1261064009.3328" 
+    .const 'Sub' $P465 = "132_1266337342.27136" 
     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_1261064009.3328") :method
+.sub "!PREFIX__assertion:sym<!>"  :subid("131_1266337342.27136") :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_1261064009.3328") :method :outer("130_1261064009.3328")
+.sub "_block464"  :anon :subid("132_1266337342.27136") :method :outer("130_1266337342.27136")
 .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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "assertion:sym<method>"  :subid("133_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__assertion:sym<method>"  :subid("134_1266337342.27136") :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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "assertion:sym<name>"  :subid("135_1266337342.27136") :method :outer("11_1266337342.27136")
 .annotate "line", 3
-    .const 'Sub' $P483 = "137_1261064009.3328" 
+    .const 'Sub' $P483 = "137_1266337342.27136" 
     capture_lex $P483
     .local string rx475_tgt
     .local int rx475_pos
@@ -5727,7 +5727,7 @@
     .local pmc rx475_cur
     (rx475_cur, rx475_pos, rx475_tgt) = self."!cursor_start"()
     rx475_cur."!cursor_debug"("START ", "assertion:sym<name>")
-    rx475_cur."!cursor_caparray"("arglist", "nibbler", "assertion")
+    rx475_cur."!cursor_caparray"("assertion", "nibbler", "arglist")
     .lex unicode:"$\x{a2}", rx475_cur
     .local pmc match
     .lex "$/", match
@@ -5782,7 +5782,7 @@
 .annotate "line", 150
   # rx subrule "before" subtype=zerowidth negate=
     rx475_cur."!cursor_pos"(rx475_pos)
-    .const 'Sub' $P483 = "137_1261064009.3328" 
+    .const 'Sub' $P483 = "137_1266337342.27136" 
     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_1261064009.3328") :method
+.sub "!PREFIX__assertion:sym<name>"  :subid("136_1266337342.27136") :method
 .annotate "line", 3
     new $P477, "ResizablePMCArray"
     push $P477, ""
@@ -5898,7 +5898,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block482"  :anon :subid("137_1261064009.3328") :method :outer("135_1261064009.3328")
+.sub "_block482"  :anon :subid("137_1266337342.27136") :method :outer("135_1266337342.27136")
 .annotate "line", 150
     .local string rx484_tgt
     .local int rx484_pos
@@ -5954,9 +5954,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<[>"  :subid("138_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "assertion:sym<[>"  :subid("138_1266337342.27136") :method :outer("11_1266337342.27136")
 .annotate "line", 3
-    .const 'Sub' $P493 = "140_1261064009.3328" 
+    .const 'Sub' $P493 = "140_1266337342.27136" 
     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_1261064009.3328" 
+    .const 'Sub' $P493 = "140_1266337342.27136" 
     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_1261064009.3328") :method
+.sub "!PREFIX__assertion:sym<[>"  :subid("139_1266337342.27136") :method
 .annotate "line", 3
     new $P490, "ResizablePMCArray"
     push $P490, ""
@@ -6038,7 +6038,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block492"  :anon :subid("140_1261064009.3328") :method :outer("138_1261064009.3328")
+.sub "_block492"  :anon :subid("140_1266337342.27136") :method :outer("138_1266337342.27136")
 .annotate "line", 158
     .local string rx494_tgt
     .local int rx494_pos
@@ -6118,9 +6118,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "cclass_elem"  :subid("141_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "cclass_elem"  :subid("141_1266337342.27136") :method :outer("11_1266337342.27136")
 .annotate "line", 3
-    .const 'Sub' $P511 = "143_1261064009.3328" 
+    .const 'Sub' $P511 = "143_1266337342.27136" 
     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_1261064009.3328" 
+    .const 'Sub' $P511 = "143_1266337342.27136" 
     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_1261064009.3328") :method
+.sub "!PREFIX__cclass_elem"  :subid("142_1266337342.27136") :method
 .annotate "line", 3
     new $P502, "ResizablePMCArray"
     push $P502, ""
@@ -6315,13 +6315,13 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block510"  :anon :subid("143_1261064009.3328") :method :outer("141_1261064009.3328")
+.sub "_block510"  :anon :subid("143_1266337342.27136") :method :outer("141_1266337342.27136")
 .annotate "line", 164
-    .const 'Sub' $P526 = "146_1261064009.3328" 
+    .const 'Sub' $P526 = "146_1266337342.27136" 
     capture_lex $P526
-    .const 'Sub' $P521 = "145_1261064009.3328" 
+    .const 'Sub' $P521 = "145_1266337342.27136" 
     capture_lex $P521
-    .const 'Sub' $P517 = "144_1261064009.3328" 
+    .const 'Sub' $P517 = "144_1266337342.27136" 
     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_1261064009.3328" 
+    .const 'Sub' $P517 = "144_1266337342.27136" 
     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_1261064009.3328" 
+    .const 'Sub' $P521 = "145_1266337342.27136" 
     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_1261064009.3328" 
+    .const 'Sub' $P526 = "146_1266337342.27136" 
     capture_lex $P526
     $P10 = rx512_cur.$P526()
     unless $P10, rx512_fail
@@ -6461,7 +6461,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block516"  :anon :subid("144_1261064009.3328") :method :outer("143_1261064009.3328")
+.sub "_block516"  :anon :subid("144_1266337342.27136") :method :outer("143_1266337342.27136")
 .annotate "line", 166
     .local string rx518_tgt
     .local int rx518_pos
@@ -6513,7 +6513,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block520"  :anon :subid("145_1261064009.3328") :method :outer("143_1261064009.3328")
+.sub "_block520"  :anon :subid("145_1266337342.27136") :method :outer("143_1266337342.27136")
 .annotate "line", 166
     .local string rx522_tgt
     .local int rx522_pos
@@ -6569,7 +6569,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block525"  :anon :subid("146_1261064009.3328") :method :outer("143_1261064009.3328")
+.sub "_block525"  :anon :subid("146_1266337342.27136") :method :outer("143_1266337342.27136")
 .annotate "line", 166
     .local string rx527_tgt
     .local int rx527_pos
@@ -6621,9 +6621,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_internal"  :subid("147_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "mod_internal"  :subid("147_1266337342.27136") :method :outer("11_1266337342.27136")
 .annotate "line", 3
-    .const 'Sub' $P543 = "149_1261064009.3328" 
+    .const 'Sub' $P543 = "149_1266337342.27136" 
     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_1261064009.3328" 
+    .const 'Sub' $P543 = "149_1266337342.27136" 
     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_1261064009.3328") :method
+.sub "!PREFIX__mod_internal"  :subid("148_1266337342.27136") :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_1261064009.3328") :method :outer("147_1261064009.3328")
+.sub "_block542"  :anon :subid("149_1266337342.27136") :method :outer("147_1266337342.27136")
 .annotate "line", 176
     .local string rx544_tgt
     .local int rx544_pos
@@ -6854,7 +6854,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident"  :subid("150_1261064009.3328") :method
+.sub "mod_ident"  :subid("150_1266337342.27136") :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_1261064009.3328") :method
+.sub "!PREFIX__mod_ident"  :subid("151_1266337342.27136") :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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "mod_ident:sym<ignorecase>"  :subid("152_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__mod_ident:sym<ignorecase>"  :subid("153_1266337342.27136") :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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "mod_ident:sym<ratchet>"  :subid("154_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__mod_ident:sym<ratchet>"  :subid("155_1266337342.27136") :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_1261064009.3328") :method :outer("11_1261064009.3328")
+.sub "mod_ident:sym<sigspace>"  :subid("156_1266337342.27136") :method :outer("11_1266337342.27136")
 .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_1261064009.3328") :method
+.sub "!PREFIX__mod_ident:sym<sigspace>"  :subid("157_1266337342.27136") :method
 .annotate "line", 3
     new $P574, "ResizablePMCArray"
     push $P574, "s"
@@ -7153,181 +7153,183 @@
 ### .include 'gen/p6regex-actions.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1261064016.27984")
+.sub "_block11"  :anon :subid("10_1266337348.54616")
 .annotate "line", 0
     get_hll_global $P14, ["Regex";"P6Regex";"Actions"], "_block13" 
     capture_lex $P14
 .annotate "line", 4
     get_hll_global $P14, ["Regex";"P6Regex";"Actions"], "_block13" 
     capture_lex $P14
-    $P1556 = $P14()
+    $P1569 = $P14()
 .annotate "line", 1
-    .return ($P1556)
+    .return ($P1569)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post89") :outer("10_1261064016.27984")
+.sub "" :load :init :subid("post90") :outer("10_1266337348.54616")
 .annotate "line", 0
-    .const 'Sub' $P12 = "10_1261064016.27984" 
+    .const 'Sub' $P12 = "10_1266337348.54616" 
     .local pmc block
     set block, $P12
-    $P1557 = get_root_global ["parrot"], "P6metaclass"
-    $P1557."new_class"("Regex::P6Regex::Actions", "HLL::Actions" :named("parent"))
+    $P1570 = get_root_global ["parrot"], "P6metaclass"
+    $P1570."new_class"("Regex::P6Regex::Actions", "HLL::Actions" :named("parent"))
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block13"  :subid("11_1261064016.27984") :outer("10_1261064016.27984")
+.sub "_block13"  :subid("11_1266337348.54616") :outer("10_1266337348.54616")
 .annotate "line", 4
-    .const 'Sub' $P1523 = "88_1261064016.27984" 
-    capture_lex $P1523
-    .const 'Sub' $P1454 = "84_1261064016.27984" 
-    capture_lex $P1454
-    .const 'Sub' $P1386 = "82_1261064016.27984" 
-    capture_lex $P1386
-    .const 'Sub' $P1313 = "79_1261064016.27984" 
-    capture_lex $P1313
-    .const 'Sub' $P1299 = "78_1261064016.27984" 
-    capture_lex $P1299
-    .const 'Sub' $P1275 = "77_1261064016.27984" 
-    capture_lex $P1275
-    .const 'Sub' $P1257 = "76_1261064016.27984" 
-    capture_lex $P1257
-    .const 'Sub' $P1243 = "75_1261064016.27984" 
+    .const 'Sub' $P1536 = "89_1266337348.54616" 
+    capture_lex $P1536
+    .const 'Sub' $P1467 = "85_1266337348.54616" 
+    capture_lex $P1467
+    .const 'Sub' $P1399 = "83_1266337348.54616" 
+    capture_lex $P1399
+    .const 'Sub' $P1326 = "80_1266337348.54616" 
+    capture_lex $P1326
+    .const 'Sub' $P1312 = "79_1266337348.54616" 
+    capture_lex $P1312
+    .const 'Sub' $P1288 = "78_1266337348.54616" 
+    capture_lex $P1288
+    .const 'Sub' $P1270 = "77_1266337348.54616" 
+    capture_lex $P1270
+    .const 'Sub' $P1256 = "76_1266337348.54616" 
+    capture_lex $P1256
+    .const 'Sub' $P1243 = "75_1266337348.54616" 
     capture_lex $P1243
-    .const 'Sub' $P1212 = "74_1261064016.27984" 
+    .const 'Sub' $P1212 = "74_1266337348.54616" 
     capture_lex $P1212
-    .const 'Sub' $P1181 = "73_1261064016.27984" 
+    .const 'Sub' $P1181 = "73_1266337348.54616" 
     capture_lex $P1181
-    .const 'Sub' $P1165 = "72_1261064016.27984" 
+    .const 'Sub' $P1165 = "72_1266337348.54616" 
     capture_lex $P1165
-    .const 'Sub' $P1149 = "71_1261064016.27984" 
+    .const 'Sub' $P1149 = "71_1266337348.54616" 
     capture_lex $P1149
-    .const 'Sub' $P1133 = "70_1261064016.27984" 
+    .const 'Sub' $P1133 = "70_1266337348.54616" 
     capture_lex $P1133
-    .const 'Sub' $P1117 = "69_1261064016.27984" 
+    .const 'Sub' $P1117 = "69_1266337348.54616" 
     capture_lex $P1117
-    .const 'Sub' $P1101 = "68_1261064016.27984" 
+    .const 'Sub' $P1101 = "68_1266337348.54616" 
     capture_lex $P1101
-    .const 'Sub' $P1085 = "67_1261064016.27984" 
+    .const 'Sub' $P1085 = "67_1266337348.54616" 
     capture_lex $P1085
-    .const 'Sub' $P1069 = "66_1261064016.27984" 
+    .const 'Sub' $P1069 = "66_1266337348.54616" 
     capture_lex $P1069
-    .const 'Sub' $P1045 = "65_1261064016.27984" 
+    .const 'Sub' $P1045 = "65_1266337348.54616" 
     capture_lex $P1045
-    .const 'Sub' $P1030 = "64_1261064016.27984" 
+    .const 'Sub' $P1030 = "64_1266337348.54616" 
     capture_lex $P1030
-    .const 'Sub' $P974 = "63_1261064016.27984" 
+    .const 'Sub' $P974 = "63_1266337348.54616" 
     capture_lex $P974
-    .const 'Sub' $P953 = "62_1261064016.27984" 
+    .const 'Sub' $P953 = "62_1266337348.54616" 
     capture_lex $P953
-    .const 'Sub' $P931 = "61_1261064016.27984" 
+    .const 'Sub' $P931 = "61_1266337348.54616" 
     capture_lex $P931
-    .const 'Sub' $P921 = "60_1261064016.27984" 
+    .const 'Sub' $P921 = "60_1266337348.54616" 
     capture_lex $P921
-    .const 'Sub' $P911 = "59_1261064016.27984" 
+    .const 'Sub' $P911 = "59_1266337348.54616" 
     capture_lex $P911
-    .const 'Sub' $P901 = "58_1261064016.27984" 
+    .const 'Sub' $P901 = "58_1266337348.54616" 
     capture_lex $P901
-    .const 'Sub' $P889 = "57_1261064016.27984" 
+    .const 'Sub' $P889 = "57_1266337348.54616" 
     capture_lex $P889
-    .const 'Sub' $P877 = "56_1261064016.27984" 
+    .const 'Sub' $P877 = "56_1266337348.54616" 
     capture_lex $P877
-    .const 'Sub' $P865 = "55_1261064016.27984" 
+    .const 'Sub' $P865 = "55_1266337348.54616" 
     capture_lex $P865
-    .const 'Sub' $P853 = "54_1261064016.27984" 
+    .const 'Sub' $P853 = "54_1266337348.54616" 
     capture_lex $P853
-    .const 'Sub' $P841 = "53_1261064016.27984" 
+    .const 'Sub' $P841 = "53_1266337348.54616" 
     capture_lex $P841
-    .const 'Sub' $P829 = "52_1261064016.27984" 
+    .const 'Sub' $P829 = "52_1266337348.54616" 
     capture_lex $P829
-    .const 'Sub' $P817 = "51_1261064016.27984" 
+    .const 'Sub' $P817 = "51_1266337348.54616" 
     capture_lex $P817
-    .const 'Sub' $P805 = "50_1261064016.27984" 
+    .const 'Sub' $P805 = "50_1266337348.54616" 
     capture_lex $P805
-    .const 'Sub' $P782 = "49_1261064016.27984" 
+    .const 'Sub' $P782 = "49_1266337348.54616" 
     capture_lex $P782
-    .const 'Sub' $P759 = "48_1261064016.27984" 
+    .const 'Sub' $P759 = "48_1266337348.54616" 
     capture_lex $P759
-    .const 'Sub' $P741 = "47_1261064016.27984" 
+    .const 'Sub' $P741 = "47_1266337348.54616" 
     capture_lex $P741
-    .const 'Sub' $P731 = "46_1261064016.27984" 
+    .const 'Sub' $P731 = "46_1266337348.54616" 
     capture_lex $P731
-    .const 'Sub' $P713 = "45_1261064016.27984" 
+    .const 'Sub' $P713 = "45_1266337348.54616" 
     capture_lex $P713
-    .const 'Sub' $P666 = "44_1261064016.27984" 
+    .const 'Sub' $P666 = "44_1266337348.54616" 
     capture_lex $P666
-    .const 'Sub' $P649 = "43_1261064016.27984" 
+    .const 'Sub' $P649 = "43_1266337348.54616" 
     capture_lex $P649
-    .const 'Sub' $P634 = "42_1261064016.27984" 
+    .const 'Sub' $P634 = "42_1266337348.54616" 
     capture_lex $P634
-    .const 'Sub' $P619 = "41_1261064016.27984" 
+    .const 'Sub' $P619 = "41_1266337348.54616" 
     capture_lex $P619
-    .const 'Sub' $P593 = "40_1261064016.27984" 
+    .const 'Sub' $P593 = "40_1266337348.54616" 
     capture_lex $P593
-    .const 'Sub' $P543 = "38_1261064016.27984" 
+    .const 'Sub' $P543 = "38_1266337348.54616" 
     capture_lex $P543
-    .const 'Sub' $P475 = "36_1261064016.27984" 
+    .const 'Sub' $P475 = "36_1266337348.54616" 
     capture_lex $P475
-    .const 'Sub' $P420 = "33_1261064016.27984" 
+    .const 'Sub' $P420 = "33_1266337348.54616" 
     capture_lex $P420
-    .const 'Sub' $P405 = "32_1261064016.27984" 
+    .const 'Sub' $P405 = "32_1266337348.54616" 
     capture_lex $P405
-    .const 'Sub' $P379 = "30_1261064016.27984" 
+    .const 'Sub' $P379 = "30_1266337348.54616" 
     capture_lex $P379
-    .const 'Sub' $P362 = "29_1261064016.27984" 
+    .const 'Sub' $P362 = "29_1266337348.54616" 
     capture_lex $P362
-    .const 'Sub' $P340 = "28_1261064016.27984" 
+    .const 'Sub' $P340 = "28_1266337348.54616" 
     capture_lex $P340
-    .const 'Sub' $P308 = "27_1261064016.27984" 
+    .const 'Sub' $P308 = "27_1266337348.54616" 
     capture_lex $P308
-    .const 'Sub' $P54 = "14_1261064016.27984" 
+    .const 'Sub' $P54 = "14_1266337348.54616" 
     capture_lex $P54
-    .const 'Sub' $P21 = "13_1261064016.27984" 
+    .const 'Sub' $P21 = "13_1266337348.54616" 
     capture_lex $P21
-    .const 'Sub' $P16 = "12_1261064016.27984" 
+    .const 'Sub' $P16 = "12_1266337348.54616" 
     capture_lex $P16
     get_global $P15, "@MODIFIERS"
-    unless_null $P15, vivify_90
+    unless_null $P15, vivify_91
     new $P15, "ResizablePMCArray"
     set_global "@MODIFIERS", $P15
-  vivify_90:
+  vivify_91:
 .annotate "line", 6
-    .const 'Sub' $P16 = "12_1261064016.27984" 
+    .const 'Sub' $P16 = "12_1266337348.54616" 
     capture_lex $P16
     .lex "INIT", $P16
-.annotate "line", 475
-    .const 'Sub' $P21 = "13_1261064016.27984" 
+.annotate "line", 479
+    .const 'Sub' $P21 = "13_1266337348.54616" 
     capture_lex $P21
     .lex "buildsub", $P21
-.annotate "line", 492
-    .const 'Sub' $P54 = "14_1261064016.27984" 
+.annotate "line", 496
+    .const 'Sub' $P54 = "14_1266337348.54616" 
     capture_lex $P54
     .lex "capnames", $P54
-.annotate "line", 558
-    .const 'Sub' $P308 = "27_1261064016.27984" 
+.annotate "line", 562
+    .const 'Sub' $P308 = "27_1266337348.54616" 
     capture_lex $P308
     .lex "backmod", $P308
-.annotate "line", 565
-    .const 'Sub' $P340 = "28_1261064016.27984" 
+.annotate "line", 569
+    .const 'Sub' $P340 = "28_1266337348.54616" 
     capture_lex $P340
     .lex "subrule_alias", $P340
 .annotate "line", 4
     get_global $P360, "@MODIFIERS"
     find_lex $P361, "INIT"
-.annotate "line", 468
-    find_lex $P1552, "buildsub"
-    find_lex $P1553, "capnames"
-    find_lex $P1554, "backmod"
-    find_lex $P1555, "subrule_alias"
+.annotate "line", 472
+    find_lex $P1565, "buildsub"
+    find_lex $P1566, "capnames"
+    find_lex $P1567, "backmod"
+    find_lex $P1568, "subrule_alias"
 .annotate "line", 4
-    .return ($P1555)
+    .return ($P1568)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "INIT"  :subid("12_1261064016.27984") :outer("11_1261064016.27984")
+.sub "INIT"  :subid("12_1266337348.54616") :outer("11_1266337348.54616")
 .annotate "line", 6
     new $P18, 'ExceptionHandler'
     set_addr $P18, control_17
@@ -7351,73 +7353,73 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "buildsub"  :subid("13_1261064016.27984") :outer("11_1261064016.27984")
+.sub "buildsub"  :subid("13_1266337348.54616") :outer("11_1266337348.54616")
     .param pmc param_24
     .param pmc param_25 :optional
     .param int has_param_25 :opt_flag
-.annotate "line", 475
+.annotate "line", 479
     new $P23, 'ExceptionHandler'
     set_addr $P23, control_22
     $P23."handle_types"(58)
     push_eh $P23
     .lex "$rpast", param_24
-    if has_param_25, optparam_91
+    if has_param_25, optparam_92
     get_hll_global $P26, ["PAST"], "Block"
     $P27 = $P26."new"()
     set param_25, $P27
-  optparam_91:
+  optparam_92:
     .lex "$block", param_25
-.annotate "line", 476
+.annotate "line", 480
     new $P28, "Hash"
     .lex "%capnames", $P28
     find_lex $P29, "$rpast"
     $P30 = "capnames"($P29, 0)
     store_lex "%capnames", $P30
-.annotate "line", 477
+.annotate "line", 481
     new $P31, "Integer"
     assign $P31, 0
     find_lex $P32, "%capnames"
-    unless_null $P32, vivify_92
+    unless_null $P32, vivify_93
     new $P32, "Hash"
     store_lex "%capnames", $P32
-  vivify_92:
+  vivify_93:
     set $P32[""], $P31
-.annotate "line", 478
+.annotate "line", 482
     get_hll_global $P33, ["PAST"], "Regex"
-.annotate "line", 479
+.annotate "line", 483
     get_hll_global $P34, ["PAST"], "Regex"
     $P35 = $P34."new"("scan" :named("pasttype"))
     find_lex $P36, "$rpast"
-.annotate "line", 481
+.annotate "line", 485
     get_hll_global $P37, ["PAST"], "Regex"
     $P38 = $P37."new"("pass" :named("pasttype"))
     find_lex $P39, "%capnames"
     $P40 = $P33."new"($P35, $P36, $P38, "concat" :named("pasttype"), $P39 :named("capnames"))
-.annotate "line", 478
+.annotate "line", 482
     store_lex "$rpast", $P40
-.annotate "line", 485
+.annotate "line", 489
     find_lex $P42, "$block"
     $P43 = $P42."symbol"(unicode:"$\x{a2}")
     if $P43, unless_41_end
     find_lex $P44, "$block"
     $P44."symbol"(unicode:"$\x{a2}", "lexical" :named("scope"))
   unless_41_end:
-.annotate "line", 486
+.annotate "line", 490
     find_lex $P46, "$block"
     $P47 = $P46."symbol"("$/")
     if $P47, unless_45_end
     find_lex $P48, "$block"
     $P48."symbol"("$/", "lexical" :named("scope"))
   unless_45_end:
-.annotate "line", 487
+.annotate "line", 491
     find_lex $P49, "$block"
     find_lex $P50, "$rpast"
     $P49."push"($P50)
-.annotate "line", 488
+.annotate "line", 492
     find_lex $P51, "$block"
     $P51."blocktype"("method")
     find_lex $P52, "$block"
-.annotate "line", 475
+.annotate "line", 479
     .return ($P52)
   control_22:
     .local pmc exception 
@@ -7428,19 +7430,19 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "capnames"  :subid("14_1261064016.27984") :outer("11_1261064016.27984")
+.sub "capnames"  :subid("14_1266337348.54616") :outer("11_1266337348.54616")
     .param pmc param_57
     .param pmc param_58
-.annotate "line", 492
-    .const 'Sub' $P283 = "25_1261064016.27984" 
+.annotate "line", 496
+    .const 'Sub' $P283 = "25_1266337348.54616" 
     capture_lex $P283
-    .const 'Sub' $P220 = "22_1261064016.27984" 
+    .const 'Sub' $P220 = "22_1266337348.54616" 
     capture_lex $P220
-    .const 'Sub' $P178 = "20_1261064016.27984" 
+    .const 'Sub' $P178 = "20_1266337348.54616" 
     capture_lex $P178
-    .const 'Sub' $P136 = "18_1261064016.27984" 
+    .const 'Sub' $P136 = "18_1266337348.54616" 
     capture_lex $P136
-    .const 'Sub' $P69 = "15_1261064016.27984" 
+    .const 'Sub' $P69 = "15_1266337348.54616" 
     capture_lex $P69
     new $P56, 'ExceptionHandler'
     set_addr $P56, control_55
@@ -7448,29 +7450,29 @@
     push_eh $P56
     .lex "$ast", param_57
     .lex "$count", param_58
-.annotate "line", 493
+.annotate "line", 497
     new $P59, "Hash"
     .lex "%capnames", $P59
-.annotate "line", 494
+.annotate "line", 498
     new $P60, "Undef"
     .lex "$pasttype", $P60
-.annotate "line", 492
+.annotate "line", 496
     find_lex $P61, "%capnames"
-.annotate "line", 494
+.annotate "line", 498
     find_lex $P62, "$ast"
     $P63 = $P62."pasttype"()
     store_lex "$pasttype", $P63
-.annotate "line", 495
+.annotate "line", 499
     find_lex $P65, "$pasttype"
     set $S66, $P65
     iseq $I67, $S66, "alt"
     if $I67, if_64
-.annotate "line", 508
+.annotate "line", 512
     find_lex $P127, "$pasttype"
     set $S128, $P127
     iseq $I129, $S128, "concat"
     if $I129, if_126
-.annotate "line", 517
+.annotate "line", 521
     find_lex $P171, "$pasttype"
     set $S172, $P171
     iseq $I173, $S172, "subrule"
@@ -7486,41 +7488,41 @@
     set $P169, $I176
   if_170_end:
     if $P169, if_168
-.annotate "line", 530
+.annotate "line", 534
     find_lex $P216, "$pasttype"
     set $S217, $P216
     iseq $I218, $S217, "subcapture"
     if $I218, if_215
-.annotate "line", 547
+.annotate "line", 551
     find_lex $P279, "$pasttype"
     set $S280, $P279
     iseq $I281, $S280, "quant"
     unless $I281, if_278_end
-    .const 'Sub' $P283 = "25_1261064016.27984" 
+    .const 'Sub' $P283 = "25_1266337348.54616" 
     capture_lex $P283
     $P283()
   if_278_end:
     goto if_215_end
   if_215:
-.annotate "line", 530
-    .const 'Sub' $P220 = "22_1261064016.27984" 
+.annotate "line", 534
+    .const 'Sub' $P220 = "22_1266337348.54616" 
     capture_lex $P220
     $P220()
   if_215_end:
     goto if_168_end
   if_168:
-.annotate "line", 517
-    .const 'Sub' $P178 = "20_1261064016.27984" 
+.annotate "line", 521
+    .const 'Sub' $P178 = "20_1266337348.54616" 
     capture_lex $P178
     $P178()
   if_168_end:
     goto if_126_end
   if_126:
-.annotate "line", 509
+.annotate "line", 513
     find_lex $P131, "$ast"
     $P132 = $P131."list"()
     defined $I133, $P132
-    unless $I133, for_undef_113
+    unless $I133, for_undef_114
     iter $P130, $P132
     new $P166, 'ExceptionHandler'
     set_addr $P166, loop165_handler
@@ -7530,7 +7532,7 @@
     unless $P130, loop165_done
     shift $P134, $P130
   loop165_redo:
-    .const 'Sub' $P136 = "18_1261064016.27984" 
+    .const 'Sub' $P136 = "18_1266337348.54616" 
     capture_lex $P136
     $P136($P134)
   loop165_next:
@@ -7543,26 +7545,26 @@
     eq $P167, 67, loop165_redo
   loop165_done:
     pop_eh 
-  for_undef_113:
+  for_undef_114:
   if_126_end:
-.annotate "line", 508
+.annotate "line", 512
     goto if_64_end
   if_64:
-.annotate "line", 495
-    .const 'Sub' $P69 = "15_1261064016.27984" 
+.annotate "line", 499
+    .const 'Sub' $P69 = "15_1266337348.54616" 
     capture_lex $P69
     $P69()
   if_64_end:
-.annotate "line", 554
+.annotate "line", 558
     find_lex $P304, "$count"
     find_lex $P305, "%capnames"
-    unless_null $P305, vivify_133
+    unless_null $P305, vivify_134
     new $P305, "Hash"
     store_lex "%capnames", $P305
-  vivify_133:
+  vivify_134:
     set $P305[""], $P304
     find_lex $P306, "%capnames"
-.annotate "line", 492
+.annotate "line", 496
     .return ($P306)
   control_55:
     .local pmc exception 
@@ -7573,28 +7575,28 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block282"  :anon :subid("25_1261064016.27984") :outer("14_1261064016.27984")
-.annotate "line", 547
-    .const 'Sub' $P294 = "26_1261064016.27984" 
+.sub "_block282"  :anon :subid("25_1266337348.54616") :outer("14_1266337348.54616")
+.annotate "line", 551
+    .const 'Sub' $P294 = "26_1266337348.54616" 
     capture_lex $P294
-.annotate "line", 548
+.annotate "line", 552
     new $P284, "Hash"
     .lex "%astcap", $P284
     find_lex $P285, "$ast"
-    unless_null $P285, vivify_93
+    unless_null $P285, vivify_94
     new $P285, "ResizablePMCArray"
-  vivify_93:
+  vivify_94:
     set $P286, $P285[0]
-    unless_null $P286, vivify_94
+    unless_null $P286, vivify_95
     new $P286, "Undef"
-  vivify_94:
+  vivify_95:
     find_lex $P287, "$count"
     $P288 = "capnames"($P286, $P287)
     store_lex "%astcap", $P288
-.annotate "line", 549
+.annotate "line", 553
     find_lex $P290, "%astcap"
     defined $I291, $P290
-    unless $I291, for_undef_95
+    unless $I291, for_undef_96
     iter $P289, $P290
     new $P300, 'ExceptionHandler'
     set_addr $P300, loop299_handler
@@ -7604,7 +7606,7 @@
     unless $P289, loop299_done
     shift $P292, $P289
   loop299_redo:
-    .const 'Sub' $P294 = "26_1261064016.27984" 
+    .const 'Sub' $P294 = "26_1266337348.54616" 
     capture_lex $P294
     $P294($P292)
   loop299_next:
@@ -7617,73 +7619,73 @@
     eq $P301, 67, loop299_redo
   loop299_done:
     pop_eh 
-  for_undef_95:
-.annotate "line", 552
+  for_undef_96:
+.annotate "line", 556
     find_lex $P302, "%astcap"
-    unless_null $P302, vivify_97
+    unless_null $P302, vivify_98
     new $P302, "Hash"
-  vivify_97:
+  vivify_98:
     set $P303, $P302[""]
-    unless_null $P303, vivify_98
+    unless_null $P303, vivify_99
     new $P303, "Undef"
-  vivify_98:
+  vivify_99:
     store_lex "$count", $P303
-.annotate "line", 547
+.annotate "line", 551
     .return ($P303)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block293"  :anon :subid("26_1261064016.27984") :outer("25_1261064016.27984")
+.sub "_block293"  :anon :subid("26_1266337348.54616") :outer("25_1266337348.54616")
     .param pmc param_295
-.annotate "line", 549
+.annotate "line", 553
     .lex "$_", param_295
-.annotate "line", 550
+.annotate "line", 554
     new $P296, "Integer"
     assign $P296, 2
     find_lex $P297, "$_"
     find_lex $P298, "%capnames"
-    unless_null $P298, vivify_96
+    unless_null $P298, vivify_97
     new $P298, "Hash"
     store_lex "%capnames", $P298
-  vivify_96:
+  vivify_97:
     set $P298[$P297], $P296
-.annotate "line", 549
+.annotate "line", 553
     .return ($P296)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block219"  :anon :subid("22_1261064016.27984") :outer("14_1261064016.27984")
-.annotate "line", 530
-    .const 'Sub' $P260 = "24_1261064016.27984" 
+.sub "_block219"  :anon :subid("22_1266337348.54616") :outer("14_1266337348.54616")
+.annotate "line", 534
+    .const 'Sub' $P260 = "24_1266337348.54616" 
     capture_lex $P260
-    .const 'Sub' $P232 = "23_1261064016.27984" 
+    .const 'Sub' $P232 = "23_1266337348.54616" 
     capture_lex $P232
-.annotate "line", 531
+.annotate "line", 535
     new $P221, "Undef"
     .lex "$name", $P221
-.annotate "line", 532
+.annotate "line", 536
     new $P222, "ResizablePMCArray"
     .lex "@names", $P222
-.annotate "line", 541
+.annotate "line", 545
     new $P223, "Hash"
     .lex "%x", $P223
-.annotate "line", 531
+.annotate "line", 535
     find_lex $P224, "$ast"
     $P225 = $P224."name"()
     store_lex "$name", $P225
-.annotate "line", 532
+.annotate "line", 536
 
             $P0 = find_lex '$name'
             $S0 = $P0
             $P226 = split '=', $S0
         
     store_lex "@names", $P226
-.annotate "line", 537
+.annotate "line", 541
     find_lex $P228, "@names"
     defined $I229, $P228
-    unless $I229, for_undef_99
+    unless $I229, for_undef_100
     iter $P227, $P228
     new $P249, 'ExceptionHandler'
     set_addr $P249, loop248_handler
@@ -7693,7 +7695,7 @@
     unless $P227, loop248_done
     shift $P230, $P227
   loop248_redo:
-    .const 'Sub' $P232 = "23_1261064016.27984" 
+    .const 'Sub' $P232 = "23_1266337348.54616" 
     capture_lex $P232
     $P232($P230)
   loop248_next:
@@ -7706,23 +7708,23 @@
     eq $P250, 67, loop248_redo
   loop248_done:
     pop_eh 
-  for_undef_99:
-.annotate "line", 541
+  for_undef_100:
+.annotate "line", 545
     find_lex $P251, "$ast"
-    unless_null $P251, vivify_101
+    unless_null $P251, vivify_102
     new $P251, "ResizablePMCArray"
-  vivify_101:
+  vivify_102:
     set $P252, $P251[0]
-    unless_null $P252, vivify_102
+    unless_null $P252, vivify_103
     new $P252, "Undef"
-  vivify_102:
+  vivify_103:
     find_lex $P253, "$count"
     $P254 = "capnames"($P252, $P253)
     store_lex "%x", $P254
-.annotate "line", 542
+.annotate "line", 546
     find_lex $P256, "%x"
     defined $I257, $P256
-    unless $I257, for_undef_103
+    unless $I257, for_undef_104
     iter $P255, $P256
     new $P274, 'ExceptionHandler'
     set_addr $P274, loop273_handler
@@ -7732,7 +7734,7 @@
     unless $P255, loop273_done
     shift $P258, $P255
   loop273_redo:
-    .const 'Sub' $P260 = "24_1261064016.27984" 
+    .const 'Sub' $P260 = "24_1266337348.54616" 
     capture_lex $P260
     $P260($P258)
   loop273_next:
@@ -7745,28 +7747,28 @@
     eq $P275, 67, loop273_redo
   loop273_done:
     pop_eh 
-  for_undef_103:
-.annotate "line", 545
+  for_undef_104:
+.annotate "line", 549
     find_lex $P276, "%x"
-    unless_null $P276, vivify_109
+    unless_null $P276, vivify_110
     new $P276, "Hash"
-  vivify_109:
+  vivify_110:
     set $P277, $P276[""]
-    unless_null $P277, vivify_110
+    unless_null $P277, vivify_111
     new $P277, "Undef"
-  vivify_110:
+  vivify_111:
     store_lex "$count", $P277
-.annotate "line", 530
+.annotate "line", 534
     .return ($P277)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block231"  :anon :subid("23_1261064016.27984") :outer("22_1261064016.27984")
+.sub "_block231"  :anon :subid("23_1266337348.54616") :outer("22_1266337348.54616")
     .param pmc param_233
-.annotate "line", 537
+.annotate "line", 541
     .lex "$_", param_233
-.annotate "line", 538
+.annotate "line", 542
     find_lex $P237, "$_"
     set $S238, $P237
     iseq $I239, $S238, "0"
@@ -7786,77 +7788,77 @@
     add $P244, $P243, 1
     store_lex "$count", $P244
   if_234_end:
-.annotate "line", 539
+.annotate "line", 543
     new $P245, "Integer"
     assign $P245, 1
     find_lex $P246, "$_"
     find_lex $P247, "%capnames"
-    unless_null $P247, vivify_100
+    unless_null $P247, vivify_101
     new $P247, "Hash"
     store_lex "%capnames", $P247
-  vivify_100:
+  vivify_101:
     set $P247[$P246], $P245
-.annotate "line", 537
+.annotate "line", 541
     .return ($P245)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block259"  :anon :subid("24_1261064016.27984") :outer("22_1261064016.27984")
+.sub "_block259"  :anon :subid("24_1266337348.54616") :outer("22_1266337348.54616")
     .param pmc param_261
-.annotate "line", 542
+.annotate "line", 546
     .lex "$_", param_261
-.annotate "line", 543
+.annotate "line", 547
     find_lex $P262, "$_"
     find_lex $P263, "%capnames"
-    unless_null $P263, vivify_104
+    unless_null $P263, vivify_105
     new $P263, "Hash"
-  vivify_104:
+  vivify_105:
     set $P264, $P263[$P262]
-    unless_null $P264, vivify_105
+    unless_null $P264, vivify_106
     new $P264, "Undef"
-  vivify_105:
+  vivify_106:
     set $N265, $P264
     new $P266, 'Float'
     set $P266, $N265
     find_lex $P267, "$_"
     find_lex $P268, "%x"
-    unless_null $P268, vivify_106
+    unless_null $P268, vivify_107
     new $P268, "Hash"
-  vivify_106:
+  vivify_107:
     set $P269, $P268[$P267]
-    unless_null $P269, vivify_107
+    unless_null $P269, vivify_108
     new $P269, "Undef"
-  vivify_107:
+  vivify_108:
     add $P270, $P266, $P269
     find_lex $P271, "$_"
     find_lex $P272, "%capnames"
-    unless_null $P272, vivify_108
+    unless_null $P272, vivify_109
     new $P272, "Hash"
     store_lex "%capnames", $P272
-  vivify_108:
+  vivify_109:
     set $P272[$P271], $P270
-.annotate "line", 542
+.annotate "line", 546
     .return ($P270)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block177"  :anon :subid("20_1261064016.27984") :outer("14_1261064016.27984")
-.annotate "line", 517
-    .const 'Sub' $P196 = "21_1261064016.27984" 
+.sub "_block177"  :anon :subid("20_1266337348.54616") :outer("14_1266337348.54616")
+.annotate "line", 521
+    .const 'Sub' $P196 = "21_1266337348.54616" 
     capture_lex $P196
-.annotate "line", 518
+.annotate "line", 522
     new $P179, "Undef"
     .lex "$name", $P179
-.annotate "line", 520
+.annotate "line", 524
     new $P180, "ResizablePMCArray"
     .lex "@names", $P180
-.annotate "line", 518
+.annotate "line", 522
     find_lex $P181, "$ast"
     $P182 = $P181."name"()
     store_lex "$name", $P182
-.annotate "line", 519
+.annotate "line", 523
     find_lex $P184, "$name"
     set $S185, $P184
     iseq $I186, $S185, ""
@@ -7867,17 +7869,17 @@
     find_lex $P189, "$name"
     $P188."name"($P189)
   if_183_end:
-.annotate "line", 520
+.annotate "line", 524
 
             $P0 = find_lex '$name'
             $S0 = $P0
             $P190 = split '=', $S0
         
     store_lex "@names", $P190
-.annotate "line", 525
+.annotate "line", 529
     find_lex $P192, "@names"
     defined $I193, $P192
-    unless $I193, for_undef_111
+    unless $I193, for_undef_112
     iter $P191, $P192
     new $P213, 'ExceptionHandler'
     set_addr $P213, loop212_handler
@@ -7887,7 +7889,7 @@
     unless $P191, loop212_done
     shift $P194, $P191
   loop212_redo:
-    .const 'Sub' $P196 = "21_1261064016.27984" 
+    .const 'Sub' $P196 = "21_1266337348.54616" 
     capture_lex $P196
     $P196($P194)
   loop212_next:
@@ -7900,18 +7902,18 @@
     eq $P214, 67, loop212_redo
   loop212_done:
     pop_eh 
-  for_undef_111:
-.annotate "line", 517
+  for_undef_112:
+.annotate "line", 521
     .return ($P191)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block195"  :anon :subid("21_1261064016.27984") :outer("20_1261064016.27984")
+.sub "_block195"  :anon :subid("21_1266337348.54616") :outer("20_1266337348.54616")
     .param pmc param_197
-.annotate "line", 525
+.annotate "line", 529
     .lex "$_", param_197
-.annotate "line", 526
+.annotate "line", 530
     find_lex $P201, "$_"
     set $S202, $P201
     iseq $I203, $S202, "0"
@@ -7931,28 +7933,28 @@
     add $P208, $P207, 1
     store_lex "$count", $P208
   if_198_end:
-.annotate "line", 527
+.annotate "line", 531
     new $P209, "Integer"
     assign $P209, 1
     find_lex $P210, "$_"
     find_lex $P211, "%capnames"
-    unless_null $P211, vivify_112
+    unless_null $P211, vivify_113
     new $P211, "Hash"
     store_lex "%capnames", $P211
-  vivify_112:
+  vivify_113:
     set $P211[$P210], $P209
-.annotate "line", 525
+.annotate "line", 529
     .return ($P209)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block135"  :anon :subid("18_1261064016.27984") :outer("14_1261064016.27984")
+.sub "_block135"  :anon :subid("18_1266337348.54616") :outer("14_1266337348.54616")
     .param pmc param_138
-.annotate "line", 509
-    .const 'Sub' $P147 = "19_1261064016.27984" 
+.annotate "line", 513
+    .const 'Sub' $P147 = "19_1266337348.54616" 
     capture_lex $P147
-.annotate "line", 510
+.annotate "line", 514
     new $P137, "Hash"
     .lex "%x", $P137
     .lex "$_", param_138
@@ -7960,10 +7962,10 @@
     find_lex $P140, "$count"
     $P141 = "capnames"($P139, $P140)
     store_lex "%x", $P141
-.annotate "line", 511
+.annotate "line", 515
     find_lex $P143, "%x"
     defined $I144, $P143
-    unless $I144, for_undef_114
+    unless $I144, for_undef_115
     iter $P142, $P143
     new $P161, 'ExceptionHandler'
     set_addr $P161, loop160_handler
@@ -7973,7 +7975,7 @@
     unless $P142, loop160_done
     shift $P145, $P142
   loop160_redo:
-    .const 'Sub' $P147 = "19_1261064016.27984" 
+    .const 'Sub' $P147 = "19_1266337348.54616" 
     capture_lex $P147
     $P147($P145)
   loop160_next:
@@ -7986,77 +7988,77 @@
     eq $P162, 67, loop160_redo
   loop160_done:
     pop_eh 
-  for_undef_114:
-.annotate "line", 514
+  for_undef_115:
+.annotate "line", 518
     find_lex $P163, "%x"
-    unless_null $P163, vivify_120
+    unless_null $P163, vivify_121
     new $P163, "Hash"
-  vivify_120:
+  vivify_121:
     set $P164, $P163[""]
-    unless_null $P164, vivify_121
+    unless_null $P164, vivify_122
     new $P164, "Undef"
-  vivify_121:
+  vivify_122:
     store_lex "$count", $P164
-.annotate "line", 509
+.annotate "line", 513
     .return ($P164)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block146"  :anon :subid("19_1261064016.27984") :outer("18_1261064016.27984")
+.sub "_block146"  :anon :subid("19_1266337348.54616") :outer("18_1266337348.54616")
     .param pmc param_148
-.annotate "line", 511
+.annotate "line", 515
     .lex "$_", param_148
-.annotate "line", 512
+.annotate "line", 516
     find_lex $P149, "$_"
     find_lex $P150, "%capnames"
-    unless_null $P150, vivify_115
+    unless_null $P150, vivify_116
     new $P150, "Hash"
-  vivify_115:
+  vivify_116:
     set $P151, $P150[$P149]
-    unless_null $P151, vivify_116
+    unless_null $P151, vivify_117
     new $P151, "Undef"
-  vivify_116:
+  vivify_117:
     set $N152, $P151
     new $P153, 'Float'
     set $P153, $N152
     find_lex $P154, "$_"
     find_lex $P155, "%x"
-    unless_null $P155, vivify_117
+    unless_null $P155, vivify_118
     new $P155, "Hash"
-  vivify_117:
+  vivify_118:
     set $P156, $P155[$P154]
-    unless_null $P156, vivify_118
+    unless_null $P156, vivify_119
     new $P156, "Undef"
-  vivify_118:
+  vivify_119:
     add $P157, $P153, $P156
     find_lex $P158, "$_"
     find_lex $P159, "%capnames"
-    unless_null $P159, vivify_119
+    unless_null $P159, vivify_120
     new $P159, "Hash"
     store_lex "%capnames", $P159
-  vivify_119:
+  vivify_120:
     set $P159[$P158], $P157
-.annotate "line", 511
+.annotate "line", 515
     .return ($P157)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block68"  :anon :subid("15_1261064016.27984") :outer("14_1261064016.27984")
-.annotate "line", 495
-    .const 'Sub' $P78 = "16_1261064016.27984" 
+.sub "_block68"  :anon :subid("15_1266337348.54616") :outer("14_1266337348.54616")
+.annotate "line", 499
+    .const 'Sub' $P78 = "16_1266337348.54616" 
     capture_lex $P78
-.annotate "line", 496
+.annotate "line", 500
     new $P70, "Undef"
     .lex "$max", $P70
     find_lex $P71, "$count"
     store_lex "$max", $P71
-.annotate "line", 497
+.annotate "line", 501
     find_lex $P73, "$ast"
     $P74 = $P73."list"()
     defined $I75, $P74
-    unless $I75, for_undef_122
+    unless $I75, for_undef_123
     iter $P72, $P74
     new $P123, 'ExceptionHandler'
     set_addr $P123, loop122_handler
@@ -8066,7 +8068,7 @@
     unless $P72, loop122_done
     shift $P76, $P72
   loop122_redo:
-    .const 'Sub' $P78 = "16_1261064016.27984" 
+    .const 'Sub' $P78 = "16_1266337348.54616" 
     capture_lex $P78
     $P78($P76)
   loop122_next:
@@ -8079,22 +8081,22 @@
     eq $P124, 67, loop122_redo
   loop122_done:
     pop_eh 
-  for_undef_122:
-.annotate "line", 506
+  for_undef_123:
+.annotate "line", 510
     find_lex $P125, "$max"
     store_lex "$count", $P125
-.annotate "line", 495
+.annotate "line", 499
     .return ($P125)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block77"  :anon :subid("16_1261064016.27984") :outer("15_1261064016.27984")
+.sub "_block77"  :anon :subid("16_1266337348.54616") :outer("15_1266337348.54616")
     .param pmc param_80
-.annotate "line", 497
-    .const 'Sub' $P89 = "17_1261064016.27984" 
+.annotate "line", 501
+    .const 'Sub' $P89 = "17_1266337348.54616" 
     capture_lex $P89
-.annotate "line", 498
+.annotate "line", 502
     new $P79, "Hash"
     .lex "%x", $P79
     .lex "$_", param_80
@@ -8102,10 +8104,10 @@
     find_lex $P82, "$count"
     $P83 = "capnames"($P81, $P82)
     store_lex "%x", $P83
-.annotate "line", 499
+.annotate "line", 503
     find_lex $P85, "%x"
     defined $I86, $P85
-    unless $I86, for_undef_123
+    unless $I86, for_undef_124
     iter $P84, $P85
     new $P110, 'ExceptionHandler'
     set_addr $P110, loop109_handler
@@ -8115,7 +8117,7 @@
     unless $P84, loop109_done
     shift $P87, $P84
   loop109_redo:
-    .const 'Sub' $P89 = "17_1261064016.27984" 
+    .const 'Sub' $P89 = "17_1266337348.54616" 
     capture_lex $P89
     $P89($P87)
   loop109_next:
@@ -8128,16 +8130,16 @@
     eq $P111, 67, loop109_redo
   loop109_done:
     pop_eh 
-  for_undef_123:
-.annotate "line", 504
+  for_undef_124:
+.annotate "line", 508
     find_lex $P114, "%x"
-    unless_null $P114, vivify_129
+    unless_null $P114, vivify_130
     new $P114, "Hash"
-  vivify_129:
+  vivify_130:
     set $P115, $P114[""]
-    unless_null $P115, vivify_130
+    unless_null $P115, vivify_131
     new $P115, "Undef"
-  vivify_130:
+  vivify_131:
     set $N116, $P115
     find_lex $P117, "$max"
     set $N118, $P117
@@ -8148,36 +8150,36 @@
     goto if_113_end
   if_113:
     find_lex $P120, "%x"
-    unless_null $P120, vivify_131
+    unless_null $P120, vivify_132
     new $P120, "Hash"
-  vivify_131:
+  vivify_132:
     set $P121, $P120[""]
-    unless_null $P121, vivify_132
+    unless_null $P121, vivify_133
     new $P121, "Undef"
-  vivify_132:
+  vivify_133:
     store_lex "$max", $P121
     set $P112, $P121
   if_113_end:
-.annotate "line", 497
+.annotate "line", 501
     .return ($P112)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block88"  :anon :subid("17_1261064016.27984") :outer("16_1261064016.27984")
+.sub "_block88"  :anon :subid("17_1266337348.54616") :outer("16_1266337348.54616")
     .param pmc param_90
-.annotate "line", 499
+.annotate "line", 503
     .lex "$_", param_90
-.annotate "line", 500
+.annotate "line", 504
     find_lex $P95, "$_"
     find_lex $P96, "%capnames"
-    unless_null $P96, vivify_124
+    unless_null $P96, vivify_125
     new $P96, "Hash"
-  vivify_124:
+  vivify_125:
     set $P97, $P96[$P95]
-    unless_null $P97, vivify_125
+    unless_null $P97, vivify_126
     new $P97, "Undef"
-  vivify_125:
+  vivify_126:
     set $N98, $P97
     islt $I99, $N98, 2.0
     if $I99, if_94
@@ -8187,13 +8189,13 @@
   if_94:
     find_lex $P100, "$_"
     find_lex $P101, "%x"
-    unless_null $P101, vivify_126
+    unless_null $P101, vivify_127
     new $P101, "Hash"
-  vivify_126:
+  vivify_127:
     set $P102, $P101[$P100]
-    unless_null $P102, vivify_127
+    unless_null $P102, vivify_128
     new $P102, "Undef"
-  vivify_127:
+  vivify_128:
     set $N103, $P102
     iseq $I104, $N103, 1.0
     new $P93, 'Integer'
@@ -8209,36 +8211,36 @@
     assign $P105, 1
     set $P91, $P105
   if_92_end:
-.annotate "line", 501
+.annotate "line", 505
     find_lex $P107, "$_"
     find_lex $P108, "%capnames"
-    unless_null $P108, vivify_128
+    unless_null $P108, vivify_129
     new $P108, "Hash"
     store_lex "%capnames", $P108
-  vivify_128:
+  vivify_129:
     set $P108[$P107], $P91
-.annotate "line", 499
+.annotate "line", 503
     .return ($P91)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backmod"  :subid("27_1261064016.27984") :outer("11_1261064016.27984")
+.sub "backmod"  :subid("27_1266337348.54616") :outer("11_1266337348.54616")
     .param pmc param_311
     .param pmc param_312
-.annotate "line", 558
+.annotate "line", 562
     new $P310, 'ExceptionHandler'
     set_addr $P310, control_309
     $P310."handle_types"(58)
     push_eh $P310
     .lex "$ast", param_311
     .lex "$backmod", param_312
-.annotate "line", 559
+.annotate "line", 563
     find_lex $P314, "$backmod"
     set $S315, $P314
     iseq $I316, $S315, ":"
     if $I316, if_313
-.annotate "line", 560
+.annotate "line", 564
     find_lex $P321, "$backmod"
     set $S322, $P321
     iseq $I323, $S322, ":?"
@@ -8254,7 +8256,7 @@
     set $P319, $I326
   unless_320_end:
     if $P319, if_318
-.annotate "line", 561
+.annotate "line", 565
     find_lex $P331, "$backmod"
     set $S332, $P331
     iseq $I333, $S332, ":!"
@@ -8275,18 +8277,18 @@
   if_328_end:
     goto if_318_end
   if_318:
-.annotate "line", 560
+.annotate "line", 564
     find_lex $P327, "$ast"
     $P327."backtrack"("f")
   if_318_end:
     goto if_313_end
   if_313:
-.annotate "line", 559
+.annotate "line", 563
     find_lex $P317, "$ast"
     $P317."backtrack"("r")
   if_313_end:
     find_lex $P338, "$ast"
-.annotate "line", 558
+.annotate "line", 562
     .return ($P338)
   control_309:
     .local pmc exception 
@@ -8297,28 +8299,28 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "subrule_alias"  :subid("28_1261064016.27984") :outer("11_1261064016.27984")
+.sub "subrule_alias"  :subid("28_1266337348.54616") :outer("11_1266337348.54616")
     .param pmc param_343
     .param pmc param_344
-.annotate "line", 565
+.annotate "line", 569
     new $P342, 'ExceptionHandler'
     set_addr $P342, control_341
     $P342."handle_types"(58)
     push_eh $P342
     .lex "$past", param_343
     .lex "$name", param_344
-.annotate "line", 566
+.annotate "line", 570
     find_lex $P346, "$past"
     $S347 = $P346."name"()
     isgt $I348, $S347, ""
     if $I348, if_345
-.annotate "line", 567
+.annotate "line", 571
     find_lex $P355, "$past"
     find_lex $P356, "$name"
     $P355."name"($P356)
     goto if_345_end
   if_345:
-.annotate "line", 566
+.annotate "line", 570
     find_lex $P349, "$past"
     find_lex $P350, "$name"
     concat $P351, $P350, "="
@@ -8327,10 +8329,10 @@
     concat $P354, $P351, $S353
     $P349."name"($P354)
   if_345_end:
-.annotate "line", 568
+.annotate "line", 572
     find_lex $P357, "$past"
     $P358 = $P357."subtype"("capture")
-.annotate "line", 565
+.annotate "line", 569
     .return ($P358)
   control_341:
     .local pmc exception 
@@ -8341,7 +8343,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "arg"  :subid("29_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "arg"  :subid("29_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_365
 .annotate "line", 14
     new $P364, 'ExceptionHandler'
@@ -8353,35 +8355,35 @@
 .annotate "line", 15
     find_lex $P366, "$/"
     find_lex $P369, "$/"
-    unless_null $P369, vivify_134
+    unless_null $P369, vivify_135
     new $P369, "Hash"
-  vivify_134:
+  vivify_135:
     set $P370, $P369["quote_EXPR"]
-    unless_null $P370, vivify_135
+    unless_null $P370, vivify_136
     new $P370, "Undef"
-  vivify_135:
+  vivify_136:
     if $P370, if_368
     find_lex $P374, "$/"
-    unless_null $P374, vivify_136
+    unless_null $P374, vivify_137
     new $P374, "Hash"
-  vivify_136:
+  vivify_137:
     set $P375, $P374["val"]
-    unless_null $P375, vivify_137
+    unless_null $P375, vivify_138
     new $P375, "Undef"
-  vivify_137:
+  vivify_138:
     set $N376, $P375
     new $P367, 'Float'
     set $P367, $N376
     goto if_368_end
   if_368:
     find_lex $P371, "$/"
-    unless_null $P371, vivify_138
+    unless_null $P371, vivify_139
     new $P371, "Hash"
-  vivify_138:
+  vivify_139:
     set $P372, $P371["quote_EXPR"]
-    unless_null $P372, vivify_139
+    unless_null $P372, vivify_140
     new $P372, "Undef"
-  vivify_139:
+  vivify_140:
     $P373 = $P372."ast"()
     set $P367, $P373
   if_368_end:
@@ -8397,10 +8399,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "arglist"  :subid("30_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "arglist"  :subid("30_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_382
 .annotate "line", 18
-    .const 'Sub' $P392 = "31_1261064016.27984" 
+    .const 'Sub' $P392 = "31_1266337348.54616" 
     capture_lex $P392
     new $P381, 'ExceptionHandler'
     set_addr $P381, control_380
@@ -8416,15 +8418,15 @@
     store_lex "$past", $P385
 .annotate "line", 20
     find_lex $P387, "$/"
-    unless_null $P387, vivify_140
+    unless_null $P387, vivify_141
     new $P387, "Hash"
-  vivify_140:
+  vivify_141:
     set $P388, $P387["arg"]
-    unless_null $P388, vivify_141
+    unless_null $P388, vivify_142
     new $P388, "Undef"
-  vivify_141:
+  vivify_142:
     defined $I389, $P388
-    unless $I389, for_undef_142
+    unless $I389, for_undef_143
     iter $P386, $P388
     new $P399, 'ExceptionHandler'
     set_addr $P399, loop398_handler
@@ -8434,7 +8436,7 @@
     unless $P386, loop398_done
     shift $P390, $P386
   loop398_redo:
-    .const 'Sub' $P392 = "31_1261064016.27984" 
+    .const 'Sub' $P392 = "31_1266337348.54616" 
     capture_lex $P392
     $P392($P390)
   loop398_next:
@@ -8447,7 +8449,7 @@
     eq $P400, 67, loop398_redo
   loop398_done:
     pop_eh 
-  for_undef_142:
+  for_undef_143:
 .annotate "line", 21
     find_lex $P401, "$/"
     find_lex $P402, "$past"
@@ -8463,7 +8465,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block391"  :anon :subid("31_1261064016.27984") :outer("30_1261064016.27984")
+.sub "_block391"  :anon :subid("31_1266337348.54616") :outer("30_1266337348.54616")
     .param pmc param_393
 .annotate "line", 20
     .lex "$_", param_393
@@ -8476,7 +8478,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "TOP"  :subid("32_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "TOP"  :subid("32_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_408
 .annotate "line", 24
     new $P407, 'ExceptionHandler'
@@ -8489,13 +8491,13 @@
     new $P409, "Undef"
     .lex "$past", $P409
     find_lex $P410, "$/"
-    unless_null $P410, vivify_143
+    unless_null $P410, vivify_144
     new $P410, "Hash"
-  vivify_143:
+  vivify_144:
     set $P411, $P410["nibbler"]
-    unless_null $P411, vivify_144
+    unless_null $P411, vivify_145
     new $P411, "Undef"
-  vivify_144:
+  vivify_145:
     $P412 = $P411."ast"()
     $P413 = "buildsub"($P412)
     store_lex "$past", $P413
@@ -8518,14 +8520,14 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "nibbler"  :subid("33_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "nibbler"  :subid("33_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_423
     .param pmc param_424 :optional
     .param int has_param_424 :opt_flag
 .annotate "line", 30
-    .const 'Sub' $P458 = "35_1261064016.27984" 
+    .const 'Sub' $P458 = "35_1266337348.54616" 
     capture_lex $P458
-    .const 'Sub' $P432 = "34_1261064016.27984" 
+    .const 'Sub' $P432 = "34_1266337348.54616" 
     capture_lex $P432
     new $P422, 'ExceptionHandler'
     set_addr $P422, control_421
@@ -8533,10 +8535,10 @@
     push_eh $P422
     .lex "self", self
     .lex "$/", param_423
-    if has_param_424, optparam_145
+    if has_param_424, optparam_146
     new $P425, "Undef"
     set param_424, $P425
-  optparam_145:
+  optparam_146:
     .lex "$key", param_424
 .annotate "line", 42
     new $P426, "Undef"
@@ -8546,7 +8548,7 @@
     set $S429, $P428
     iseq $I430, $S429, "open"
     unless $I430, if_427_end
-    .const 'Sub' $P432 = "34_1261064016.27984" 
+    .const 'Sub' $P432 = "34_1266337348.54616" 
     capture_lex $P432
     $P432()
   if_427_end:
@@ -8556,29 +8558,29 @@
     find_lex $P443, "$past"
 .annotate "line", 43
     find_lex $P445, "$/"
-    unless_null $P445, vivify_148
+    unless_null $P445, vivify_149
     new $P445, "Hash"
-  vivify_148:
+  vivify_149:
     set $P446, $P445["termish"]
-    unless_null $P446, vivify_149
+    unless_null $P446, vivify_150
     new $P446, "Undef"
-  vivify_149:
+  vivify_150:
     set $N447, $P446
     isgt $I448, $N447, 1.0
     if $I448, if_444
 .annotate "line", 50
     find_lex $P467, "$/"
-    unless_null $P467, vivify_150
+    unless_null $P467, vivify_151
     new $P467, "Hash"
-  vivify_150:
+  vivify_151:
     set $P468, $P467["termish"]
-    unless_null $P468, vivify_151
+    unless_null $P468, vivify_152
     new $P468, "ResizablePMCArray"
-  vivify_151:
+  vivify_152:
     set $P469, $P468[0]
-    unless_null $P469, vivify_152
+    unless_null $P469, vivify_153
     new $P469, "Undef"
-  vivify_152:
+  vivify_153:
     $P470 = $P469."ast"()
     store_lex "$past", $P470
 .annotate "line", 49
@@ -8591,15 +8593,15 @@
     store_lex "$past", $P451
 .annotate "line", 45
     find_lex $P453, "$/"
-    unless_null $P453, vivify_153
+    unless_null $P453, vivify_154
     new $P453, "Hash"
-  vivify_153:
+  vivify_154:
     set $P454, $P453["termish"]
-    unless_null $P454, vivify_154
+    unless_null $P454, vivify_155
     new $P454, "Undef"
-  vivify_154:
+  vivify_155:
     defined $I455, $P454
-    unless $I455, for_undef_155
+    unless $I455, for_undef_156
     iter $P452, $P454
     new $P465, 'ExceptionHandler'
     set_addr $P465, loop464_handler
@@ -8609,7 +8611,7 @@
     unless $P452, loop464_done
     shift $P456, $P452
   loop464_redo:
-    .const 'Sub' $P458 = "35_1261064016.27984" 
+    .const 'Sub' $P458 = "35_1266337348.54616" 
     capture_lex $P458
     $P458($P456)
   loop464_next:
@@ -8622,7 +8624,7 @@
     eq $P466, 67, loop464_redo
   loop464_done:
     pop_eh 
-  for_undef_155:
+  for_undef_156:
   if_444_end:
 .annotate "line", 52
     find_lex $P471, "$/"
@@ -8639,7 +8641,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block431"  :anon :subid("34_1261064016.27984") :outer("33_1261064016.27984")
+.sub "_block431"  :anon :subid("34_1266337348.54616") :outer("33_1266337348.54616")
 .annotate "line", 32
     new $P433, "Hash"
     .lex "%old", $P433
@@ -8648,13 +8650,13 @@
     .lex "%new", $P434
 .annotate "line", 32
     get_global $P435, "@MODIFIERS"
-    unless_null $P435, vivify_146
+    unless_null $P435, vivify_147
     new $P435, "ResizablePMCArray"
-  vivify_146:
+  vivify_147:
     set $P436, $P435[0]
-    unless_null $P436, vivify_147
+    unless_null $P436, vivify_148
     new $P436, "Undef"
-  vivify_147:
+  vivify_148:
     store_lex "%old", $P436
 .annotate "line", 33
 
@@ -8679,7 +8681,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block457"  :anon :subid("35_1261064016.27984") :outer("33_1261064016.27984")
+.sub "_block457"  :anon :subid("35_1266337348.54616") :outer("33_1266337348.54616")
     .param pmc param_459
 .annotate "line", 45
     .lex "$_", param_459
@@ -8694,10 +8696,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "termish"  :subid("36_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "termish"  :subid("36_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_478
 .annotate "line", 55
-    .const 'Sub' $P491 = "37_1261064016.27984" 
+    .const 'Sub' $P491 = "37_1266337348.54616" 
     capture_lex $P491
     new $P477, 'ExceptionHandler'
     set_addr $P477, control_476
@@ -8722,15 +8724,15 @@
     store_lex "$lastlit", $P484
 .annotate "line", 58
     find_lex $P486, "$/"
-    unless_null $P486, vivify_156
+    unless_null $P486, vivify_157
     new $P486, "Hash"
-  vivify_156:
+  vivify_157:
     set $P487, $P486["noun"]
-    unless_null $P487, vivify_157
+    unless_null $P487, vivify_158
     new $P487, "Undef"
-  vivify_157:
+  vivify_158:
     defined $I488, $P487
-    unless $I488, for_undef_158
+    unless $I488, for_undef_159
     iter $P485, $P487
     new $P537, 'ExceptionHandler'
     set_addr $P537, loop536_handler
@@ -8740,7 +8742,7 @@
     unless $P485, loop536_done
     shift $P489, $P485
   loop536_redo:
-    .const 'Sub' $P491 = "37_1261064016.27984" 
+    .const 'Sub' $P491 = "37_1266337348.54616" 
     capture_lex $P491
     $P491($P489)
   loop536_next:
@@ -8753,7 +8755,7 @@
     eq $P538, 67, loop536_redo
   loop536_done:
     pop_eh 
-  for_undef_158:
+  for_undef_159:
 .annotate "line", 73
     find_lex $P539, "$/"
     find_lex $P540, "$past"
@@ -8769,7 +8771,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block490"  :anon :subid("37_1261064016.27984") :outer("36_1261064016.27984")
+.sub "_block490"  :anon :subid("37_1266337348.54616") :outer("36_1266337348.54616")
     .param pmc param_493
 .annotate "line", 59
     new $P492, "Undef"
@@ -8803,13 +8805,13 @@
 .annotate "line", 62
     get_hll_global $P509, ["PAST"], "Node"
     find_lex $P510, "$ast"
-    unless_null $P510, vivify_159
+    unless_null $P510, vivify_160
     new $P510, "ResizablePMCArray"
-  vivify_159:
+  vivify_160:
     set $P511, $P510[0]
-    unless_null $P511, vivify_160
+    unless_null $P511, vivify_161
     new $P511, "Undef"
-  vivify_160:
+  vivify_161:
     $P512 = $P509."ACCEPTS"($P511)
     isfalse $I513, $P512
     new $P501, 'Integer'
@@ -8832,13 +8834,13 @@
 .annotate "line", 68
     get_hll_global $P529, ["PAST"], "Node"
     find_lex $P530, "$ast"
-    unless_null $P530, vivify_161
+    unless_null $P530, vivify_162
     new $P530, "ResizablePMCArray"
-  vivify_161:
+  vivify_162:
     set $P531, $P530[0]
-    unless_null $P531, vivify_162
+    unless_null $P531, vivify_163
     new $P531, "Undef"
-  vivify_162:
+  vivify_163:
     $P532 = $P529."ACCEPTS"($P531)
     isfalse $I533, $P532
     new $P524, 'Integer'
@@ -8862,27 +8864,27 @@
   if_500:
 .annotate "line", 63
     find_lex $P514, "$lastlit"
-    unless_null $P514, vivify_163
+    unless_null $P514, vivify_164
     new $P514, "ResizablePMCArray"
-  vivify_163:
+  vivify_164:
     set $P515, $P514[0]
-    unless_null $P515, vivify_164
+    unless_null $P515, vivify_165
     new $P515, "Undef"
-  vivify_164:
+  vivify_165:
     find_lex $P516, "$ast"
-    unless_null $P516, vivify_165
+    unless_null $P516, vivify_166
     new $P516, "ResizablePMCArray"
-  vivify_165:
+  vivify_166:
     set $P517, $P516[0]
-    unless_null $P517, vivify_166
+    unless_null $P517, vivify_167
     new $P517, "Undef"
-  vivify_166:
+  vivify_167:
     concat $P518, $P515, $P517
     find_lex $P519, "$lastlit"
-    unless_null $P519, vivify_167
+    unless_null $P519, vivify_168
     new $P519, "ResizablePMCArray"
     store_lex "$lastlit", $P519
-  vivify_167:
+  vivify_168:
     set $P519[0], $P518
 .annotate "line", 62
     set $P499, $P518
@@ -8896,10 +8898,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantified_atom"  :subid("38_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "quantified_atom"  :subid("38_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_546
 .annotate "line", 76
-    .const 'Sub' $P555 = "39_1261064016.27984" 
+    .const 'Sub' $P555 = "39_1266337348.54616" 
     capture_lex $P555
     new $P545, 'ExceptionHandler'
     set_addr $P545, control_544
@@ -8911,58 +8913,58 @@
     new $P547, "Undef"
     .lex "$past", $P547
     find_lex $P548, "$/"
-    unless_null $P548, vivify_168
+    unless_null $P548, vivify_169
     new $P548, "Hash"
-  vivify_168:
+  vivify_169:
     set $P549, $P548["atom"]
-    unless_null $P549, vivify_169
+    unless_null $P549, vivify_170
     new $P549, "Undef"
-  vivify_169:
+  vivify_170:
     $P550 = $P549."ast"()
     store_lex "$past", $P550
 .annotate "line", 78
     find_lex $P552, "$/"
-    unless_null $P552, vivify_170
+    unless_null $P552, vivify_171
     new $P552, "Hash"
-  vivify_170:
+  vivify_171:
     set $P553, $P552["quantifier"]
-    unless_null $P553, vivify_171
+    unless_null $P553, vivify_172
     new $P553, "Undef"
-  vivify_171:
+  vivify_172:
     if $P553, if_551
 .annotate "line", 84
     find_lex $P569, "$/"
-    unless_null $P569, vivify_172
+    unless_null $P569, vivify_173
     new $P569, "Hash"
-  vivify_172:
+  vivify_173:
     set $P570, $P569["backmod"]
-    unless_null $P570, vivify_173
+    unless_null $P570, vivify_174
     new $P570, "ResizablePMCArray"
-  vivify_173:
+  vivify_174:
     set $P571, $P570[0]
-    unless_null $P571, vivify_174
+    unless_null $P571, vivify_175
     new $P571, "Undef"
-  vivify_174:
+  vivify_175:
     unless $P571, if_568_end
     find_lex $P572, "$past"
     find_lex $P573, "$/"
-    unless_null $P573, vivify_175
+    unless_null $P573, vivify_176
     new $P573, "Hash"
-  vivify_175:
+  vivify_176:
     set $P574, $P573["backmod"]
-    unless_null $P574, vivify_176
+    unless_null $P574, vivify_177
     new $P574, "ResizablePMCArray"
-  vivify_176:
+  vivify_177:
     set $P575, $P574[0]
-    unless_null $P575, vivify_177
+    unless_null $P575, vivify_178
     new $P575, "Undef"
-  vivify_177:
+  vivify_178:
     "backmod"($P572, $P575)
   if_568_end:
     goto if_551_end
   if_551:
 .annotate "line", 78
-    .const 'Sub' $P555 = "39_1261064016.27984" 
+    .const 'Sub' $P555 = "39_1266337348.54616" 
     capture_lex $P555
     $P555()
   if_551_end:
@@ -8983,17 +8985,17 @@
     goto if_578_end
   if_578:
     get_global $P585, "@MODIFIERS"
-    unless_null $P585, vivify_181
+    unless_null $P585, vivify_182
     new $P585, "ResizablePMCArray"
-  vivify_181:
+  vivify_182:
     set $P586, $P585[0]
-    unless_null $P586, vivify_182
+    unless_null $P586, vivify_183
     new $P586, "Hash"
-  vivify_182:
+  vivify_183:
     set $P587, $P586["r"]
-    unless_null $P587, vivify_183
+    unless_null $P587, vivify_184
     new $P587, "Undef"
-  vivify_183:
+  vivify_184:
     set $P577, $P587
   if_578_end:
     unless $P577, if_576_end
@@ -9016,7 +9018,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block554"  :anon :subid("39_1261064016.27984") :outer("38_1261064016.27984")
+.sub "_block554"  :anon :subid("39_1266337348.54616") :outer("38_1266337348.54616")
 .annotate "line", 80
     new $P556, "Undef"
     .lex "$qast", $P556
@@ -9029,17 +9031,17 @@
   if_557_end:
 .annotate "line", 80
     find_lex $P561, "$/"
-    unless_null $P561, vivify_178
+    unless_null $P561, vivify_179
     new $P561, "Hash"
-  vivify_178:
+  vivify_179:
     set $P562, $P561["quantifier"]
-    unless_null $P562, vivify_179
+    unless_null $P562, vivify_180
     new $P562, "ResizablePMCArray"
-  vivify_179:
+  vivify_180:
     set $P563, $P562[0]
-    unless_null $P563, vivify_180
+    unless_null $P563, vivify_181
     new $P563, "Undef"
-  vivify_180:
+  vivify_181:
     $P564 = $P563."ast"()
     store_lex "$qast", $P564
 .annotate "line", 81
@@ -9055,7 +9057,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "atom"  :subid("40_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "atom"  :subid("40_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_596
 .annotate "line", 91
     new $P595, 'ExceptionHandler'
@@ -9071,13 +9073,13 @@
     find_lex $P598, "$past"
 .annotate "line", 93
     find_lex $P600, "$/"
-    unless_null $P600, vivify_184
+    unless_null $P600, vivify_185
     new $P600, "Hash"
-  vivify_184:
+  vivify_185:
     set $P601, $P600["metachar"]
-    unless_null $P601, vivify_185
+    unless_null $P601, vivify_186
     new $P601, "Undef"
-  vivify_185:
+  vivify_186:
     if $P601, if_599
 .annotate "line", 95
     get_hll_global $P605, ["PAST"], "Regex"
@@ -9088,17 +9090,17 @@
     store_lex "$past", $P609
 .annotate "line", 96
     get_global $P611, "@MODIFIERS"
-    unless_null $P611, vivify_186
+    unless_null $P611, vivify_187
     new $P611, "ResizablePMCArray"
-  vivify_186:
+  vivify_187:
     set $P612, $P611[0]
-    unless_null $P612, vivify_187
+    unless_null $P612, vivify_188
     new $P612, "Hash"
-  vivify_187:
+  vivify_188:
     set $P613, $P612["i"]
-    unless_null $P613, vivify_188
+    unless_null $P613, vivify_189
     new $P613, "Undef"
-  vivify_188:
+  vivify_189:
     unless $P613, if_610_end
     find_lex $P614, "$past"
     $P614."subtype"("ignorecase")
@@ -9108,13 +9110,13 @@
   if_599:
 .annotate "line", 93
     find_lex $P602, "$/"
-    unless_null $P602, vivify_189
+    unless_null $P602, vivify_190
     new $P602, "Hash"
-  vivify_189:
+  vivify_190:
     set $P603, $P602["metachar"]
-    unless_null $P603, vivify_190
+    unless_null $P603, vivify_191
     new $P603, "Undef"
-  vivify_190:
+  vivify_191:
     $P604 = $P603."ast"()
     store_lex "$past", $P604
   if_599_end:
@@ -9133,7 +9135,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<*>"  :subid("41_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "quantifier:sym<*>"  :subid("41_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_622
 .annotate "line", 101
     new $P621, 'ExceptionHandler'
@@ -9153,13 +9155,13 @@
     find_lex $P627, "$/"
     find_lex $P628, "$past"
     find_lex $P629, "$/"
-    unless_null $P629, vivify_191
+    unless_null $P629, vivify_192
     new $P629, "Hash"
-  vivify_191:
+  vivify_192:
     set $P630, $P629["backmod"]
-    unless_null $P630, vivify_192
+    unless_null $P630, vivify_193
     new $P630, "Undef"
-  vivify_192:
+  vivify_193:
     $P631 = "backmod"($P628, $P630)
     $P632 = $P627."!make"($P631)
 .annotate "line", 101
@@ -9173,7 +9175,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<+>"  :subid("42_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "quantifier:sym<+>"  :subid("42_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_637
 .annotate "line", 106
     new $P636, 'ExceptionHandler'
@@ -9193,13 +9195,13 @@
     find_lex $P642, "$/"
     find_lex $P643, "$past"
     find_lex $P644, "$/"
-    unless_null $P644, vivify_193
+    unless_null $P644, vivify_194
     new $P644, "Hash"
-  vivify_193:
+  vivify_194:
     set $P645, $P644["backmod"]
-    unless_null $P645, vivify_194
+    unless_null $P645, vivify_195
     new $P645, "Undef"
-  vivify_194:
+  vivify_195:
     $P646 = "backmod"($P643, $P645)
     $P647 = $P642."!make"($P646)
 .annotate "line", 106
@@ -9213,7 +9215,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<?>"  :subid("43_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "quantifier:sym<?>"  :subid("43_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_652
 .annotate "line", 111
     new $P651, 'ExceptionHandler'
@@ -9233,13 +9235,13 @@
     find_lex $P657, "$/"
     find_lex $P658, "$past"
     find_lex $P659, "$/"
-    unless_null $P659, vivify_195
+    unless_null $P659, vivify_196
     new $P659, "Hash"
-  vivify_195:
+  vivify_196:
     set $P660, $P659["backmod"]
-    unless_null $P660, vivify_196
+    unless_null $P660, vivify_197
     new $P660, "Undef"
-  vivify_196:
+  vivify_197:
     $P661 = "backmod"($P658, $P660)
     $P657."!make"($P661)
 .annotate "line", 114
@@ -9257,7 +9259,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "quantifier:sym<**>"  :subid("44_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "quantifier:sym<**>"  :subid("44_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_669
 .annotate "line", 117
     new $P668, 'ExceptionHandler'
@@ -9273,68 +9275,68 @@
     find_lex $P671, "$past"
 .annotate "line", 119
     find_lex $P673, "$/"
-    unless_null $P673, vivify_197
+    unless_null $P673, vivify_198
     new $P673, "Hash"
-  vivify_197:
+  vivify_198:
     set $P674, $P673["quantified_atom"]
-    unless_null $P674, vivify_198
+    unless_null $P674, vivify_199
     new $P674, "Undef"
-  vivify_198:
+  vivify_199:
     if $P674, if_672
 .annotate "line", 124
     get_hll_global $P681, ["PAST"], "Regex"
     find_lex $P682, "$/"
-    unless_null $P682, vivify_199
+    unless_null $P682, vivify_200
     new $P682, "Hash"
-  vivify_199:
+  vivify_200:
     set $P683, $P682["min"]
-    unless_null $P683, vivify_200
+    unless_null $P683, vivify_201
     new $P683, "Undef"
-  vivify_200:
+  vivify_201:
     set $N684, $P683
     find_lex $P685, "$/"
     $P686 = $P681."new"("quant" :named("pasttype"), $N684 :named("min"), $P685 :named("node"))
     store_lex "$past", $P686
 .annotate "line", 125
     find_lex $P688, "$/"
-    unless_null $P688, vivify_201
+    unless_null $P688, vivify_202
     new $P688, "Hash"
-  vivify_201:
+  vivify_202:
     set $P689, $P688["max"]
-    unless_null $P689, vivify_202
+    unless_null $P689, vivify_203
     new $P689, "Undef"
-  vivify_202:
+  vivify_203:
     isfalse $I690, $P689
     if $I690, if_687
 .annotate "line", 126
     find_lex $P696, "$/"
-    unless_null $P696, vivify_203
+    unless_null $P696, vivify_204
     new $P696, "Hash"
-  vivify_203:
+  vivify_204:
     set $P697, $P696["max"]
-    unless_null $P697, vivify_204
+    unless_null $P697, vivify_205
     new $P697, "ResizablePMCArray"
-  vivify_204:
+  vivify_205:
     set $P698, $P697[0]
-    unless_null $P698, vivify_205
+    unless_null $P698, vivify_206
     new $P698, "Undef"
-  vivify_205:
+  vivify_206:
     set $S699, $P698
     isne $I700, $S699, "*"
     unless $I700, if_695_end
     find_lex $P701, "$past"
     find_lex $P702, "$/"
-    unless_null $P702, vivify_206
+    unless_null $P702, vivify_207
     new $P702, "Hash"
-  vivify_206:
+  vivify_207:
     set $P703, $P702["max"]
-    unless_null $P703, vivify_207
+    unless_null $P703, vivify_208
     new $P703, "ResizablePMCArray"
-  vivify_207:
+  vivify_208:
     set $P704, $P703[0]
-    unless_null $P704, vivify_208
+    unless_null $P704, vivify_209
     new $P704, "Undef"
-  vivify_208:
+  vivify_209:
     set $N705, $P704
     $P701."max"($N705)
   if_695_end:
@@ -9343,13 +9345,13 @@
 .annotate "line", 125
     find_lex $P691, "$past"
     find_lex $P692, "$/"
-    unless_null $P692, vivify_209
+    unless_null $P692, vivify_210
     new $P692, "Hash"
-  vivify_209:
+  vivify_210:
     set $P693, $P692["min"]
-    unless_null $P693, vivify_210
+    unless_null $P693, vivify_211
     new $P693, "Undef"
-  vivify_210:
+  vivify_211:
     set $N694, $P693
     $P691."max"($N694)
   if_687_end:
@@ -9360,13 +9362,13 @@
     get_hll_global $P675, ["PAST"], "Regex"
 .annotate "line", 121
     find_lex $P676, "$/"
-    unless_null $P676, vivify_211
+    unless_null $P676, vivify_212
     new $P676, "Hash"
-  vivify_211:
+  vivify_212:
     set $P677, $P676["quantified_atom"]
-    unless_null $P677, vivify_212
+    unless_null $P677, vivify_213
     new $P677, "Undef"
-  vivify_212:
+  vivify_213:
     $P678 = $P677."ast"()
     find_lex $P679, "$/"
     $P680 = $P675."new"("quant" :named("pasttype"), 1 :named("min"), $P678 :named("sep"), $P679 :named("node"))
@@ -9377,13 +9379,13 @@
     find_lex $P706, "$/"
     find_lex $P707, "$past"
     find_lex $P708, "$/"
-    unless_null $P708, vivify_213
+    unless_null $P708, vivify_214
     new $P708, "Hash"
-  vivify_213:
+  vivify_214:
     set $P709, $P708["backmod"]
-    unless_null $P709, vivify_214
+    unless_null $P709, vivify_215
     new $P709, "Undef"
-  vivify_214:
+  vivify_215:
     $P710 = "backmod"($P707, $P709)
     $P711 = $P706."!make"($P710)
 .annotate "line", 117
@@ -9397,7 +9399,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<ws>"  :subid("45_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "metachar:sym<ws>"  :subid("45_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_716
 .annotate "line", 131
     new $P715, 'ExceptionHandler'
@@ -9411,17 +9413,17 @@
     .lex "$past", $P717
 .annotate "line", 133
     get_global $P720, "@MODIFIERS"
-    unless_null $P720, vivify_215
+    unless_null $P720, vivify_216
     new $P720, "ResizablePMCArray"
-  vivify_215:
+  vivify_216:
     set $P721, $P720[0]
-    unless_null $P721, vivify_216
+    unless_null $P721, vivify_217
     new $P721, "Hash"
-  vivify_216:
+  vivify_217:
     set $P722, $P721["s"]
-    unless_null $P722, vivify_217
+    unless_null $P722, vivify_218
     new $P722, "Undef"
-  vivify_217:
+  vivify_218:
     if $P722, if_719
     new $P726, "Integer"
     assign $P726, 0
@@ -9449,7 +9451,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<[ ]>"  :subid("46_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "metachar:sym<[ ]>"  :subid("46_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_734
 .annotate "line", 140
     new $P733, 'ExceptionHandler'
@@ -9461,13 +9463,13 @@
 .annotate "line", 141
     find_lex $P735, "$/"
     find_lex $P736, "$/"
-    unless_null $P736, vivify_218
+    unless_null $P736, vivify_219
     new $P736, "Hash"
-  vivify_218:
+  vivify_219:
     set $P737, $P736["nibbler"]
-    unless_null $P737, vivify_219
+    unless_null $P737, vivify_220
     new $P737, "Undef"
-  vivify_219:
+  vivify_220:
     $P738 = $P737."ast"()
     $P739 = $P735."!make"($P738)
 .annotate "line", 140
@@ -9481,7 +9483,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<( )>"  :subid("47_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "metachar:sym<( )>"  :subid("47_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_744
 .annotate "line", 144
     new $P743, 'ExceptionHandler'
@@ -9498,13 +9500,13 @@
     .lex "$past", $P746
 .annotate "line", 145
     find_lex $P747, "$/"
-    unless_null $P747, vivify_220
+    unless_null $P747, vivify_221
     new $P747, "Hash"
-  vivify_220:
+  vivify_221:
     set $P748, $P747["nibbler"]
-    unless_null $P748, vivify_221
+    unless_null $P748, vivify_222
     new $P748, "Undef"
-  vivify_221:
+  vivify_222:
     $P749 = $P748."ast"()
     $P750 = "buildsub"($P749)
     store_lex "$subpast", $P750
@@ -9529,7 +9531,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<'>"  :subid("48_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "metachar:sym<'>"  :subid("48_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_762
 .annotate "line", 151
     new $P761, 'ExceptionHandler'
@@ -9546,13 +9548,13 @@
     .lex "$past", $P764
 .annotate "line", 152
     find_lex $P765, "$/"
-    unless_null $P765, vivify_222
+    unless_null $P765, vivify_223
     new $P765, "Hash"
-  vivify_222:
+  vivify_223:
     set $P766, $P765["quote_EXPR"]
-    unless_null $P766, vivify_223
+    unless_null $P766, vivify_224
     new $P766, "Undef"
-  vivify_223:
+  vivify_224:
     $P767 = $P766."ast"()
     store_lex "$quote", $P767
 .annotate "line", 153
@@ -9585,7 +9587,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<\">"  :subid("49_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "metachar:sym<\">"  :subid("49_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_785
 .annotate "line", 158
     new $P784, 'ExceptionHandler'
@@ -9602,13 +9604,13 @@
     .lex "$past", $P787
 .annotate "line", 159
     find_lex $P788, "$/"
-    unless_null $P788, vivify_224
+    unless_null $P788, vivify_225
     new $P788, "Hash"
-  vivify_224:
+  vivify_225:
     set $P789, $P788["quote_EXPR"]
-    unless_null $P789, vivify_225
+    unless_null $P789, vivify_226
     new $P789, "Undef"
-  vivify_225:
+  vivify_226:
     $P790 = $P789."ast"()
     store_lex "$quote", $P790
 .annotate "line", 160
@@ -9641,7 +9643,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<.>"  :subid("50_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "metachar:sym<.>"  :subid("50_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_808
 .annotate "line", 165
     new $P807, 'ExceptionHandler'
@@ -9672,7 +9674,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<^>"  :subid("51_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "metachar:sym<^>"  :subid("51_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_820
 .annotate "line", 170
     new $P819, 'ExceptionHandler'
@@ -9703,7 +9705,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<^^>"  :subid("52_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "metachar:sym<^^>"  :subid("52_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_832
 .annotate "line", 175
     new $P831, 'ExceptionHandler'
@@ -9734,7 +9736,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<$>"  :subid("53_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "metachar:sym<$>"  :subid("53_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_844
 .annotate "line", 180
     new $P843, 'ExceptionHandler'
@@ -9765,7 +9767,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<$$>"  :subid("54_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "metachar:sym<$$>"  :subid("54_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_856
 .annotate "line", 185
     new $P855, 'ExceptionHandler'
@@ -9796,7 +9798,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<:::>"  :subid("55_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "metachar:sym<:::>"  :subid("55_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_868
 .annotate "line", 190
     new $P867, 'ExceptionHandler'
@@ -9827,7 +9829,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<lwb>"  :subid("56_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "metachar:sym<lwb>"  :subid("56_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_880
 .annotate "line", 195
     new $P879, 'ExceptionHandler'
@@ -9858,7 +9860,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<rwb>"  :subid("57_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "metachar:sym<rwb>"  :subid("57_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_892
 .annotate "line", 200
     new $P891, 'ExceptionHandler'
@@ -9889,7 +9891,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<bs>"  :subid("58_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "metachar:sym<bs>"  :subid("58_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_904
 .annotate "line", 205
     new $P903, 'ExceptionHandler'
@@ -9901,13 +9903,13 @@
 .annotate "line", 206
     find_lex $P905, "$/"
     find_lex $P906, "$/"
-    unless_null $P906, vivify_226
+    unless_null $P906, vivify_227
     new $P906, "Hash"
-  vivify_226:
+  vivify_227:
     set $P907, $P906["backslash"]
-    unless_null $P907, vivify_227
+    unless_null $P907, vivify_228
     new $P907, "Undef"
-  vivify_227:
+  vivify_228:
     $P908 = $P907."ast"()
     $P909 = $P905."!make"($P908)
 .annotate "line", 205
@@ -9921,7 +9923,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<mod>"  :subid("59_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "metachar:sym<mod>"  :subid("59_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_914
 .annotate "line", 209
     new $P913, 'ExceptionHandler'
@@ -9933,13 +9935,13 @@
 .annotate "line", 210
     find_lex $P915, "$/"
     find_lex $P916, "$/"
-    unless_null $P916, vivify_228
+    unless_null $P916, vivify_229
     new $P916, "Hash"
-  vivify_228:
+  vivify_229:
     set $P917, $P916["mod_internal"]
-    unless_null $P917, vivify_229
+    unless_null $P917, vivify_230
     new $P917, "Undef"
-  vivify_229:
+  vivify_230:
     $P918 = $P917."ast"()
     $P919 = $P915."!make"($P918)
 .annotate "line", 209
@@ -9953,7 +9955,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<assert>"  :subid("60_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "metachar:sym<assert>"  :subid("60_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_924
 .annotate "line", 213
     new $P923, 'ExceptionHandler'
@@ -9965,13 +9967,13 @@
 .annotate "line", 214
     find_lex $P925, "$/"
     find_lex $P926, "$/"
-    unless_null $P926, vivify_230
+    unless_null $P926, vivify_231
     new $P926, "Hash"
-  vivify_230:
+  vivify_231:
     set $P927, $P926["assertion"]
-    unless_null $P927, vivify_231
+    unless_null $P927, vivify_232
     new $P927, "Undef"
-  vivify_231:
+  vivify_232:
     $P928 = $P927."ast"()
     $P929 = $P925."!make"($P928)
 .annotate "line", 213
@@ -9985,7 +9987,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<~>"  :subid("61_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "metachar:sym<~>"  :subid("61_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_934
 .annotate "line", 217
     new $P933, 'ExceptionHandler'
@@ -9999,36 +10001,36 @@
     get_hll_global $P936, ["PAST"], "Regex"
 .annotate "line", 219
     find_lex $P937, "$/"
-    unless_null $P937, vivify_232
+    unless_null $P937, vivify_233
     new $P937, "Hash"
-  vivify_232:
+  vivify_233:
     set $P938, $P937["EXPR"]
-    unless_null $P938, vivify_233
+    unless_null $P938, vivify_234
     new $P938, "Undef"
-  vivify_233:
+  vivify_234:
     $P939 = $P938."ast"()
 .annotate "line", 220
     get_hll_global $P940, ["PAST"], "Regex"
 .annotate "line", 221
     find_lex $P941, "$/"
-    unless_null $P941, vivify_234
+    unless_null $P941, vivify_235
     new $P941, "Hash"
-  vivify_234:
+  vivify_235:
     set $P942, $P941["GOAL"]
-    unless_null $P942, vivify_235
+    unless_null $P942, vivify_236
     new $P942, "Undef"
-  vivify_235:
+  vivify_236:
     $P943 = $P942."ast"()
 .annotate "line", 222
     get_hll_global $P944, ["PAST"], "Regex"
     find_lex $P945, "$/"
-    unless_null $P945, vivify_236
+    unless_null $P945, vivify_237
     new $P945, "Hash"
-  vivify_236:
+  vivify_237:
     set $P946, $P945["GOAL"]
-    unless_null $P946, vivify_237
+    unless_null $P946, vivify_238
     new $P946, "Undef"
-  vivify_237:
+  vivify_238:
     set $S947, $P946
     $P948 = $P944."new"("FAILGOAL", $S947, "subrule" :named("pasttype"), "method" :named("subtype"))
     $P949 = $P940."new"($P943, $P948, "alt" :named("pasttype"))
@@ -10047,7 +10049,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<{*}>"  :subid("62_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "metachar:sym<{*}>"  :subid("62_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_956
 .annotate "line", 230
     new $P955, 'ExceptionHandler'
@@ -10061,13 +10063,13 @@
     .lex "$past", $P957
 .annotate "line", 232
     find_lex $P960, "$/"
-    unless_null $P960, vivify_238
+    unless_null $P960, vivify_239
     new $P960, "Hash"
-  vivify_238:
+  vivify_239:
     set $P961, $P960["key"]
-    unless_null $P961, vivify_239
+    unless_null $P961, vivify_240
     new $P961, "Undef"
-  vivify_239:
+  vivify_240:
     if $P961, if_959
     new $P969, "Integer"
     assign $P969, 0
@@ -10076,17 +10078,17 @@
   if_959:
     get_hll_global $P962, ["PAST"], "Regex"
     find_lex $P963, "$/"
-    unless_null $P963, vivify_240
+    unless_null $P963, vivify_241
     new $P963, "Hash"
-  vivify_240:
+  vivify_241:
     set $P964, $P963["key"]
-    unless_null $P964, vivify_241
+    unless_null $P964, vivify_242
     new $P964, "ResizablePMCArray"
-  vivify_241:
+  vivify_242:
     set $P965, $P964[0]
-    unless_null $P965, vivify_242
+    unless_null $P965, vivify_243
     new $P965, "Undef"
-  vivify_242:
+  vivify_243:
     set $S966, $P965
     find_lex $P967, "$/"
     $P968 = $P962."new"($S966, "reduce" :named("pasttype"), $P967 :named("node"))
@@ -10108,7 +10110,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<var>"  :subid("63_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "metachar:sym<var>"  :subid("63_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_977
 .annotate "line", 237
     new $P976, 'ExceptionHandler'
@@ -10127,35 +10129,35 @@
     find_lex $P980, "$past"
 .annotate "line", 239
     find_lex $P983, "$/"
-    unless_null $P983, vivify_243
+    unless_null $P983, vivify_244
     new $P983, "Hash"
-  vivify_243:
+  vivify_244:
     set $P984, $P983["pos"]
-    unless_null $P984, vivify_244
+    unless_null $P984, vivify_245
     new $P984, "Undef"
-  vivify_244:
+  vivify_245:
     if $P984, if_982
     find_lex $P988, "$/"
-    unless_null $P988, vivify_245
+    unless_null $P988, vivify_246
     new $P988, "Hash"
-  vivify_245:
+  vivify_246:
     set $P989, $P988["name"]
-    unless_null $P989, vivify_246
+    unless_null $P989, vivify_247
     new $P989, "Undef"
-  vivify_246:
+  vivify_247:
     set $S990, $P989
     new $P981, 'String'
     set $P981, $S990
     goto if_982_end
   if_982:
     find_lex $P985, "$/"
-    unless_null $P985, vivify_247
+    unless_null $P985, vivify_248
     new $P985, "Hash"
-  vivify_247:
+  vivify_248:
     set $P986, $P985["pos"]
-    unless_null $P986, vivify_248
+    unless_null $P986, vivify_249
     new $P986, "Undef"
-  vivify_248:
+  vivify_249:
     set $N987, $P986
     new $P981, 'Float'
     set $P981, $N987
@@ -10163,13 +10165,13 @@
     store_lex "$name", $P981
 .annotate "line", 240
     find_lex $P992, "$/"
-    unless_null $P992, vivify_249
+    unless_null $P992, vivify_250
     new $P992, "Hash"
-  vivify_249:
+  vivify_250:
     set $P993, $P992["quantified_atom"]
-    unless_null $P993, vivify_250
+    unless_null $P993, vivify_251
     new $P993, "Undef"
-  vivify_250:
+  vivify_251:
     if $P993, if_991
 .annotate "line", 251
     get_hll_global $P1022, ["PAST"], "Regex"
@@ -10182,17 +10184,17 @@
   if_991:
 .annotate "line", 241
     find_lex $P994, "$/"
-    unless_null $P994, vivify_251
+    unless_null $P994, vivify_252
     new $P994, "Hash"
-  vivify_251:
+  vivify_252:
     set $P995, $P994["quantified_atom"]
-    unless_null $P995, vivify_252
+    unless_null $P995, vivify_253
     new $P995, "ResizablePMCArray"
-  vivify_252:
+  vivify_253:
     set $P996, $P995[0]
-    unless_null $P996, vivify_253
+    unless_null $P996, vivify_254
     new $P996, "Undef"
-  vivify_253:
+  vivify_254:
     $P997 = $P996."ast"()
     store_lex "$past", $P997
 .annotate "line", 242
@@ -10205,13 +10207,13 @@
     goto if_1000_end
   if_1000:
     find_lex $P1004, "$past"
-    unless_null $P1004, vivify_254
+    unless_null $P1004, vivify_255
     new $P1004, "ResizablePMCArray"
-  vivify_254:
+  vivify_255:
     set $P1005, $P1004[0]
-    unless_null $P1005, vivify_255
+    unless_null $P1005, vivify_256
     new $P1005, "Undef"
-  vivify_255:
+  vivify_256:
     $S1006 = $P1005."pasttype"()
     iseq $I1007, $S1006, "subrule"
     new $P999, 'Integer'
@@ -10242,13 +10244,13 @@
   if_998:
 .annotate "line", 243
     find_lex $P1008, "$past"
-    unless_null $P1008, vivify_256
+    unless_null $P1008, vivify_257
     new $P1008, "ResizablePMCArray"
-  vivify_256:
+  vivify_257:
     set $P1009, $P1008[0]
-    unless_null $P1009, vivify_257
+    unless_null $P1009, vivify_258
     new $P1009, "Undef"
-  vivify_257:
+  vivify_258:
     find_lex $P1010, "$name"
     "subrule_alias"($P1009, $P1010)
   if_998_end:
@@ -10268,7 +10270,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "metachar:sym<PIR>"  :subid("64_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "metachar:sym<PIR>"  :subid("64_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_1033
 .annotate "line", 257
     new $P1032, 'ExceptionHandler'
@@ -10283,13 +10285,13 @@
 .annotate "line", 259
     get_hll_global $P1036, ["PAST"], "Op"
     find_lex $P1037, "$/"
-    unless_null $P1037, vivify_258
+    unless_null $P1037, vivify_259
     new $P1037, "Hash"
-  vivify_258:
+  vivify_259:
     set $P1038, $P1037["pir"]
-    unless_null $P1038, vivify_259
+    unless_null $P1038, vivify_260
     new $P1038, "Undef"
-  vivify_259:
+  vivify_260:
     set $S1039, $P1038
     $P1040 = $P1036."new"($S1039 :named("inline"), "inline" :named("pasttype"))
     find_lex $P1041, "$/"
@@ -10307,7 +10309,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<w>"  :subid("65_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "backslash:sym<w>"  :subid("65_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_1048
 .annotate "line", 265
     new $P1047, 'ExceptionHandler'
@@ -10324,24 +10326,24 @@
     .lex "$past", $P1050
 .annotate "line", 266
     find_lex $P1053, "$/"
-    unless_null $P1053, vivify_260
+    unless_null $P1053, vivify_261
     new $P1053, "Hash"
-  vivify_260:
+  vivify_261:
     set $P1054, $P1053["sym"]
-    unless_null $P1054, vivify_261
+    unless_null $P1054, vivify_262
     new $P1054, "Undef"
-  vivify_261:
+  vivify_262:
     set $S1055, $P1054
     iseq $I1056, $S1055, "n"
     if $I1056, if_1052
     find_lex $P1058, "$/"
-    unless_null $P1058, vivify_262
+    unless_null $P1058, vivify_263
     new $P1058, "Hash"
-  vivify_262:
+  vivify_263:
     set $P1059, $P1058["sym"]
-    unless_null $P1059, vivify_263
+    unless_null $P1059, vivify_264
     new $P1059, "Undef"
-  vivify_263:
+  vivify_264:
     set $S1060, $P1059
     new $P1051, 'String'
     set $P1051, $S1060
@@ -10373,7 +10375,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<b>"  :subid("66_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "backslash:sym<b>"  :subid("66_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_1072
 .annotate "line", 271
     new $P1071, 'ExceptionHandler'
@@ -10388,13 +10390,13 @@
     get_hll_global $P1074, ["PAST"], "Regex"
 .annotate "line", 273
     find_lex $P1075, "$/"
-    unless_null $P1075, vivify_264
+    unless_null $P1075, vivify_265
     new $P1075, "Hash"
-  vivify_264:
+  vivify_265:
     set $P1076, $P1075["sym"]
-    unless_null $P1076, vivify_265
+    unless_null $P1076, vivify_266
     new $P1076, "Undef"
-  vivify_265:
+  vivify_266:
     set $S1077, $P1076
     iseq $I1078, $S1077, "B"
     find_lex $P1079, "$/"
@@ -10416,7 +10418,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<e>"  :subid("67_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "backslash:sym<e>"  :subid("67_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_1088
 .annotate "line", 277
     new $P1087, 'ExceptionHandler'
@@ -10431,13 +10433,13 @@
     get_hll_global $P1090, ["PAST"], "Regex"
 .annotate "line", 279
     find_lex $P1091, "$/"
-    unless_null $P1091, vivify_266
+    unless_null $P1091, vivify_267
     new $P1091, "Hash"
-  vivify_266:
+  vivify_267:
     set $P1092, $P1091["sym"]
-    unless_null $P1092, vivify_267
+    unless_null $P1092, vivify_268
     new $P1092, "Undef"
-  vivify_267:
+  vivify_268:
     set $S1093, $P1092
     iseq $I1094, $S1093, "E"
     find_lex $P1095, "$/"
@@ -10459,7 +10461,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<f>"  :subid("68_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "backslash:sym<f>"  :subid("68_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_1104
 .annotate "line", 283
     new $P1103, 'ExceptionHandler'
@@ -10474,13 +10476,13 @@
     get_hll_global $P1106, ["PAST"], "Regex"
 .annotate "line", 285
     find_lex $P1107, "$/"
-    unless_null $P1107, vivify_268
+    unless_null $P1107, vivify_269
     new $P1107, "Hash"
-  vivify_268:
+  vivify_269:
     set $P1108, $P1107["sym"]
-    unless_null $P1108, vivify_269
+    unless_null $P1108, vivify_270
     new $P1108, "Undef"
-  vivify_269:
+  vivify_270:
     set $S1109, $P1108
     iseq $I1110, $S1109, "F"
     find_lex $P1111, "$/"
@@ -10502,7 +10504,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<h>"  :subid("69_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "backslash:sym<h>"  :subid("69_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_1120
 .annotate "line", 289
     new $P1119, 'ExceptionHandler'
@@ -10517,13 +10519,13 @@
     get_hll_global $P1122, ["PAST"], "Regex"
 .annotate "line", 291
     find_lex $P1123, "$/"
-    unless_null $P1123, vivify_270
+    unless_null $P1123, vivify_271
     new $P1123, "Hash"
-  vivify_270:
+  vivify_271:
     set $P1124, $P1123["sym"]
-    unless_null $P1124, vivify_271
+    unless_null $P1124, vivify_272
     new $P1124, "Undef"
-  vivify_271:
+  vivify_272:
     set $S1125, $P1124
     iseq $I1126, $S1125, "H"
     find_lex $P1127, "$/"
@@ -10545,7 +10547,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<r>"  :subid("70_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "backslash:sym<r>"  :subid("70_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_1136
 .annotate "line", 295
     new $P1135, 'ExceptionHandler'
@@ -10560,13 +10562,13 @@
     get_hll_global $P1138, ["PAST"], "Regex"
 .annotate "line", 297
     find_lex $P1139, "$/"
-    unless_null $P1139, vivify_272
+    unless_null $P1139, vivify_273
     new $P1139, "Hash"
-  vivify_272:
+  vivify_273:
     set $P1140, $P1139["sym"]
-    unless_null $P1140, vivify_273
+    unless_null $P1140, vivify_274
     new $P1140, "Undef"
-  vivify_273:
+  vivify_274:
     set $S1141, $P1140
     iseq $I1142, $S1141, "R"
     find_lex $P1143, "$/"
@@ -10588,7 +10590,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<t>"  :subid("71_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "backslash:sym<t>"  :subid("71_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_1152
 .annotate "line", 301
     new $P1151, 'ExceptionHandler'
@@ -10603,13 +10605,13 @@
     get_hll_global $P1154, ["PAST"], "Regex"
 .annotate "line", 303
     find_lex $P1155, "$/"
-    unless_null $P1155, vivify_274
+    unless_null $P1155, vivify_275
     new $P1155, "Hash"
-  vivify_274:
+  vivify_275:
     set $P1156, $P1155["sym"]
-    unless_null $P1156, vivify_275
+    unless_null $P1156, vivify_276
     new $P1156, "Undef"
-  vivify_275:
+  vivify_276:
     set $S1157, $P1156
     iseq $I1158, $S1157, "T"
     find_lex $P1159, "$/"
@@ -10631,7 +10633,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<v>"  :subid("72_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "backslash:sym<v>"  :subid("72_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_1168
 .annotate "line", 307
     new $P1167, 'ExceptionHandler'
@@ -10646,13 +10648,13 @@
     get_hll_global $P1170, ["PAST"], "Regex"
 .annotate "line", 310
     find_lex $P1171, "$/"
-    unless_null $P1171, vivify_276
+    unless_null $P1171, vivify_277
     new $P1171, "Hash"
-  vivify_276:
+  vivify_277:
     set $P1172, $P1171["sym"]
-    unless_null $P1172, vivify_277
+    unless_null $P1172, vivify_278
     new $P1172, "Undef"
-  vivify_277:
+  vivify_278:
     set $S1173, $P1172
     iseq $I1174, $S1173, "V"
     find_lex $P1175, "$/"
@@ -10674,7 +10676,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<o>"  :subid("73_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "backslash:sym<o>"  :subid("73_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_1184
 .annotate "line", 314
     new $P1183, 'ExceptionHandler'
@@ -10689,29 +10691,29 @@
 .annotate "line", 316
     get_hll_global $P1186, ["HLL";"Actions"], "ints_to_string"
     find_lex $P1189, "$/"
-    unless_null $P1189, vivify_278
+    unless_null $P1189, vivify_279
     new $P1189, "Hash"
-  vivify_278:
+  vivify_279:
     set $P1190, $P1189["octint"]
-    unless_null $P1190, vivify_279
+    unless_null $P1190, vivify_280
     new $P1190, "Undef"
-  vivify_279:
+  vivify_280:
     unless $P1190, unless_1188
     set $P1187, $P1190
     goto unless_1188_end
   unless_1188:
     find_lex $P1191, "$/"
-    unless_null $P1191, vivify_280
+    unless_null $P1191, vivify_281
     new $P1191, "Hash"
-  vivify_280:
+  vivify_281:
     set $P1192, $P1191["octints"]
-    unless_null $P1192, vivify_281
+    unless_null $P1192, vivify_282
     new $P1192, "Hash"
-  vivify_281:
+  vivify_282:
     set $P1193, $P1192["octint"]
-    unless_null $P1193, vivify_282
+    unless_null $P1193, vivify_283
     new $P1193, "Undef"
-  vivify_282:
+  vivify_283:
     set $P1187, $P1193
   unless_1188_end:
     $P1194 = $P1186($P1187)
@@ -10719,13 +10721,13 @@
 .annotate "line", 317
     find_lex $P1195, "$/"
     find_lex $P1198, "$/"
-    unless_null $P1198, vivify_283
+    unless_null $P1198, vivify_284
     new $P1198, "Hash"
-  vivify_283:
+  vivify_284:
     set $P1199, $P1198["sym"]
-    unless_null $P1199, vivify_284
+    unless_null $P1199, vivify_285
     new $P1199, "Undef"
-  vivify_284:
+  vivify_285:
     set $S1200, $P1199
     iseq $I1201, $S1200, "O"
     if $I1201, if_1197
@@ -10757,7 +10759,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<x>"  :subid("74_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "backslash:sym<x>"  :subid("74_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_1215
 .annotate "line", 323
     new $P1214, 'ExceptionHandler'
@@ -10772,29 +10774,29 @@
 .annotate "line", 325
     get_hll_global $P1217, ["HLL";"Actions"], "ints_to_string"
     find_lex $P1220, "$/"
-    unless_null $P1220, vivify_285
+    unless_null $P1220, vivify_286
     new $P1220, "Hash"
-  vivify_285:
+  vivify_286:
     set $P1221, $P1220["hexint"]
-    unless_null $P1221, vivify_286
+    unless_null $P1221, vivify_287
     new $P1221, "Undef"
-  vivify_286:
+  vivify_287:
     unless $P1221, unless_1219
     set $P1218, $P1221
     goto unless_1219_end
   unless_1219:
     find_lex $P1222, "$/"
-    unless_null $P1222, vivify_287
+    unless_null $P1222, vivify_288
     new $P1222, "Hash"
-  vivify_287:
+  vivify_288:
     set $P1223, $P1222["hexints"]
-    unless_null $P1223, vivify_288
+    unless_null $P1223, vivify_289
     new $P1223, "Hash"
-  vivify_288:
+  vivify_289:
     set $P1224, $P1223["hexint"]
-    unless_null $P1224, vivify_289
+    unless_null $P1224, vivify_290
     new $P1224, "Undef"
-  vivify_289:
+  vivify_290:
     set $P1218, $P1224
   unless_1219_end:
     $P1225 = $P1217($P1218)
@@ -10802,13 +10804,13 @@
 .annotate "line", 326
     find_lex $P1226, "$/"
     find_lex $P1229, "$/"
-    unless_null $P1229, vivify_290
+    unless_null $P1229, vivify_291
     new $P1229, "Hash"
-  vivify_290:
+  vivify_291:
     set $P1230, $P1229["sym"]
-    unless_null $P1230, vivify_291
+    unless_null $P1230, vivify_292
     new $P1230, "Undef"
-  vivify_291:
+  vivify_292:
     set $S1231, $P1230
     iseq $I1232, $S1231, "X"
     if $I1232, if_1228
@@ -10840,7 +10842,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "backslash:sym<misc>"  :subid("75_1261064016.27984") :method :outer("11_1261064016.27984")
+.sub "backslash:sym<c>"  :subid("75_1266337348.54616") :method :outer("11_1266337348.54616")
     .param pmc param_1246
 .annotate "line", 332
     new $P1245, 'ExceptionHandler'
@@ -10850,398 +10852,433 @@
     .lex "self", self
     .lex "$/", param_1246
 .annotate "line", 333
-    new $P1247, "Undef"
-    .lex "$past", $P1247
+    find_lex $P1247, "$/"
     get_hll_global $P1248, ["PAST"], "Regex"
     find_lex $P1249, "$/"
-    set $S1250, $P1249
-    find_lex $P1251, "$/"
-    $P1252 = $P1248."new"($S1250, "literal" :named("pasttype"), $P1251 :named("node"))
-    store_lex "$past", $P1252
-.annotate "line", 334
-    find_lex $P1253, "$/"
-    find_lex $P1254, "$past"
-    $P1255 = $P1253."!make"($P1254)
+    unless_null $P1249, vivify_293
+    new $P1249, "Hash"
+  vivify_293:
+    set $P1250, $P1249["charspec"]
+    unless_null $P1250, vivify_294
+    new $P1250, "Undef"
+  vivify_294:
+    $P1251 = $P1250."ast"()
+    find_lex $P1252, "$/"
+    $P1253 = $P1248."new"($P1251, "literal" :named("pasttype"), $P1252 :named("node"))
+    $P1254 = $P1247."!make"($P1253)
 .annotate "line", 332
-    .return ($P1255)
+    .return ($P1254)
   control_1244:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1256, exception, "payload"
-    .return ($P1256)
+    getattribute $P1255, exception, "payload"
+    .return ($P1255)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<?>"  :subid("76_1261064016.27984") :method :outer("11_1261064016.27984")
-    .param pmc param_1260
-.annotate "line", 338
-    new $P1259, 'ExceptionHandler'
-    set_addr $P1259, control_1258
-    $P1259."handle_types"(58)
-    push_eh $P1259
-    .lex "self", self
-    .lex "$/", param_1260
-.annotate "line", 339
-    new $P1261, "Undef"
-    .lex "$past", $P1261
-.annotate "line", 338
-    find_lex $P1262, "$past"
-.annotate "line", 340
+.sub "backslash:sym<misc>"  :subid("76_1266337348.54616") :method :outer("11_1266337348.54616")
+    .param pmc param_1259
+.annotate "line", 336
+    new $P1258, 'ExceptionHandler'
+    set_addr $P1258, control_1257
+    $P1258."handle_types"(58)
+    push_eh $P1258
+    .lex "self", self
+    .lex "$/", param_1259
+.annotate "line", 337
+    new $P1260, "Undef"
+    .lex "$past", $P1260
+    get_hll_global $P1261, ["PAST"], "Regex"
+    find_lex $P1262, "$/"
+    set $S1263, $P1262
     find_lex $P1264, "$/"
-    unless_null $P1264, vivify_292
-    new $P1264, "Hash"
-  vivify_292:
-    set $P1265, $P1264["assertion"]
-    unless_null $P1265, vivify_293
-    new $P1265, "Undef"
-  vivify_293:
-    if $P1265, if_1263
-.annotate "line", 344
-    new $P1270, "Integer"
-    assign $P1270, 0
-    store_lex "$past", $P1270
-    goto if_1263_end
-  if_1263:
-.annotate "line", 341
-    find_lex $P1266, "$/"
-    unless_null $P1266, vivify_294
-    new $P1266, "Hash"
-  vivify_294:
-    set $P1267, $P1266["assertion"]
-    unless_null $P1267, vivify_295
-    new $P1267, "Undef"
-  vivify_295:
-    $P1268 = $P1267."ast"()
-    store_lex "$past", $P1268
-.annotate "line", 342
-    find_lex $P1269, "$past"
-    $P1269."subtype"("zerowidth")
-  if_1263_end:
-.annotate "line", 345
-    find_lex $P1271, "$/"
-    find_lex $P1272, "$past"
-    $P1273 = $P1271."!make"($P1272)
+    $P1265 = $P1261."new"($S1263, "literal" :named("pasttype"), $P1264 :named("node"))
+    store_lex "$past", $P1265
 .annotate "line", 338
-    .return ($P1273)
-  control_1258:
+    find_lex $P1266, "$/"
+    find_lex $P1267, "$past"
+    $P1268 = $P1266."!make"($P1267)
+.annotate "line", 336
+    .return ($P1268)
+  control_1257:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1274, exception, "payload"
-    .return ($P1274)
+    getattribute $P1269, exception, "payload"
+    .return ($P1269)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<!>"  :subid("77_1261064016.27984") :method :outer("11_1261064016.27984")
-    .param pmc param_1278
-.annotate "line", 348
-    new $P1277, 'ExceptionHandler'
-    set_addr $P1277, control_1276
-    $P1277."handle_types"(58)
-    push_eh $P1277
-    .lex "self", self
-    .lex "$/", param_1278
-.annotate "line", 349
-    new $P1279, "Undef"
-    .lex "$past", $P1279
-.annotate "line", 348
-    find_lex $P1280, "$past"
-.annotate "line", 350
-    find_lex $P1282, "$/"
-    unless_null $P1282, vivify_296
-    new $P1282, "Hash"
+.sub "assertion:sym<?>"  :subid("77_1266337348.54616") :method :outer("11_1266337348.54616")
+    .param pmc param_1273
+.annotate "line", 342
+    new $P1272, 'ExceptionHandler'
+    set_addr $P1272, control_1271
+    $P1272."handle_types"(58)
+    push_eh $P1272
+    .lex "self", self
+    .lex "$/", param_1273
+.annotate "line", 343
+    new $P1274, "Undef"
+    .lex "$past", $P1274
+.annotate "line", 342
+    find_lex $P1275, "$past"
+.annotate "line", 344
+    find_lex $P1277, "$/"
+    unless_null $P1277, vivify_295
+    new $P1277, "Hash"
+  vivify_295:
+    set $P1278, $P1277["assertion"]
+    unless_null $P1278, vivify_296
+    new $P1278, "Undef"
   vivify_296:
-    set $P1283, $P1282["assertion"]
-    unless_null $P1283, vivify_297
-    new $P1283, "Undef"
+    if $P1278, if_1276
+.annotate "line", 348
+    new $P1283, "Integer"
+    assign $P1283, 0
+    store_lex "$past", $P1283
+    goto if_1276_end
+  if_1276:
+.annotate "line", 345
+    find_lex $P1279, "$/"
+    unless_null $P1279, vivify_297
+    new $P1279, "Hash"
   vivify_297:
-    if $P1283, if_1281
-.annotate "line", 356
-    get_hll_global $P1292, ["PAST"], "Regex"
-    find_lex $P1293, "$/"
-    $P1294 = $P1292."new"("anchor" :named("pasttype"), "fail" :named("subtype"), $P1293 :named("node"))
-    store_lex "$past", $P1294
-.annotate "line", 355
-    goto if_1281_end
-  if_1281:
-.annotate "line", 351
-    find_lex $P1284, "$/"
-    unless_null $P1284, vivify_298
-    new $P1284, "Hash"
+    set $P1280, $P1279["assertion"]
+    unless_null $P1280, vivify_298
+    new $P1280, "Undef"
   vivify_298:
-    set $P1285, $P1284["assertion"]
-    unless_null $P1285, vivify_299
-    new $P1285, "Undef"
-  vivify_299:
-    $P1286 = $P1285."ast"()
-    store_lex "$past", $P1286
-.annotate "line", 352
-    find_lex $P1287, "$past"
-    find_lex $P1288, "$past"
-    $P1289 = $P1288."negate"()
-    isfalse $I1290, $P1289
-    $P1287."negate"($I1290)
-.annotate "line", 353
-    find_lex $P1291, "$past"
-    $P1291."subtype"("zerowidth")
-  if_1281_end:
-.annotate "line", 358
-    find_lex $P1295, "$/"
-    find_lex $P1296, "$past"
-    $P1297 = $P1295."!make"($P1296)
-.annotate "line", 348
-    .return ($P1297)
-  control_1276:
+    $P1281 = $P1280."ast"()
+    store_lex "$past", $P1281
+.annotate "line", 346
+    find_lex $P1282, "$past"
+    $P1282."subtype"("zerowidth")
+  if_1276_end:
+.annotate "line", 349
+    find_lex $P1284, "$/"
+    find_lex $P1285, "$past"
+    $P1286 = $P1284."!make"($P1285)
+.annotate "line", 342
+    .return ($P1286)
+  control_1271:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1298, exception, "payload"
-    .return ($P1298)
+    getattribute $P1287, exception, "payload"
+    .return ($P1287)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<method>"  :subid("78_1261064016.27984") :method :outer("11_1261064016.27984")
-    .param pmc param_1302
-.annotate "line", 361
-    new $P1301, 'ExceptionHandler'
-    set_addr $P1301, control_1300
-    $P1301."handle_types"(58)
-    push_eh $P1301
+.sub "assertion:sym<!>"  :subid("78_1266337348.54616") :method :outer("11_1266337348.54616")
+    .param pmc param_1291
+.annotate "line", 352
+    new $P1290, 'ExceptionHandler'
+    set_addr $P1290, control_1289
+    $P1290."handle_types"(58)
+    push_eh $P1290
     .lex "self", self
-    .lex "$/", param_1302
-.annotate "line", 362
-    new $P1303, "Undef"
-    .lex "$past", $P1303
-    find_lex $P1304, "$/"
-    unless_null $P1304, vivify_300
-    new $P1304, "Hash"
+    .lex "$/", param_1291
+.annotate "line", 353
+    new $P1292, "Undef"
+    .lex "$past", $P1292
+.annotate "line", 352
+    find_lex $P1293, "$past"
+.annotate "line", 354
+    find_lex $P1295, "$/"
+    unless_null $P1295, vivify_299
+    new $P1295, "Hash"
+  vivify_299:
+    set $P1296, $P1295["assertion"]
+    unless_null $P1296, vivify_300
+    new $P1296, "Undef"
   vivify_300:
-    set $P1305, $P1304["assertion"]
-    unless_null $P1305, vivify_301
-    new $P1305, "Undef"
+    if $P1296, if_1294
+.annotate "line", 360
+    get_hll_global $P1305, ["PAST"], "Regex"
+    find_lex $P1306, "$/"
+    $P1307 = $P1305."new"("anchor" :named("pasttype"), "fail" :named("subtype"), $P1306 :named("node"))
+    store_lex "$past", $P1307
+.annotate "line", 359
+    goto if_1294_end
+  if_1294:
+.annotate "line", 355
+    find_lex $P1297, "$/"
+    unless_null $P1297, vivify_301
+    new $P1297, "Hash"
   vivify_301:
-    $P1306 = $P1305."ast"()
-    store_lex "$past", $P1306
-.annotate "line", 363
-    find_lex $P1307, "$past"
-    $P1307."subtype"("method")
-.annotate "line", 364
-    find_lex $P1308, "$past"
-    $P1308."name"("")
-.annotate "line", 365
-    find_lex $P1309, "$/"
-    find_lex $P1310, "$past"
-    $P1311 = $P1309."!make"($P1310)
-.annotate "line", 361
-    .return ($P1311)
-  control_1300:
+    set $P1298, $P1297["assertion"]
+    unless_null $P1298, vivify_302
+    new $P1298, "Undef"
+  vivify_302:
+    $P1299 = $P1298."ast"()
+    store_lex "$past", $P1299
+.annotate "line", 356
+    find_lex $P1300, "$past"
+    find_lex $P1301, "$past"
+    $P1302 = $P1301."negate"()
+    isfalse $I1303, $P1302
+    $P1300."negate"($I1303)
+.annotate "line", 357
+    find_lex $P1304, "$past"
+    $P1304."subtype"("zerowidth")
+  if_1294_end:
+.annotate "line", 362
+    find_lex $P1308, "$/"
+    find_lex $P1309, "$past"
+    $P1310 = $P1308."!make"($P1309)
+.annotate "line", 352
+    .return ($P1310)
+  control_1289:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1312, exception, "payload"
-    .return ($P1312)
+    getattribute $P1311, exception, "payload"
+    .return ($P1311)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<name>"  :subid("79_1261064016.27984") :method :outer("11_1261064016.27984")
-    .param pmc param_1316
-.annotate "line", 368
-    .const 'Sub' $P1374 = "81_1261064016.27984" 
-    capture_lex $P1374
-    .const 'Sub' $P1338 = "80_1261064016.27984" 
-    capture_lex $P1338
-    new $P1315, 'ExceptionHandler'
-    set_addr $P1315, control_1314
-    $P1315."handle_types"(58)
-    push_eh $P1315
-    .lex "self", self
-    .lex "$/", param_1316
-.annotate "line", 369
-    new $P1317, "Undef"
-    .lex "$name", $P1317
-.annotate "line", 370
+.sub "assertion:sym<method>"  :subid("79_1266337348.54616") :method :outer("11_1266337348.54616")
+    .param pmc param_1315
+.annotate "line", 365
+    new $P1314, 'ExceptionHandler'
+    set_addr $P1314, control_1313
+    $P1314."handle_types"(58)
+    push_eh $P1314
+    .lex "self", self
+    .lex "$/", param_1315
+.annotate "line", 366
+    new $P1316, "Undef"
+    .lex "$past", $P1316
+    find_lex $P1317, "$/"
+    unless_null $P1317, vivify_303
+    new $P1317, "Hash"
+  vivify_303:
+    set $P1318, $P1317["assertion"]
+    unless_null $P1318, vivify_304
     new $P1318, "Undef"
-    .lex "$past", $P1318
+  vivify_304:
+    $P1319 = $P1318."ast"()
+    store_lex "$past", $P1319
+.annotate "line", 367
+    find_lex $P1320, "$past"
+    $P1320."subtype"("method")
+.annotate "line", 368
+    find_lex $P1321, "$past"
+    $P1321."name"("")
 .annotate "line", 369
-    find_lex $P1319, "$/"
-    unless_null $P1319, vivify_302
-    new $P1319, "Hash"
-  vivify_302:
-    set $P1320, $P1319["longname"]
-    unless_null $P1320, vivify_303
-    new $P1320, "Undef"
-  vivify_303:
-    set $S1321, $P1320
-    new $P1322, 'String'
-    set $P1322, $S1321
-    store_lex "$name", $P1322
+    find_lex $P1322, "$/"
     find_lex $P1323, "$past"
-.annotate "line", 371
-    find_lex $P1325, "$/"
-    unless_null $P1325, vivify_304
-    new $P1325, "Hash"
-  vivify_304:
-    set $P1326, $P1325["assertion"]
-    unless_null $P1326, vivify_305
-    new $P1326, "Undef"
+    $P1324 = $P1322."!make"($P1323)
+.annotate "line", 365
+    .return ($P1324)
+  control_1313:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1325, exception, "payload"
+    .return ($P1325)
+.end
+
+
+.namespace ["Regex";"P6Regex";"Actions"]
+.sub "assertion:sym<name>"  :subid("80_1266337348.54616") :method :outer("11_1266337348.54616")
+    .param pmc param_1329
+.annotate "line", 372
+    .const 'Sub' $P1387 = "82_1266337348.54616" 
+    capture_lex $P1387
+    .const 'Sub' $P1351 = "81_1266337348.54616" 
+    capture_lex $P1351
+    new $P1328, 'ExceptionHandler'
+    set_addr $P1328, control_1327
+    $P1328."handle_types"(58)
+    push_eh $P1328
+    .lex "self", self
+    .lex "$/", param_1329
+.annotate "line", 373
+    new $P1330, "Undef"
+    .lex "$name", $P1330
+.annotate "line", 374
+    new $P1331, "Undef"
+    .lex "$past", $P1331
+.annotate "line", 373
+    find_lex $P1332, "$/"
+    unless_null $P1332, vivify_305
+    new $P1332, "Hash"
   vivify_305:
-    if $P1326, if_1324
-.annotate "line", 375
-    find_lex $P1334, "$name"
-    set $S1335, $P1334
-    iseq $I1336, $S1335, "sym"
-    if $I1336, if_1333
-.annotate "line", 391
-    get_hll_global $P1348, ["PAST"], "Regex"
-    find_lex $P1349, "$name"
-    find_lex $P1350, "$name"
-    find_lex $P1351, "$/"
-    $P1352 = $P1348."new"($P1349, $P1350 :named("name"), "subrule" :named("pasttype"), "capture" :named("subtype"), $P1351 :named("node"))
-    store_lex "$past", $P1352
-.annotate "line", 393
-    find_lex $P1354, "$/"
-    unless_null $P1354, vivify_306
-    new $P1354, "Hash"
+    set $P1333, $P1332["longname"]
+    unless_null $P1333, vivify_306
+    new $P1333, "Undef"
   vivify_306:
-    set $P1355, $P1354["nibbler"]
-    unless_null $P1355, vivify_307
-    new $P1355, "Undef"
+    set $S1334, $P1333
+    new $P1335, 'String'
+    set $P1335, $S1334
+    store_lex "$name", $P1335
+    find_lex $P1336, "$past"
+.annotate "line", 375
+    find_lex $P1338, "$/"
+    unless_null $P1338, vivify_307
+    new $P1338, "Hash"
   vivify_307:
-    if $P1355, if_1353
-.annotate "line", 396
-    find_lex $P1363, "$/"
-    unless_null $P1363, vivify_308
-    new $P1363, "Hash"
+    set $P1339, $P1338["assertion"]
+    unless_null $P1339, vivify_308
+    new $P1339, "Undef"
   vivify_308:
-    set $P1364, $P1363["arglist"]
-    unless_null $P1364, vivify_309
-    new $P1364, "Undef"
-  vivify_309:
-    unless $P1364, if_1362_end
+    if $P1339, if_1337
+.annotate "line", 379
+    find_lex $P1347, "$name"
+    set $S1348, $P1347
+    iseq $I1349, $S1348, "sym"
+    if $I1349, if_1346
+.annotate "line", 395
+    get_hll_global $P1361, ["PAST"], "Regex"
+    find_lex $P1362, "$name"
+    find_lex $P1363, "$name"
+    find_lex $P1364, "$/"
+    $P1365 = $P1361."new"($P1362, $P1363 :named("name"), "subrule" :named("pasttype"), "capture" :named("subtype"), $P1364 :named("node"))
+    store_lex "$past", $P1365
 .annotate "line", 397
-    find_lex $P1366, "$/"
-    unless_null $P1366, vivify_310
-    new $P1366, "Hash"
+    find_lex $P1367, "$/"
+    unless_null $P1367, vivify_309
+    new $P1367, "Hash"
+  vivify_309:
+    set $P1368, $P1367["nibbler"]
+    unless_null $P1368, vivify_310
+    new $P1368, "Undef"
   vivify_310:
-    set $P1367, $P1366["arglist"]
-    unless_null $P1367, vivify_311
-    new $P1367, "ResizablePMCArray"
+    if $P1368, if_1366
+.annotate "line", 400
+    find_lex $P1376, "$/"
+    unless_null $P1376, vivify_311
+    new $P1376, "Hash"
   vivify_311:
-    set $P1368, $P1367[0]
-    unless_null $P1368, vivify_312
-    new $P1368, "Undef"
+    set $P1377, $P1376["arglist"]
+    unless_null $P1377, vivify_312
+    new $P1377, "Undef"
   vivify_312:
-    $P1369 = $P1368."ast"()
-    $P1370 = $P1369."list"()
-    defined $I1371, $P1370
-    unless $I1371, for_undef_313
-    iter $P1365, $P1370
-    new $P1380, 'ExceptionHandler'
-    set_addr $P1380, loop1379_handler
-    $P1380."handle_types"(65, 67, 66)
-    push_eh $P1380
-  loop1379_test:
-    unless $P1365, loop1379_done
-    shift $P1372, $P1365
-  loop1379_redo:
-    .const 'Sub' $P1374 = "81_1261064016.27984" 
-    capture_lex $P1374
-    $P1374($P1372)
-  loop1379_next:
-    goto loop1379_test
-  loop1379_handler:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P1381, exception, 'type'
-    eq $P1381, 65, loop1379_next
-    eq $P1381, 67, loop1379_redo
-  loop1379_done:
-    pop_eh 
-  for_undef_313:
-  if_1362_end:
-.annotate "line", 396
-    goto if_1353_end
-  if_1353:
-.annotate "line", 394
-    find_lex $P1356, "$past"
-    find_lex $P1357, "$/"
-    unless_null $P1357, vivify_314
-    new $P1357, "Hash"
+    unless $P1377, if_1375_end
+.annotate "line", 401
+    find_lex $P1379, "$/"
+    unless_null $P1379, vivify_313
+    new $P1379, "Hash"
+  vivify_313:
+    set $P1380, $P1379["arglist"]
+    unless_null $P1380, vivify_314
+    new $P1380, "ResizablePMCArray"
   vivify_314:
-    set $P1358, $P1357["nibbler"]
-    unless_null $P1358, vivify_315
-    new $P1358, "ResizablePMCArray"
+    set $P1381, $P1380[0]
+    unless_null $P1381, vivify_315
+    new $P1381, "Undef"
   vivify_315:
-    set $P1359, $P1358[0]
-    unless_null $P1359, vivify_316
-    new $P1359, "Undef"
-  vivify_316:
-    $P1360 = $P1359."ast"()
-    $P1361 = "buildsub"($P1360)
-    $P1356."push"($P1361)
-  if_1353_end:
-.annotate "line", 390
-    goto if_1333_end
-  if_1333:
-.annotate "line", 375
-    .const 'Sub' $P1338 = "80_1261064016.27984" 
-    capture_lex $P1338
-    $P1338()
-  if_1333_end:
-    goto if_1324_end
-  if_1324:
-.annotate "line", 372
-    find_lex $P1327, "$/"
-    unless_null $P1327, vivify_317
-    new $P1327, "Hash"
+    $P1382 = $P1381."ast"()
+    $P1383 = $P1382."list"()
+    defined $I1384, $P1383
+    unless $I1384, for_undef_316
+    iter $P1378, $P1383
+    new $P1393, 'ExceptionHandler'
+    set_addr $P1393, loop1392_handler
+    $P1393."handle_types"(65, 67, 66)
+    push_eh $P1393
+  loop1392_test:
+    unless $P1378, loop1392_done
+    shift $P1385, $P1378
+  loop1392_redo:
+    .const 'Sub' $P1387 = "82_1266337348.54616" 
+    capture_lex $P1387
+    $P1387($P1385)
+  loop1392_next:
+    goto loop1392_test
+  loop1392_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1394, exception, 'type'
+    eq $P1394, 65, loop1392_next
+    eq $P1394, 67, loop1392_redo
+  loop1392_done:
+    pop_eh 
+  for_undef_316:
+  if_1375_end:
+.annotate "line", 400
+    goto if_1366_end
+  if_1366:
+.annotate "line", 398
+    find_lex $P1369, "$past"
+    find_lex $P1370, "$/"
+    unless_null $P1370, vivify_317
+    new $P1370, "Hash"
   vivify_317:
-    set $P1328, $P1327["assertion"]
-    unless_null $P1328, vivify_318
-    new $P1328, "ResizablePMCArray"
+    set $P1371, $P1370["nibbler"]
+    unless_null $P1371, vivify_318
+    new $P1371, "ResizablePMCArray"
   vivify_318:
-    set $P1329, $P1328[0]
-    unless_null $P1329, vivify_319
-    new $P1329, "Undef"
+    set $P1372, $P1371[0]
+    unless_null $P1372, vivify_319
+    new $P1372, "Undef"
   vivify_319:
-    $P1330 = $P1329."ast"()
-    store_lex "$past", $P1330
-.annotate "line", 373
-    find_lex $P1331, "$past"
-    find_lex $P1332, "$name"
-    "subrule_alias"($P1331, $P1332)
-  if_1324_end:
-.annotate "line", 400
-    find_lex $P1382, "$/"
-    find_lex $P1383, "$past"
-    $P1384 = $P1382."!make"($P1383)
-.annotate "line", 368
-    .return ($P1384)
-  control_1314:
+    $P1373 = $P1372."ast"()
+    $P1374 = "buildsub"($P1373)
+    $P1369."push"($P1374)
+  if_1366_end:
+.annotate "line", 394
+    goto if_1346_end
+  if_1346:
+.annotate "line", 379
+    .const 'Sub' $P1351 = "81_1266337348.54616" 
+    capture_lex $P1351
+    $P1351()
+  if_1346_end:
+    goto if_1337_end
+  if_1337:
+.annotate "line", 376
+    find_lex $P1340, "$/"
+    unless_null $P1340, vivify_320
+    new $P1340, "Hash"
+  vivify_320:
+    set $P1341, $P1340["assertion"]
+    unless_null $P1341, vivify_321
+    new $P1341, "ResizablePMCArray"
+  vivify_321:
+    set $P1342, $P1341[0]
+    unless_null $P1342, vivify_322
+    new $P1342, "Undef"
+  vivify_322:
+    $P1343 = $P1342."ast"()
+    store_lex "$past", $P1343
+.annotate "line", 377
+    find_lex $P1344, "$past"
+    find_lex $P1345, "$name"
+    "subrule_alias"($P1344, $P1345)
+  if_1337_end:
+.annotate "line", 404
+    find_lex $P1395, "$/"
+    find_lex $P1396, "$past"
+    $P1397 = $P1395."!make"($P1396)
+.annotate "line", 372
+    .return ($P1397)
+  control_1327:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1385, exception, "payload"
-    .return ($P1385)
+    getattribute $P1398, exception, "payload"
+    .return ($P1398)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1373"  :anon :subid("81_1261064016.27984") :outer("79_1261064016.27984")
-    .param pmc param_1375
-.annotate "line", 397
-    .lex "$_", param_1375
-    find_lex $P1376, "$past"
-    find_lex $P1377, "$_"
-    $P1378 = $P1376."push"($P1377)
-    .return ($P1378)
+.sub "_block1386"  :anon :subid("82_1266337348.54616") :outer("80_1266337348.54616")
+    .param pmc param_1388
+.annotate "line", 401
+    .lex "$_", param_1388
+    find_lex $P1389, "$past"
+    find_lex $P1390, "$_"
+    $P1391 = $P1389."push"($P1390)
+    .return ($P1391)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1337"  :anon :subid("80_1261064016.27984") :outer("79_1261064016.27984")
-.annotate "line", 376
-    new $P1339, "Undef"
-    .lex "$regexsym", $P1339
+.sub "_block1350"  :anon :subid("81_1266337348.54616") :outer("80_1266337348.54616")
+.annotate "line", 380
+    new $P1352, "Undef"
+    .lex "$regexsym", $P1352
 
             $P0 = get_global '$REGEXNAME'
             $S0 = $P0
@@ -11249,388 +11286,388 @@
             add $I0, 5
             $S0 = substr $S0, $I0
             chopn $S0, 1
-            $P1340 = box $S0
+            $P1353 = box $S0
         
-    store_lex "$regexsym", $P1340
-.annotate "line", 385
-    get_hll_global $P1341, ["PAST"], "Regex"
-.annotate "line", 386
-    get_hll_global $P1342, ["PAST"], "Regex"
-    find_lex $P1343, "$regexsym"
-    $P1344 = $P1342."new"($P1343, "literal" :named("pasttype"))
-    find_lex $P1345, "$name"
-    find_lex $P1346, "$/"
-    $P1347 = $P1341."new"($P1344, $P1345 :named("name"), "subcapture" :named("pasttype"), $P1346 :named("node"))
-.annotate "line", 385
-    store_lex "$past", $P1347
-.annotate "line", 375
-    .return ($P1347)
+    store_lex "$regexsym", $P1353
+.annotate "line", 389
+    get_hll_global $P1354, ["PAST"], "Regex"
+.annotate "line", 390
+    get_hll_global $P1355, ["PAST"], "Regex"
+    find_lex $P1356, "$regexsym"
+    $P1357 = $P1355."new"($P1356, "literal" :named("pasttype"))
+    find_lex $P1358, "$name"
+    find_lex $P1359, "$/"
+    $P1360 = $P1354."new"($P1357, $P1358 :named("name"), "subcapture" :named("pasttype"), $P1359 :named("node"))
+.annotate "line", 389
+    store_lex "$past", $P1360
+.annotate "line", 379
+    .return ($P1360)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "assertion:sym<[>"  :subid("82_1261064016.27984") :method :outer("11_1261064016.27984")
-    .param pmc param_1389
-.annotate "line", 403
-    .const 'Sub' $P1424 = "83_1261064016.27984" 
-    capture_lex $P1424
-    new $P1388, 'ExceptionHandler'
-    set_addr $P1388, control_1387
-    $P1388."handle_types"(58)
-    push_eh $P1388
-    .lex "self", self
-    .lex "$/", param_1389
-.annotate "line", 404
-    new $P1390, "Undef"
-    .lex "$clist", $P1390
-.annotate "line", 405
-    new $P1391, "Undef"
-    .lex "$past", $P1391
-.annotate "line", 414
-    new $P1392, "Undef"
-    .lex "$i", $P1392
-.annotate "line", 415
-    new $P1393, "Undef"
-    .lex "$n", $P1393
-.annotate "line", 404
-    find_lex $P1394, "$/"
-    unless_null $P1394, vivify_320
-    new $P1394, "Hash"
-  vivify_320:
-    set $P1395, $P1394["cclass_elem"]
-    unless_null $P1395, vivify_321
-    new $P1395, "Undef"
-  vivify_321:
-    store_lex "$clist", $P1395
-.annotate "line", 405
-    find_lex $P1396, "$clist"
-    unless_null $P1396, vivify_322
-    new $P1396, "ResizablePMCArray"
-  vivify_322:
-    set $P1397, $P1396[0]
-    unless_null $P1397, vivify_323
-    new $P1397, "Undef"
-  vivify_323:
-    $P1398 = $P1397."ast"()
-    store_lex "$past", $P1398
-.annotate "line", 406
-    find_lex $P1402, "$past"
-    $P1403 = $P1402."negate"()
-    if $P1403, if_1401
-    set $P1400, $P1403
-    goto if_1401_end
-  if_1401:
-    find_lex $P1404, "$past"
-    $S1405 = $P1404."pasttype"()
-    iseq $I1406, $S1405, "subrule"
-    new $P1400, 'Integer'
-    set $P1400, $I1406
-  if_1401_end:
-    unless $P1400, if_1399_end
+.sub "assertion:sym<[>"  :subid("83_1266337348.54616") :method :outer("11_1266337348.54616")
+    .param pmc param_1402
 .annotate "line", 407
-    find_lex $P1407, "$past"
-    $P1407."subtype"("zerowidth")
+    .const 'Sub' $P1437 = "84_1266337348.54616" 
+    capture_lex $P1437
+    new $P1401, 'ExceptionHandler'
+    set_addr $P1401, control_1400
+    $P1401."handle_types"(58)
+    push_eh $P1401
+    .lex "self", self
+    .lex "$/", param_1402
 .annotate "line", 408
-    get_hll_global $P1408, ["PAST"], "Regex"
-    find_lex $P1409, "$past"
-.annotate "line", 410
-    get_hll_global $P1410, ["PAST"], "Regex"
-    $P1411 = $P1410."new"("charclass" :named("pasttype"), "." :named("subtype"))
-    find_lex $P1412, "$/"
-    $P1413 = $P1408."new"($P1409, $P1411, $P1412 :named("node"))
+    new $P1403, "Undef"
+    .lex "$clist", $P1403
+.annotate "line", 409
+    new $P1404, "Undef"
+    .lex "$past", $P1404
+.annotate "line", 418
+    new $P1405, "Undef"
+    .lex "$i", $P1405
+.annotate "line", 419
+    new $P1406, "Undef"
+    .lex "$n", $P1406
 .annotate "line", 408
-    store_lex "$past", $P1413
-  if_1399_end:
+    find_lex $P1407, "$/"
+    unless_null $P1407, vivify_323
+    new $P1407, "Hash"
+  vivify_323:
+    set $P1408, $P1407["cclass_elem"]
+    unless_null $P1408, vivify_324
+    new $P1408, "Undef"
+  vivify_324:
+    store_lex "$clist", $P1408
+.annotate "line", 409
+    find_lex $P1409, "$clist"
+    unless_null $P1409, vivify_325
+    new $P1409, "ResizablePMCArray"
+  vivify_325:
+    set $P1410, $P1409[0]
+    unless_null $P1410, vivify_326
+    new $P1410, "Undef"
+  vivify_326:
+    $P1411 = $P1410."ast"()
+    store_lex "$past", $P1411
+.annotate "line", 410
+    find_lex $P1415, "$past"
+    $P1416 = $P1415."negate"()
+    if $P1416, if_1414
+    set $P1413, $P1416
+    goto if_1414_end
+  if_1414:
+    find_lex $P1417, "$past"
+    $S1418 = $P1417."pasttype"()
+    iseq $I1419, $S1418, "subrule"
+    new $P1413, 'Integer'
+    set $P1413, $I1419
+  if_1414_end:
+    unless $P1413, if_1412_end
+.annotate "line", 411
+    find_lex $P1420, "$past"
+    $P1420."subtype"("zerowidth")
+.annotate "line", 412
+    get_hll_global $P1421, ["PAST"], "Regex"
+    find_lex $P1422, "$past"
 .annotate "line", 414
-    new $P1414, "Integer"
-    assign $P1414, 1
-    store_lex "$i", $P1414
-.annotate "line", 415
-    find_lex $P1415, "$clist"
-    set $N1416, $P1415
-    new $P1417, 'Float'
-    set $P1417, $N1416
-    store_lex "$n", $P1417
-.annotate "line", 416
-    new $P1448, 'ExceptionHandler'
-    set_addr $P1448, loop1447_handler
-    $P1448."handle_types"(65, 67, 66)
-    push_eh $P1448
-  loop1447_test:
-    find_lex $P1418, "$i"
-    set $N1419, $P1418
-    find_lex $P1420, "$n"
-    set $N1421, $P1420
-    islt $I1422, $N1419, $N1421
-    unless $I1422, loop1447_done
-  loop1447_redo:
-    .const 'Sub' $P1424 = "83_1261064016.27984" 
-    capture_lex $P1424
-    $P1424()
-  loop1447_next:
-    goto loop1447_test
-  loop1447_handler:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P1449, exception, 'type'
-    eq $P1449, 65, loop1447_next
-    eq $P1449, 67, loop1447_redo
-  loop1447_done:
+    get_hll_global $P1423, ["PAST"], "Regex"
+    $P1424 = $P1423."new"("charclass" :named("pasttype"), "." :named("subtype"))
+    find_lex $P1425, "$/"
+    $P1426 = $P1421."new"($P1422, $P1424, $P1425 :named("node"))
+.annotate "line", 412
+    store_lex "$past", $P1426
+  if_1412_end:
+.annotate "line", 418
+    new $P1427, "Integer"
+    assign $P1427, 1
+    store_lex "$i", $P1427
+.annotate "line", 419
+    find_lex $P1428, "$clist"
+    set $N1429, $P1428
+    new $P1430, 'Float'
+    set $P1430, $N1429
+    store_lex "$n", $P1430
+.annotate "line", 420
+    new $P1461, 'ExceptionHandler'
+    set_addr $P1461, loop1460_handler
+    $P1461."handle_types"(65, 67, 66)
+    push_eh $P1461
+  loop1460_test:
+    find_lex $P1431, "$i"
+    set $N1432, $P1431
+    find_lex $P1433, "$n"
+    set $N1434, $P1433
+    islt $I1435, $N1432, $N1434
+    unless $I1435, loop1460_done
+  loop1460_redo:
+    .const 'Sub' $P1437 = "84_1266337348.54616" 
+    capture_lex $P1437
+    $P1437()
+  loop1460_next:
+    goto loop1460_test
+  loop1460_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1462, exception, 'type'
+    eq $P1462, 65, loop1460_next
+    eq $P1462, 67, loop1460_redo
+  loop1460_done:
     pop_eh 
-.annotate "line", 427
-    find_lex $P1450, "$/"
-    find_lex $P1451, "$past"
-    $P1452 = $P1450."!make"($P1451)
-.annotate "line", 403
-    .return ($P1452)
-  control_1387:
+.annotate "line", 431
+    find_lex $P1463, "$/"
+    find_lex $P1464, "$past"
+    $P1465 = $P1463."!make"($P1464)
+.annotate "line", 407
+    .return ($P1465)
+  control_1400:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1453, exception, "payload"
-    .return ($P1453)
+    getattribute $P1466, exception, "payload"
+    .return ($P1466)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1423"  :anon :subid("83_1261064016.27984") :outer("82_1261064016.27984")
-.annotate "line", 417
-    new $P1425, "Undef"
-    .lex "$ast", $P1425
-    find_lex $P1426, "$i"
-    set $I1427, $P1426
-    find_lex $P1428, "$clist"
-    unless_null $P1428, vivify_324
-    new $P1428, "ResizablePMCArray"
-  vivify_324:
-    set $P1429, $P1428[$I1427]
-    unless_null $P1429, vivify_325
-    new $P1429, "Undef"
-  vivify_325:
-    $P1430 = $P1429."ast"()
-    store_lex "$ast", $P1430
-.annotate "line", 418
-    find_lex $P1432, "$ast"
-    $P1433 = $P1432."negate"()
-    if $P1433, if_1431
-.annotate "line", 423
-    get_hll_global $P1440, ["PAST"], "Regex"
-    find_lex $P1441, "$past"
-    find_lex $P1442, "$ast"
-    find_lex $P1443, "$/"
-    $P1444 = $P1440."new"($P1441, $P1442, "alt" :named("pasttype"), $P1443 :named("node"))
-    store_lex "$past", $P1444
+.sub "_block1436"  :anon :subid("84_1266337348.54616") :outer("83_1266337348.54616")
+.annotate "line", 421
+    new $P1438, "Undef"
+    .lex "$ast", $P1438
+    find_lex $P1439, "$i"
+    set $I1440, $P1439
+    find_lex $P1441, "$clist"
+    unless_null $P1441, vivify_327
+    new $P1441, "ResizablePMCArray"
+  vivify_327:
+    set $P1442, $P1441[$I1440]
+    unless_null $P1442, vivify_328
+    new $P1442, "Undef"
+  vivify_328:
+    $P1443 = $P1442."ast"()
+    store_lex "$ast", $P1443
 .annotate "line", 422
-    goto if_1431_end
-  if_1431:
-.annotate "line", 419
-    find_lex $P1434, "$ast"
-    $P1434."subtype"("zerowidth")
+    find_lex $P1445, "$ast"
+    $P1446 = $P1445."negate"()
+    if $P1446, if_1444
+.annotate "line", 427
+    get_hll_global $P1453, ["PAST"], "Regex"
+    find_lex $P1454, "$past"
+    find_lex $P1455, "$ast"
+    find_lex $P1456, "$/"
+    $P1457 = $P1453."new"($P1454, $P1455, "alt" :named("pasttype"), $P1456 :named("node"))
+    store_lex "$past", $P1457
+.annotate "line", 426
+    goto if_1444_end
+  if_1444:
+.annotate "line", 423
+    find_lex $P1447, "$ast"
+    $P1447."subtype"("zerowidth")
+.annotate "line", 424
+    get_hll_global $P1448, ["PAST"], "Regex"
+    find_lex $P1449, "$ast"
+    find_lex $P1450, "$past"
+    find_lex $P1451, "$/"
+    $P1452 = $P1448."new"($P1449, $P1450, "concat" :named("pasttype"), $P1451 :named("node"))
+    store_lex "$past", $P1452
+  if_1444_end:
+.annotate "line", 429
+    find_lex $P1458, "$i"
+    add $P1459, $P1458, 1
+    store_lex "$i", $P1459
 .annotate "line", 420
-    get_hll_global $P1435, ["PAST"], "Regex"
-    find_lex $P1436, "$ast"
-    find_lex $P1437, "$past"
-    find_lex $P1438, "$/"
-    $P1439 = $P1435."new"($P1436, $P1437, "concat" :named("pasttype"), $P1438 :named("node"))
-    store_lex "$past", $P1439
-  if_1431_end:
-.annotate "line", 425
-    find_lex $P1445, "$i"
-    add $P1446, $P1445, 1
-    store_lex "$i", $P1446
-.annotate "line", 416
-    .return ($P1446)
+    .return ($P1459)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "cclass_elem"  :subid("84_1261064016.27984") :method :outer("11_1261064016.27984")
-    .param pmc param_1457
-.annotate "line", 430
-    .const 'Sub' $P1482 = "86_1261064016.27984" 
-    capture_lex $P1482
-    .const 'Sub' $P1466 = "85_1261064016.27984" 
-    capture_lex $P1466
-    new $P1456, 'ExceptionHandler'
-    set_addr $P1456, control_1455
-    $P1456."handle_types"(58)
-    push_eh $P1456
+.sub "cclass_elem"  :subid("85_1266337348.54616") :method :outer("11_1266337348.54616")
+    .param pmc param_1470
+.annotate "line", 434
+    .const 'Sub' $P1495 = "87_1266337348.54616" 
+    capture_lex $P1495
+    .const 'Sub' $P1479 = "86_1266337348.54616" 
+    capture_lex $P1479
+    new $P1469, 'ExceptionHandler'
+    set_addr $P1469, control_1468
+    $P1469."handle_types"(58)
+    push_eh $P1469
     .lex "self", self
-    .lex "$/", param_1457
-.annotate "line", 431
-    new $P1458, "Undef"
-    .lex "$str", $P1458
-.annotate "line", 432
-    new $P1459, "Undef"
-    .lex "$past", $P1459
-.annotate "line", 431
-    new $P1460, "String"
-    assign $P1460, ""
-    store_lex "$str", $P1460
-    find_lex $P1461, "$past"
-.annotate "line", 433
-    find_lex $P1463, "$/"
-    unless_null $P1463, vivify_326
-    new $P1463, "Hash"
-  vivify_326:
-    set $P1464, $P1463["name"]
-    unless_null $P1464, vivify_327
-    new $P1464, "Undef"
-  vivify_327:
-    if $P1464, if_1462
+    .lex "$/", param_1470
+.annotate "line", 435
+    new $P1471, "Undef"
+    .lex "$str", $P1471
+.annotate "line", 436
+    new $P1472, "Undef"
+    .lex "$past", $P1472
+.annotate "line", 435
+    new $P1473, "String"
+    assign $P1473, ""
+    store_lex "$str", $P1473
+    find_lex $P1474, "$past"
 .annotate "line", 437
-    find_lex $P1477, "$/"
-    unless_null $P1477, vivify_328
-    new $P1477, "Hash"
-  vivify_328:
-    set $P1478, $P1477["charspec"]
-    unless_null $P1478, vivify_329
-    new $P1478, "Undef"
+    find_lex $P1476, "$/"
+    unless_null $P1476, vivify_329
+    new $P1476, "Hash"
   vivify_329:
-    defined $I1479, $P1478
-    unless $I1479, for_undef_330
-    iter $P1476, $P1478
-    new $P1508, 'ExceptionHandler'
-    set_addr $P1508, loop1507_handler
-    $P1508."handle_types"(65, 67, 66)
-    push_eh $P1508
-  loop1507_test:
-    unless $P1476, loop1507_done
-    shift $P1480, $P1476
-  loop1507_redo:
-    .const 'Sub' $P1482 = "86_1261064016.27984" 
-    capture_lex $P1482
-    $P1482($P1480)
-  loop1507_next:
-    goto loop1507_test
-  loop1507_handler:
-    .local pmc exception 
-    .get_results (exception) 
-    getattribute $P1509, exception, 'type'
-    eq $P1509, 65, loop1507_next
-    eq $P1509, 67, loop1507_redo
-  loop1507_done:
+    set $P1477, $P1476["name"]
+    unless_null $P1477, vivify_330
+    new $P1477, "Undef"
+  vivify_330:
+    if $P1477, if_1475
+.annotate "line", 441
+    find_lex $P1490, "$/"
+    unless_null $P1490, vivify_331
+    new $P1490, "Hash"
+  vivify_331:
+    set $P1491, $P1490["charspec"]
+    unless_null $P1491, vivify_332
+    new $P1491, "Undef"
+  vivify_332:
+    defined $I1492, $P1491
+    unless $I1492, for_undef_333
+    iter $P1489, $P1491
+    new $P1521, 'ExceptionHandler'
+    set_addr $P1521, loop1520_handler
+    $P1521."handle_types"(65, 67, 66)
+    push_eh $P1521
+  loop1520_test:
+    unless $P1489, loop1520_done
+    shift $P1493, $P1489
+  loop1520_redo:
+    .const 'Sub' $P1495 = "87_1266337348.54616" 
+    capture_lex $P1495
+    $P1495($P1493)
+  loop1520_next:
+    goto loop1520_test
+  loop1520_handler:
+    .local pmc exception 
+    .get_results (exception) 
+    getattribute $P1522, exception, 'type'
+    eq $P1522, 65, loop1520_next
+    eq $P1522, 67, loop1520_redo
+  loop1520_done:
     pop_eh 
-  for_undef_330:
-.annotate "line", 462
-    get_hll_global $P1510, ["PAST"], "Regex"
-    find_lex $P1511, "$str"
-    find_lex $P1512, "$/"
-    $P1513 = $P1510."new"($P1511, "enumcharlist" :named("pasttype"), $P1512 :named("node"))
-    store_lex "$past", $P1513
-.annotate "line", 436
-    goto if_1462_end
-  if_1462:
-.annotate "line", 433
-    .const 'Sub' $P1466 = "85_1261064016.27984" 
-    capture_lex $P1466
-    $P1466()
-  if_1462_end:
-.annotate "line", 464
-    find_lex $P1514, "$past"
-    find_lex $P1515, "$/"
-    unless_null $P1515, vivify_342
-    new $P1515, "Hash"
-  vivify_342:
-    set $P1516, $P1515["sign"]
-    unless_null $P1516, vivify_343
-    new $P1516, "Undef"
-  vivify_343:
-    set $S1517, $P1516
-    iseq $I1518, $S1517, "-"
-    $P1514."negate"($I1518)
-.annotate "line", 465
-    find_lex $P1519, "$/"
-    find_lex $P1520, "$past"
-    $P1521 = $P1519."!make"($P1520)
-.annotate "line", 430
-    .return ($P1521)
-  control_1455:
+  for_undef_333:
+.annotate "line", 466
+    get_hll_global $P1523, ["PAST"], "Regex"
+    find_lex $P1524, "$str"
+    find_lex $P1525, "$/"
+    $P1526 = $P1523."new"($P1524, "enumcharlist" :named("pasttype"), $P1525 :named("node"))
+    store_lex "$past", $P1526
+.annotate "line", 440
+    goto if_1475_end
+  if_1475:
+.annotate "line", 437
+    .const 'Sub' $P1479 = "86_1266337348.54616" 
+    capture_lex $P1479
+    $P1479()
+  if_1475_end:
+.annotate "line", 468
+    find_lex $P1527, "$past"
+    find_lex $P1528, "$/"
+    unless_null $P1528, vivify_345
+    new $P1528, "Hash"
+  vivify_345:
+    set $P1529, $P1528["sign"]
+    unless_null $P1529, vivify_346
+    new $P1529, "Undef"
+  vivify_346:
+    set $S1530, $P1529
+    iseq $I1531, $S1530, "-"
+    $P1527."negate"($I1531)
+.annotate "line", 469
+    find_lex $P1532, "$/"
+    find_lex $P1533, "$past"
+    $P1534 = $P1532."!make"($P1533)
+.annotate "line", 434
+    .return ($P1534)
+  control_1468:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1522, exception, "payload"
-    .return ($P1522)
+    getattribute $P1535, exception, "payload"
+    .return ($P1535)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1481"  :anon :subid("86_1261064016.27984") :outer("84_1261064016.27984")
-    .param pmc param_1483
-.annotate "line", 437
-    .const 'Sub' $P1489 = "87_1261064016.27984" 
-    capture_lex $P1489
-    .lex "$_", param_1483
-.annotate "line", 438
-    find_lex $P1486, "$_"
-    unless_null $P1486, vivify_331
-    new $P1486, "ResizablePMCArray"
-  vivify_331:
-    set $P1487, $P1486[1]
-    unless_null $P1487, vivify_332
-    new $P1487, "Undef"
-  vivify_332:
-    if $P1487, if_1485
-.annotate "line", 460
-    find_lex $P1503, "$str"
-    find_lex $P1504, "$_"
-    unless_null $P1504, vivify_333
-    new $P1504, "ResizablePMCArray"
-  vivify_333:
-    set $P1505, $P1504[0]
-    unless_null $P1505, vivify_334
-    new $P1505, "Undef"
+.sub "_block1494"  :anon :subid("87_1266337348.54616") :outer("85_1266337348.54616")
+    .param pmc param_1496
+.annotate "line", 441
+    .const 'Sub' $P1502 = "88_1266337348.54616" 
+    capture_lex $P1502
+    .lex "$_", param_1496
+.annotate "line", 442
+    find_lex $P1499, "$_"
+    unless_null $P1499, vivify_334
+    new $P1499, "ResizablePMCArray"
   vivify_334:
-    concat $P1506, $P1503, $P1505
-    store_lex "$str", $P1506
-    set $P1484, $P1506
-.annotate "line", 438
-    goto if_1485_end
-  if_1485:
-    .const 'Sub' $P1489 = "87_1261064016.27984" 
-    capture_lex $P1489
-    $P1502 = $P1489()
-    set $P1484, $P1502
-  if_1485_end:
-.annotate "line", 437
-    .return ($P1484)
+    set $P1500, $P1499[1]
+    unless_null $P1500, vivify_335
+    new $P1500, "Undef"
+  vivify_335:
+    if $P1500, if_1498
+.annotate "line", 464
+    find_lex $P1516, "$str"
+    find_lex $P1517, "$_"
+    unless_null $P1517, vivify_336
+    new $P1517, "ResizablePMCArray"
+  vivify_336:
+    set $P1518, $P1517[0]
+    unless_null $P1518, vivify_337
+    new $P1518, "Undef"
+  vivify_337:
+    concat $P1519, $P1516, $P1518
+    store_lex "$str", $P1519
+    set $P1497, $P1519
+.annotate "line", 442
+    goto if_1498_end
+  if_1498:
+    .const 'Sub' $P1502 = "88_1266337348.54616" 
+    capture_lex $P1502
+    $P1515 = $P1502()
+    set $P1497, $P1515
+  if_1498_end:
+.annotate "line", 441
+    .return ($P1497)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1488"  :anon :subid("87_1261064016.27984") :outer("86_1261064016.27984")
-.annotate "line", 439
-    new $P1490, "Undef"
-    .lex "$a", $P1490
-.annotate "line", 440
-    new $P1491, "Undef"
-    .lex "$b", $P1491
-.annotate "line", 441
-    new $P1492, "Undef"
-    .lex "$c", $P1492
-.annotate "line", 439
-    find_lex $P1493, "$_"
-    unless_null $P1493, vivify_335
-    new $P1493, "ResizablePMCArray"
-  vivify_335:
-    set $P1494, $P1493[0]
-    unless_null $P1494, vivify_336
-    new $P1494, "Undef"
-  vivify_336:
-    store_lex "$a", $P1494
-.annotate "line", 440
-    find_lex $P1495, "$_"
-    unless_null $P1495, vivify_337
-    new $P1495, "ResizablePMCArray"
-  vivify_337:
-    set $P1496, $P1495[1]
-    unless_null $P1496, vivify_338
-    new $P1496, "ResizablePMCArray"
+.sub "_block1501"  :anon :subid("88_1266337348.54616") :outer("87_1266337348.54616")
+.annotate "line", 443
+    new $P1503, "Undef"
+    .lex "$a", $P1503
+.annotate "line", 444
+    new $P1504, "Undef"
+    .lex "$b", $P1504
+.annotate "line", 445
+    new $P1505, "Undef"
+    .lex "$c", $P1505
+.annotate "line", 443
+    find_lex $P1506, "$_"
+    unless_null $P1506, vivify_338
+    new $P1506, "ResizablePMCArray"
   vivify_338:
-    set $P1497, $P1496[0]
-    unless_null $P1497, vivify_339
-    new $P1497, "Undef"
+    set $P1507, $P1506[0]
+    unless_null $P1507, vivify_339
+    new $P1507, "Undef"
   vivify_339:
-    store_lex "$b", $P1497
-.annotate "line", 441
+    store_lex "$a", $P1507
+.annotate "line", 444
+    find_lex $P1508, "$_"
+    unless_null $P1508, vivify_340
+    new $P1508, "ResizablePMCArray"
+  vivify_340:
+    set $P1509, $P1508[1]
+    unless_null $P1509, vivify_341
+    new $P1509, "ResizablePMCArray"
+  vivify_341:
+    set $P1510, $P1509[0]
+    unless_null $P1510, vivify_342
+    new $P1510, "Undef"
+  vivify_342:
+    store_lex "$b", $P1510
+.annotate "line", 445
 
                              $P0 = find_lex '$a'
                              $S0 = $P0
@@ -11646,142 +11683,142 @@
                              inc $I0
                              goto cclass_loop
                            cclass_done:
-                             $P1498 = box $S2
+                             $P1511 = box $S2
                          
-    store_lex "$c", $P1498
-.annotate "line", 458
-    find_lex $P1499, "$str"
-    find_lex $P1500, "$c"
-    concat $P1501, $P1499, $P1500
-    store_lex "$str", $P1501
-.annotate "line", 438
-    .return ($P1501)
+    store_lex "$c", $P1511
+.annotate "line", 462
+    find_lex $P1512, "$str"
+    find_lex $P1513, "$c"
+    concat $P1514, $P1512, $P1513
+    store_lex "$str", $P1514
+.annotate "line", 442
+    .return ($P1514)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1465"  :anon :subid("85_1261064016.27984") :outer("84_1261064016.27984")
-.annotate "line", 434
-    new $P1467, "Undef"
-    .lex "$name", $P1467
-    find_lex $P1468, "$/"
-    unless_null $P1468, vivify_340
-    new $P1468, "Hash"
-  vivify_340:
-    set $P1469, $P1468["name"]
-    unless_null $P1469, vivify_341
-    new $P1469, "Undef"
-  vivify_341:
-    set $S1470, $P1469
-    new $P1471, 'String'
-    set $P1471, $S1470
-    store_lex "$name", $P1471
-.annotate "line", 435
-    get_hll_global $P1472, ["PAST"], "Regex"
-    find_lex $P1473, "$name"
-    find_lex $P1474, "$/"
-    $P1475 = $P1472."new"($P1473, "subrule" :named("pasttype"), "method" :named("subtype"), $P1474 :named("node"))
-    store_lex "$past", $P1475
-.annotate "line", 433
-    .return ($P1475)
+.sub "_block1478"  :anon :subid("86_1266337348.54616") :outer("85_1266337348.54616")
+.annotate "line", 438
+    new $P1480, "Undef"
+    .lex "$name", $P1480
+    find_lex $P1481, "$/"
+    unless_null $P1481, vivify_343
+    new $P1481, "Hash"
+  vivify_343:
+    set $P1482, $P1481["name"]
+    unless_null $P1482, vivify_344
+    new $P1482, "Undef"
+  vivify_344:
+    set $S1483, $P1482
+    new $P1484, 'String'
+    set $P1484, $S1483
+    store_lex "$name", $P1484
+.annotate "line", 439
+    get_hll_global $P1485, ["PAST"], "Regex"
+    find_lex $P1486, "$name"
+    find_lex $P1487, "$/"
+    $P1488 = $P1485."new"($P1486, "subrule" :named("pasttype"), "method" :named("subtype"), $P1487 :named("node"))
+    store_lex "$past", $P1488
+.annotate "line", 437
+    .return ($P1488)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "mod_internal"  :subid("88_1261064016.27984") :method :outer("11_1261064016.27984")
-    .param pmc param_1526
-.annotate "line", 468
-    new $P1525, 'ExceptionHandler'
-    set_addr $P1525, control_1524
-    $P1525."handle_types"(58)
-    push_eh $P1525
-    .lex "self", self
-    .lex "$/", param_1526
-.annotate "line", 469
-    new $P1527, "Hash"
-    .lex "%mods", $P1527
-.annotate "line", 470
-    new $P1528, "Undef"
-    .lex "$n", $P1528
-.annotate "line", 469
-    get_global $P1529, "@MODIFIERS"
-    unless_null $P1529, vivify_344
-    new $P1529, "ResizablePMCArray"
-  vivify_344:
-    set $P1530, $P1529[0]
-    unless_null $P1530, vivify_345
-    new $P1530, "Undef"
-  vivify_345:
-    store_lex "%mods", $P1530
-.annotate "line", 470
-    find_lex $P1533, "$/"
-    unless_null $P1533, vivify_346
-    new $P1533, "Hash"
-  vivify_346:
-    set $P1534, $P1533["n"]
-    unless_null $P1534, vivify_347
-    new $P1534, "ResizablePMCArray"
+.sub "mod_internal"  :subid("89_1266337348.54616") :method :outer("11_1266337348.54616")
+    .param pmc param_1539
+.annotate "line", 472
+    new $P1538, 'ExceptionHandler'
+    set_addr $P1538, control_1537
+    $P1538."handle_types"(58)
+    push_eh $P1538
+    .lex "self", self
+    .lex "$/", param_1539
+.annotate "line", 473
+    new $P1540, "Hash"
+    .lex "%mods", $P1540
+.annotate "line", 474
+    new $P1541, "Undef"
+    .lex "$n", $P1541
+.annotate "line", 473
+    get_global $P1542, "@MODIFIERS"
+    unless_null $P1542, vivify_347
+    new $P1542, "ResizablePMCArray"
   vivify_347:
-    set $P1535, $P1534[0]
-    unless_null $P1535, vivify_348
-    new $P1535, "Undef"
+    set $P1543, $P1542[0]
+    unless_null $P1543, vivify_348
+    new $P1543, "Undef"
   vivify_348:
-    set $S1536, $P1535
-    isgt $I1537, $S1536, ""
-    if $I1537, if_1532
-    new $P1542, "Integer"
-    assign $P1542, 1
-    set $P1531, $P1542
-    goto if_1532_end
-  if_1532:
-    find_lex $P1538, "$/"
-    unless_null $P1538, vivify_349
-    new $P1538, "Hash"
+    store_lex "%mods", $P1543
+.annotate "line", 474
+    find_lex $P1546, "$/"
+    unless_null $P1546, vivify_349
+    new $P1546, "Hash"
   vivify_349:
-    set $P1539, $P1538["n"]
-    unless_null $P1539, vivify_350
-    new $P1539, "ResizablePMCArray"
+    set $P1547, $P1546["n"]
+    unless_null $P1547, vivify_350
+    new $P1547, "ResizablePMCArray"
   vivify_350:
-    set $P1540, $P1539[0]
-    unless_null $P1540, vivify_351
-    new $P1540, "Undef"
+    set $P1548, $P1547[0]
+    unless_null $P1548, vivify_351
+    new $P1548, "Undef"
   vivify_351:
-    set $N1541, $P1540
-    new $P1531, 'Float'
-    set $P1531, $N1541
-  if_1532_end:
-    store_lex "$n", $P1531
-.annotate "line", 471
-    find_lex $P1543, "$n"
-    find_lex $P1544, "$/"
-    unless_null $P1544, vivify_352
-    new $P1544, "Hash"
+    set $S1549, $P1548
+    isgt $I1550, $S1549, ""
+    if $I1550, if_1545
+    new $P1555, "Integer"
+    assign $P1555, 1
+    set $P1544, $P1555
+    goto if_1545_end
+  if_1545:
+    find_lex $P1551, "$/"
+    unless_null $P1551, vivify_352
+    new $P1551, "Hash"
   vivify_352:
-    set $P1545, $P1544["mod_ident"]
-    unless_null $P1545, vivify_353
-    new $P1545, "Hash"
+    set $P1552, $P1551["n"]
+    unless_null $P1552, vivify_353
+    new $P1552, "ResizablePMCArray"
   vivify_353:
-    set $P1546, $P1545["sym"]
-    unless_null $P1546, vivify_354
-    new $P1546, "Undef"
+    set $P1553, $P1552[0]
+    unless_null $P1553, vivify_354
+    new $P1553, "Undef"
   vivify_354:
-    set $S1547, $P1546
-    find_lex $P1548, "%mods"
-    unless_null $P1548, vivify_355
-    new $P1548, "Hash"
-    store_lex "%mods", $P1548
+    set $N1554, $P1553
+    new $P1544, 'Float'
+    set $P1544, $N1554
+  if_1545_end:
+    store_lex "$n", $P1544
+.annotate "line", 475
+    find_lex $P1556, "$n"
+    find_lex $P1557, "$/"
+    unless_null $P1557, vivify_355
+    new $P1557, "Hash"
   vivify_355:
-    set $P1548[$S1547], $P1543
+    set $P1558, $P1557["mod_ident"]
+    unless_null $P1558, vivify_356
+    new $P1558, "Hash"
+  vivify_356:
+    set $P1559, $P1558["sym"]
+    unless_null $P1559, vivify_357
+    new $P1559, "Undef"
+  vivify_357:
+    set $S1560, $P1559
+    find_lex $P1561, "%mods"
+    unless_null $P1561, vivify_358
+    new $P1561, "Hash"
+    store_lex "%mods", $P1561
+  vivify_358:
+    set $P1561[$S1560], $P1556
+.annotate "line", 476
+    find_lex $P1562, "$/"
+    $P1563 = $P1562."!make"(0)
 .annotate "line", 472
-    find_lex $P1549, "$/"
-    $P1550 = $P1549."!make"(0)
-.annotate "line", 468
-    .return ($P1550)
-  control_1524:
+    .return ($P1563)
+  control_1537:
     .local pmc exception 
     .get_results (exception) 
-    getattribute $P1551, exception, "payload"
-    .return ($P1551)
+    getattribute $P1564, exception, "payload"
+    .return ($P1564)
 .end
 
 # .include 'src/cheats/p6regex-grammar.pir'

Modified: branches/sys_mem_reduce/include/parrot/atomic/gcc_pcc.h
==============================================================================
--- branches/sys_mem_reduce/include/parrot/atomic/gcc_pcc.h	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/include/parrot/atomic/gcc_pcc.h	Sat Feb 20 22:12:51 2010	(r44252)
@@ -1,5 +1,5 @@
 /* atomic/gcc_pcc.h
- *  Copyright (C) 2006-2008, Parrot Foundation.
+ *  Copyright (C) 2006-2010, Parrot Foundation.
  *  SVN Info
  *     $Id$
  *  Overview:
@@ -23,6 +23,18 @@
 
 #  define PARROT_ATOMIC_PTR_SET(a, b) (a).val = (void *) (b)
 
+/*
+
+=over 4
+
+=item C<inline static void *parrot_ppc_cmpset(void * volatile *ptr, void
+*expect, void *update)>
+
+Generate ppc cmpset
+
+=cut
+
+*/
 inline static void *parrot_ppc_cmpset(void * volatile *ptr,
                                       void *expect, void *update)
 {
@@ -47,6 +59,18 @@
     return tmp;
 }
 
+/*
+
+=item C<inline static long parrot_ppc_add(volatile long *val, long what)>
+
+Generate ppc add
+
+=back
+
+=cut
+
+*/
+
 inline static long parrot_ppc_add(volatile long *val, long what)
 {
     long tmp;

Modified: branches/sys_mem_reduce/include/parrot/debugger.h
==============================================================================
--- branches/sys_mem_reduce/include/parrot/debugger.h	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/include/parrot/debugger.h	Sat Feb 20 22:12:51 2010	(r44252)
@@ -241,11 +241,6 @@
         __attribute__nonnull__(2);
 
 PARROT_CAN_RETURN_NULL
-opcode_t * PDB_compile(PARROT_INTERP, ARGIN(const char *command))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-PARROT_CAN_RETURN_NULL
 PDB_condition_t * PDB_cond(PARROT_INTERP, ARGIN(const char *command))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
@@ -398,9 +393,6 @@
 #define ASSERT_ARGS_PDB_check_condition __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(condition))
-#define ASSERT_ARGS_PDB_compile __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(command))
 #define ASSERT_ARGS_PDB_cond __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(command))

Modified: branches/sys_mem_reduce/include/parrot/extend.h
==============================================================================
--- branches/sys_mem_reduce/include/parrot/extend.h	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/include/parrot/extend.h	Sat Feb 20 22:12:51 2010	(r44252)
@@ -62,24 +62,6 @@
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
 PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-void * Parrot_call_sub(PARROT_INTERP,
-    Parrot_PMC sub_pmc,
-    ARGIN(const char *signature),
-    ...)
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(3);
-
-PARROT_EXPORT
-Parrot_Int Parrot_call_sub_ret_int(PARROT_INTERP,
-    Parrot_PMC sub_pmc,
-    ARGIN(const char *signature),
-    ...)
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(3);
-
-PARROT_EXPORT
 int Parrot_eprintf(NULLOK_INTERP, ARGIN(const char *s), ...)
         __attribute__nonnull__(2);
 
@@ -412,12 +394,6 @@
         __attribute__nonnull__(2)
         __attribute__nonnull__(3);
 
-#define ASSERT_ARGS_Parrot_call_sub __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(signature))
-#define ASSERT_ARGS_Parrot_call_sub_ret_int __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(signature))
 #define ASSERT_ARGS_Parrot_eprintf __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(s))
 #define ASSERT_ARGS_Parrot_ext_call __attribute__unused__ int _ASSERT_ARGS_CHECK = (\

Modified: branches/sys_mem_reduce/include/parrot/imcc.h
==============================================================================
--- branches/sys_mem_reduce/include/parrot/imcc.h	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/include/parrot/imcc.h	Sat Feb 20 22:12:51 2010	(r44252)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007-2008, Parrot Foundation.
+ * Copyright (C) 2007-2010, Parrot Foundation.
  * $Id$
  */
 
@@ -8,7 +8,7 @@
 
 PARROT_EXPORT void imcc_initialize(PARROT_INTERP);
 PARROT_EXPORT void imcc_start_handling_flags(PARROT_INTERP);
-PARROT_EXPORT int imcc_handle_flag(PARROT_INTERP, struct longopt_opt_info *opt, INTVAL *core);
+PARROT_EXPORT int imcc_handle_flag(PARROT_INTERP, struct longopt_opt_info *opt, Parrot_Run_core_t *core);
 PARROT_EXPORT int imcc_run(PARROT_INTERP, const char *sourcefile, int argc, char **argv);
 
 #endif /* PARROT_IMCC_H_GUARD */

Modified: branches/sys_mem_reduce/include/parrot/interpreter.h
==============================================================================
--- branches/sys_mem_reduce/include/parrot/interpreter.h	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/include/parrot/interpreter.h	Sat Feb 20 22:12:51 2010	(r44252)
@@ -606,7 +606,7 @@
 #endif   /* PARROT_IN_CORE */
 
 #ifndef PMC_IS_NULL
-#  define PMC_IS_NULL(pmc) PMC_is_null(NULL, (pmc))
+#  define PMC_IS_NULL(pmc) Parrot_pmc_is_null(NULL, (pmc))
 #endif
 #ifndef STRING_IS_NULL
 #  define STRING_IS_NULL(s) ((s) == NULL || STRING_is_null(NULL, (s))

Modified: branches/sys_mem_reduce/include/parrot/nci.h
==============================================================================
--- branches/sys_mem_reduce/include/parrot/nci.h	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/include/parrot/nci.h	Sat Feb 20 22:12:51 2010	(r44252)
@@ -17,6 +17,10 @@
 
 void *build_call_func(PARROT_INTERP, SHIM(PMC *pmc_nci), NOTNULL(STRING *signature), NOTNULL(int *jitted));
 
+void Parrot_nci_load_core_thunks(PARROT_INTERP);
+
+void Parrot_nci_load_extra_thunks(PARROT_INTERP);
+
 #endif /* PARROT_NCI_H_GUARD */
 
 /*

Modified: branches/sys_mem_reduce/include/parrot/oo.h
==============================================================================
--- branches/sys_mem_reduce/include/parrot/oo.h	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/include/parrot/oo.h	Sat Feb 20 22:12:51 2010	(r44252)
@@ -164,11 +164,6 @@
 
 PARROT_CAN_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
-PMC * Parrot_oo_get_namespace(SHIM_INTERP, ARGIN(const PMC *classobj))
-        __attribute__nonnull__(2);
-
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
 PMC * Parrot_oo_newclass_from_str(PARROT_INTERP, ARGIN(STRING *name))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
@@ -235,8 +230,6 @@
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(self) \
     , PARROT_ASSERT_ARG(ns))
-#define ASSERT_ARGS_Parrot_oo_get_namespace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(classobj))
 #define ASSERT_ARGS_Parrot_oo_newclass_from_str __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(name))

Modified: branches/sys_mem_reduce/include/parrot/pmc.h
==============================================================================
--- branches/sys_mem_reduce/include/parrot/pmc.h	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/include/parrot/pmc.h	Sat Feb 20 22:12:51 2010	(r44252)
@@ -23,72 +23,84 @@
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
 PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-PMC * constant_pmc_new(PARROT_INTERP, INTVAL base_type)
+void Parrot_pmc_create_mro(PARROT_INTERP, INTVAL type)
         __attribute__nonnull__(1);
 
 PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-PMC * constant_pmc_new_init(PARROT_INTERP,
-    INTVAL base_type,
-    ARGIN_NULLOK(PMC *init))
-        __attribute__nonnull__(1);
+void Parrot_pmc_destroy(PARROT_INTERP, ARGMOD(PMC *pmc))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*pmc);
 
 PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-PMC * constant_pmc_new_noinit(PARROT_INTERP, INTVAL base_type)
-        __attribute__nonnull__(1);
+void Parrot_pmc_gc_register(PARROT_INTERP, ARGIN(PMC *pmc))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 PARROT_EXPORT
-void gc_register_pmc(PARROT_INTERP, ARGIN(PMC *pmc))
+void Parrot_pmc_gc_unregister(PARROT_INTERP, ARGIN(PMC *pmc))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
 PARROT_EXPORT
-void gc_unregister_pmc(PARROT_INTERP, ARGIN(PMC *pmc))
+INTVAL Parrot_pmc_get_type(PARROT_INTERP, ARGIN(PMC *name))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
 PARROT_EXPORT
-void Parrot_create_mro(PARROT_INTERP, INTVAL type)
+PARROT_WARN_UNUSED_RESULT
+INTVAL Parrot_pmc_get_type_str(PARROT_INTERP, ARGIN_NULLOK(STRING *name))
         __attribute__nonnull__(1);
 
 PARROT_EXPORT
-void Parrot_pmc_destroy(PARROT_INTERP, ARGMOD(PMC *pmc))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*pmc);
+INTVAL Parrot_pmc_is_null(SHIM_INTERP, ARGIN_NULLOK(const PMC *pmc));
 
 PARROT_EXPORT
-INTVAL PMC_is_null(SHIM_INTERP, ARGIN_NULLOK(const PMC *pmc));
+PARROT_CANNOT_RETURN_NULL
+PARROT_WARN_UNUSED_RESULT
+PMC * Parrot_pmc_new(PARROT_INTERP, INTVAL base_type)
+        __attribute__nonnull__(1);
 
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-PMC * pmc_new(PARROT_INTERP, INTVAL base_type)
+PMC * Parrot_pmc_new_constant(PARROT_INTERP, INTVAL base_type)
+        __attribute__nonnull__(1);
+
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+PMC * Parrot_pmc_new_constant_init(PARROT_INTERP,
+    INTVAL base_type,
+    ARGIN_NULLOK(PMC *init))
+        __attribute__nonnull__(1);
+
+PARROT_EXPORT
+PARROT_CANNOT_RETURN_NULL
+PMC * Parrot_pmc_new_constant_noinit(PARROT_INTERP, INTVAL base_type)
         __attribute__nonnull__(1);
 
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
-PMC * pmc_new_init(PARROT_INTERP, INTVAL base_type, ARGOUT(PMC *init))
+PMC * Parrot_pmc_new_init(PARROT_INTERP,
+    INTVAL base_type,
+    ARGOUT(PMC *init))
         __attribute__nonnull__(1)
         __attribute__nonnull__(3)
         FUNC_MODIFIES(*init);
 
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
-PMC * pmc_new_noinit(PARROT_INTERP, INTVAL base_type)
+PMC * Parrot_pmc_new_noinit(PARROT_INTERP, INTVAL base_type)
         __attribute__nonnull__(1);
 
 PARROT_EXPORT
-INTVAL pmc_register(PARROT_INTERP, ARGIN(STRING *name))
+INTVAL Parrot_pmc_register_new_type(PARROT_INTERP, ARGIN(STRING *name))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 PARROT_IGNORABLE_RESULT
-PMC * pmc_reuse(PARROT_INTERP,
+PMC * Parrot_pmc_reuse(PARROT_INTERP,
     ARGIN(PMC *pmc),
     INTVAL new_type,
     UINTVAL flags)
@@ -98,7 +110,7 @@
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 PARROT_IGNORABLE_RESULT
-PMC * pmc_reuse_by_class(PARROT_INTERP,
+PMC * Parrot_pmc_reuse_by_class(PARROT_INTERP,
     ARGMOD(PMC *pmc),
     ARGIN(PMC *class_),
     UINTVAL flags)
@@ -110,7 +122,7 @@
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 PARROT_IGNORABLE_RESULT
-PMC * pmc_reuse_init(PARROT_INTERP,
+PMC * Parrot_pmc_reuse_init(PARROT_INTERP,
     ARGIN(PMC *pmc),
     INTVAL new_type,
     ARGIN(PMC *init),
@@ -119,82 +131,92 @@
         __attribute__nonnull__(2)
         __attribute__nonnull__(4);
 
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-INTVAL pmc_type(PARROT_INTERP, ARGIN_NULLOK(STRING *name))
-        __attribute__nonnull__(1);
-
-PARROT_EXPORT
-INTVAL pmc_type_p(PARROT_INTERP, ARGIN(PMC *name))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-INTVAL get_new_vtable_index(PARROT_INTERP)
-        __attribute__nonnull__(1);
-
-void temporary_pmc_free(PARROT_INTERP, ARGMOD(PMC *pmc))
+void Parrot_pmc_free_temporary(PARROT_INTERP, ARGMOD(PMC *pmc))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*pmc);
 
+INTVAL Parrot_pmc_get_new_vtable_index(PARROT_INTERP)
+        __attribute__nonnull__(1);
+
 PARROT_CANNOT_RETURN_NULL
-PMC * temporary_pmc_new(PARROT_INTERP, INTVAL base_type)
+PMC * Parrot_pmc_new_temporary(PARROT_INTERP, INTVAL base_type)
         __attribute__nonnull__(1);
 
-#define ASSERT_ARGS_constant_pmc_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_constant_pmc_new_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_constant_pmc_new_noinit __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+#define ASSERT_ARGS_Parrot_pmc_create_mro __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_gc_register_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+#define ASSERT_ARGS_Parrot_pmc_destroy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(pmc))
-#define ASSERT_ARGS_gc_unregister_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+#define ASSERT_ARGS_Parrot_pmc_gc_register __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(pmc))
-#define ASSERT_ARGS_Parrot_create_mro __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_pmc_destroy __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+#define ASSERT_ARGS_Parrot_pmc_gc_unregister __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(pmc))
-#define ASSERT_ARGS_PMC_is_null __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
-#define ASSERT_ARGS_pmc_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+#define ASSERT_ARGS_Parrot_pmc_get_type __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_Parrot_pmc_get_type_str __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_Parrot_pmc_is_null __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+#define ASSERT_ARGS_Parrot_pmc_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_Parrot_pmc_new_constant __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_Parrot_pmc_new_constant_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_pmc_new_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+#define ASSERT_ARGS_Parrot_pmc_new_constant_noinit \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_Parrot_pmc_new_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(init))
-#define ASSERT_ARGS_pmc_new_noinit __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+#define ASSERT_ARGS_Parrot_pmc_new_noinit __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_pmc_register __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+#define ASSERT_ARGS_Parrot_pmc_register_new_type __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(name))
-#define ASSERT_ARGS_pmc_reuse __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+#define ASSERT_ARGS_Parrot_pmc_reuse __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(pmc))
-#define ASSERT_ARGS_pmc_reuse_by_class __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+#define ASSERT_ARGS_Parrot_pmc_reuse_by_class __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(pmc) \
     , PARROT_ASSERT_ARG(class_))
-#define ASSERT_ARGS_pmc_reuse_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+#define ASSERT_ARGS_Parrot_pmc_reuse_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(pmc) \
     , PARROT_ASSERT_ARG(init))
-#define ASSERT_ARGS_pmc_type __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_pmc_type_p __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(name))
-#define ASSERT_ARGS_get_new_vtable_index __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_temporary_pmc_free __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+#define ASSERT_ARGS_Parrot_pmc_free_temporary __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(pmc))
-#define ASSERT_ARGS_temporary_pmc_new __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+#define ASSERT_ARGS_Parrot_pmc_get_new_vtable_index \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_Parrot_pmc_new_temporary __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: src/pmc.c */
 
+/* Allows compatibility with old name (see r44190) */
+#define Parrot_create_mro       Parrot_pmc_create_mro
+#define PMC_is_null             Parrot_pmc_is_null
+#define constant_pmc_new        Parrot_pmc_new_constant
+#define constant_pmc_new_init   Parrot_pmc_new_constant_init
+#define gc_register_pmc         Parrot_pmc_gc_register
+#define gc_unregister_pmc       Parrot_pmc_gc_unregister
+#define pmc_new                 Parrot_pmc_new
+#define pmc_new_init            Parrot_pmc_new_init
+#define pmc_new_noinit          Parrot_pmc_new_noinit
+#define pmc_register            Parrot_pmc_register_new_type
+#define pmc_reuse               Parrot_pmc_reuse
+#define pmc_reuse_by_class      Parrot_pmc_reuse_by_class
+#define pmc_reuse_init          Parrot_pmc_reuse_init
+#define pmc_reuse_no_init       Parrot_pmc_reuse_noinit
+#define pmc_type                Parrot_pmc_get_type_str
+#define pmc_type_p              Parrot_pmc_get_type
+
 #endif /* PARROT_PMC_H_GUARD */
 
 /*

Modified: branches/sys_mem_reduce/include/parrot/pmc_freeze.h
==============================================================================
--- branches/sys_mem_reduce/include/parrot/pmc_freeze.h	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/include/parrot/pmc_freeze.h	Sat Feb 20 22:12:51 2010	(r44252)
@@ -13,9 +13,6 @@
 #ifndef PARROT_PMC_FREEZE_H_GUARD
 #define PARROT_PMC_FREEZE_H_GUARD
 
-struct _visit_info;
-typedef void (*visit_f)(PARROT_INTERP, ARGIN_NULLOK(PMC*), ARGIN(PMC*));
-
 typedef enum {
     VISIT_HOW_PMC_TO_VISITOR     = 0x00, /* push to visitor */
     VISIT_HOW_VISITOR_TO_PMC     = 0x01, /* shift from visitor */
@@ -124,6 +121,13 @@
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
+INTVAL Parrot_freeze_size(PARROT_INTERP, ARGIN(PMC *pmc))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
 PMC* Parrot_thaw(PARROT_INTERP, ARGIN(STRING *image))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
@@ -135,18 +139,35 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
+void Parrot_visit_loop_thawfinish(PARROT_INTERP, ARGIN(PMC *info))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+void Parrot_visit_loop_visit(PARROT_INTERP, ARGIN(PMC *info))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
 #define ASSERT_ARGS_Parrot_clone __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(pmc))
 #define ASSERT_ARGS_Parrot_freeze __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(pmc))
+#define ASSERT_ARGS_Parrot_freeze_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(pmc))
 #define ASSERT_ARGS_Parrot_thaw __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(image))
 #define ASSERT_ARGS_Parrot_thaw_constants __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(image))
+#define ASSERT_ARGS_Parrot_visit_loop_thawfinish __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(info))
+#define ASSERT_ARGS_Parrot_visit_loop_visit __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(info))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: src/pmc_freeze.c */
 

Modified: branches/sys_mem_reduce/include/parrot/runcore_profiling.h
==============================================================================
--- branches/sys_mem_reduce/include/parrot/runcore_profiling.h	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/include/parrot/runcore_profiling.h	Sat Feb 20 22:12:51 2010	(r44252)
@@ -40,7 +40,7 @@
     PPROF_LINE_END_OF_RUNLOOP
 } Parrot_profiling_line;
 
-typedef void (*profiling_output_fn)(ARGIN(Parrot_profiling_runcore_t*), ARGIN_NULLOK(Parrot_profiling_line));
+typedef void (*profiling_output_fn)(ARGIN(Parrot_profiling_runcore_t*), ARGIN(PPROF_DATA*), ARGIN_NULLOK(Parrot_profiling_line));
 typedef        profiling_output_fn Parrot_profiling_output_fn;
 
 typedef enum Parrot_profiling_datatype {
@@ -92,7 +92,6 @@
     UINTVAL         time_size;  /* how big is the following array */
     UHUGEINTVAL    *time;       /* time spent between DO_OP and start/end of a runcore */
     Hash           *line_cache; /* hash for caching pc -> line mapping */
-    PPROF_DATA      pprof_data[PPROF_DATA_MAX+1]; /* array for storage of one line of profiling data */
 };
 
 #define Profiling_flag_SET(runcore, flag) \

Modified: branches/sys_mem_reduce/lib/Parrot/Configure/Step/List.pm
==============================================================================
--- branches/sys_mem_reduce/lib/Parrot/Configure/Step/List.pm	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/lib/Parrot/Configure/Step/List.pm	Sat Feb 20 22:12:51 2010	(r44252)
@@ -67,7 +67,6 @@
     gen::core_pmcs
     gen::crypto
     gen::opengl
-    gen::call_list
     gen::makefiles
     gen::platform
     gen::config_pm

Modified: branches/sys_mem_reduce/lib/Parrot/Docs/Section/Tools.pm
==============================================================================
--- branches/sys_mem_reduce/lib/Parrot/Docs/Section/Tools.pm	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/lib/Parrot/Docs/Section/Tools.pm	Sat Feb 20 22:12:51 2010	(r44252)
@@ -46,7 +46,6 @@
             '',
             $self->new_item( '', 'tools/dev/as2c.pl' ),
             $self->new_item( '', 'tools/build/cc_flags.pl' ),
-            $self->new_item( '', 'tools/build/nativecall.pl' ),
             $self->new_item( '', 'tools/build/vtable_h.pl' ),
             $self->new_item( '', 'tools/build/vtable_extend.pl' ),
         ),

Modified: branches/sys_mem_reduce/lib/Parrot/Ops2c/Utils.pm
==============================================================================
--- branches/sys_mem_reduce/lib/Parrot/Ops2c/Utils.pm	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/lib/Parrot/Ops2c/Utils.pm	Sat Feb 20 22:12:51 2010	(r44252)
@@ -1063,7 +1063,7 @@
 $self->{sym_export} PMC*
 $load_func(PARROT_INTERP)
 {
-    PMC *const lib      = pmc_new(interp, enum_class_ParrotLibrary);
+    PMC *const lib = Parrot_pmc_new(interp, enum_class_ParrotLibrary);
     ((Parrot_ParrotLibrary_attributes*)PMC_data(lib))->oplib_init = (void *) $self->{init_func};
     dynop_register(interp, lib);
     return lib;

Modified: branches/sys_mem_reduce/lib/Parrot/Pmc2c/Attribute.pm
==============================================================================
--- branches/sys_mem_reduce/lib/Parrot/Pmc2c/Attribute.pm	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/lib/Parrot/Pmc2c/Attribute.pm	Sat Feb 20 22:12:51 2010	(r44252)
@@ -207,7 +207,7 @@
     }
     elsif ($attrtype eq "INTVAL") {
         $decl .= <<"EOA";
-            PMC * const attr_value = pmc_new(interp, enum_class_Integer); \\
+            PMC * const attr_value = Parrot_pmc_new(interp, enum_class_Integer); \\
             VTABLE_set_integer_native(interp, attr_value, value); \\
             VTABLE_set_attr_str(interp, pmc, \\
                               Parrot_str_new_constant(interp, "$attrname"), attr_value); \\
@@ -215,7 +215,7 @@
     }
     elsif ($attrtype eq "FLOATVAL") {
         $decl .= <<"EOA";
-            PMC * const attr_value = pmc_new(interp, enum_class_Float); \\
+            PMC * const attr_value = Parrot_pmc_new(interp, enum_class_Float); \\
             VTABLE_set_number_native(interp, attr_value, value); \\
             VTABLE_set_attr_str(interp, pmc, \\
                               Parrot_str_new_constant(interp, "$attrname"), attr_value); \\
@@ -223,7 +223,7 @@
     }
     elsif ($attrtype =~ $isptrtostring) {
         $decl .= <<"EOA";
-            PMC * const attr_value = pmc_new(interp, enum_class_String); \\
+            PMC * const attr_value = Parrot_pmc_new(interp, enum_class_String); \\
             VTABLE_set_string_native(interp, attr_value, value); \\
             VTABLE_set_attr_str(interp, pmc, \\
                               Parrot_str_new_constant(interp, "$attrname"), attr_value); \\

Modified: branches/sys_mem_reduce/lib/Parrot/Pmc2c/MethodEmitter.pm
==============================================================================
--- branches/sys_mem_reduce/lib/Parrot/Pmc2c/MethodEmitter.pm	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/lib/Parrot/Pmc2c/MethodEmitter.pm	Sat Feb 20 22:12:51 2010	(r44252)
@@ -115,58 +115,6 @@
 EOC
 }
 
-=item C<proto($type,$parameters)>
-
-Determines the prototype (argument signature) for a method body
-(see F<src/call_list>).
-
-=cut
-
-my %calltype = (
-    'char'     => 'c',
-    'short'    => 's',
-    'char'     => 'c',
-    'short'    => 's',
-    'int'      => 'i',
-    'INTVAL'   => 'I',
-    'float'    => 'f',
-    'FLOATVAL' => 'N',
-    'double'   => 'd',
-    'STRING*'  => 'S',
-    'STRING *' => 'S',
-    'char*'    => 't',
-    'char *'   => 't',
-    'PMC*'     => 'P',
-    'PMC *'    => 'P',
-    'short*'   => '2',
-    'short *'  => '2',
-    'int*'     => '3',
-    'int *'    => '3',
-    'long*'    => '4',
-    'long *'   => '4',
-    'void'     => 'v',
-    'void*'    => 'b',
-    'void *'   => 'b',
-    'void**'   => 'B',
-    'void **'  => 'B',
-);
-
-sub proto {
-    my ( $type, $parameters ) = @_;
-
-    # reduce to a comma separated set of types
-    $parameters =~ s/\w+(,|$)/,/g;
-    $parameters =~ s/ //g;
-
-    # type method(interp, self, parameters...)
-    my $ret = $calltype{ $type or "void" };
-    $ret .= "JO" . join( '',
-        map { $calltype{$_} or die "Unknown signature type '$_'" }
-        split( /,/, $parameters ) );
-
-    return $ret;
-}
-
 =item C<rewrite_nci_method($self, $pmc )>
 
 Rewrites the method body performing the various macro substitutions for

Modified: branches/sys_mem_reduce/lib/Parrot/Pmc2c/PMCEmitter.pm
==============================================================================
--- branches/sys_mem_reduce/lib/Parrot/Pmc2c/PMCEmitter.pm	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/lib/Parrot/Pmc2c/PMCEmitter.pm	Sat Feb 20 22:12:51 2010	(r44252)
@@ -251,54 +251,6 @@
         unless $self->is_dynamic;
 }
 
-=item C<proto($type,$parameters)>
-
-Determines the prototype (argument signature) for a method body
-(see F<src/call_list>).
-
-=cut
-
-my %calltype = (
-    "char"     => "c",
-    "short"    => "s",
-    "char"     => "c",
-    "short"    => "s",
-    "int"      => "i",
-    "INTVAL"   => "I",
-    "float"    => "f",
-    "FLOATVAL" => "N",
-    "double"   => "d",
-    "STRING*"  => "S",
-    "char*"    => "t",
-    "PMC*"     => "P",
-    "short*"   => "2",
-    "int*"     => "3",
-    "long*"    => "4",
-    "void"     => "v",
-    "void*"    => "b",
-    "void**"   => "B",
-);
-
-sub proto {
-    my ( $type, $parameters ) = @_;
-
-    # reduce to a comma separated set of types
-    $parameters =~ s/\w+(,|$)/,/g;
-    $parameters =~ s/ //g;
-
-    # flatten whitespace before "*" in return value
-    $type =~ s/\s+\*$/\*/ if defined $type;
-
-    # type method(interp, self, parameters...)
-    my $ret = $calltype{ $type or "void" }
-        . "JO"
-        . join( '',
-            map { $calltype{$_} or die "Unknown signature type '$_'" }
-            split( /,/, $parameters ) );
-
-    return $ret;
-}
-
 =item C<pre_method_gen>
 
 Generate switch-bases VTABLE for MULTI
@@ -703,7 +655,7 @@
         }
 
         /* set up MRO and _namespace */
-        Parrot_create_mro(interp, entry);
+        Parrot_pmc_create_mro(interp, entry);
 EOC
 
     # declare each nci method for this class
@@ -870,7 +822,7 @@
 PARROT_WARN_UNUSED_RESULT
 PMC* Parrot_${classname}_get_mro(PARROT_INTERP, PMC* mro) {
     if (PMC_IS_NULL(mro)) {
-        mro = pmc_new(interp, enum_class_ResizableStringArray);
+        mro = Parrot_pmc_new(interp, enum_class_ResizableStringArray);
     }
 $get_mro
     VTABLE_unshift_string(interp, mro,

Modified: branches/sys_mem_reduce/lib/Parrot/Pmc2c/UtilFunctions.pm
==============================================================================
--- branches/sys_mem_reduce/lib/Parrot/Pmc2c/UtilFunctions.pm	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/lib/Parrot/Pmc2c/UtilFunctions.pm	Sat Feb 20 22:12:51 2010	(r44252)
@@ -163,7 +163,7 @@
     int pass;
 
     /* create a library PMC */
-    pmc = constant_pmc_new(interp, enum_class_ParrotLibrary);
+    pmc = Parrot_pmc_new_constant(interp, enum_class_ParrotLibrary);
 
     /* TODO: stuff some info into this PMC's props */
 
@@ -173,7 +173,7 @@
         my $lhs = $info->{flags}{no_init} ? "" : "type$class = ";
         $cout .= <<"EOC";
     whoami = CONST_STRING_GEN(interp, "$class");
-    ${lhs}pmc_register(interp, whoami);
+    ${lhs}Parrot_pmc_register_new_type(interp, whoami);
 EOC
     }
     $cout .= <<"EOC";

Modified: branches/sys_mem_reduce/runtime/parrot/include/test_more.pir
==============================================================================
--- branches/sys_mem_reduce/runtime/parrot/include/test_more.pir	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/runtime/parrot/include/test_more.pir	Sat Feb 20 22:12:51 2010	(r44252)
@@ -20,7 +20,7 @@
     .local pmc exports, curr_namespace, test_namespace
     curr_namespace = get_namespace
     test_namespace = get_root_namespace [ 'parrot'; 'Test'; 'More' ]
-    exports = split ' ', 'plan diag ok nok is is_deeply like substring isa_ok skip isnt todo throws_like lives_ok dies_ok throws_substring'
+    exports = split ' ', 'plan diag ok nok is is_deeply is_null like substring isa_ok skip isnt todo throws_like lives_ok dies_ok throws_substring'
 
     test_namespace.'export_to'(curr_namespace, exports)
 

Modified: branches/sys_mem_reduce/runtime/parrot/library/Math/Rand.pir
==============================================================================
--- branches/sys_mem_reduce/runtime/parrot/library/Math/Rand.pir	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/runtime/parrot/library/Math/Rand.pir	Sat Feb 20 22:12:51 2010	(r44252)
@@ -52,9 +52,7 @@
 .namespace [ 'Math'; 'Rand' ]
 
 .sub '__onload' :anon :load
-#    print "__onload Math::Rand\n"
-    new $P0, 'Integer'
-    set $P0, 1
+    $P0 = box 1
     set_global 'next', $P0
 .end
 

Deleted: branches/sys_mem_reduce/runtime/parrot/library/Math/Random/mt19937ar.pir
==============================================================================
--- branches/sys_mem_reduce/runtime/parrot/library/Math/Random/mt19937ar.pir	Sat Feb 20 22:12:51 2010	(r44251)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,379 +0,0 @@
-# Copyright (C) 2008, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-Math/Random/mt19937ar.pir - the Mersenne Twisted pseudorandom number generator
-
-=head1 DESCRIPTION
-
-This is a PIR version of the C-program for MT19937.
-
-The MT19937 algorithm was created by Makoto Matsumoto and Takuji Nishimura.
-
-See L<http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html> and
-L<http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/emt19937ar.html>.
-
-=cut
-
-.namespace [ 'Math'; 'Random'; 'MT' ]
-
-.sub '__onload' :anon :load
-#    print "__onload Math::Random::MT\n"
-    $P0 = newclass ['Math'; 'Random'; 'MT']
-    addattribute $P0, '@mt'
-    addattribute $P0, '$mti'
-    addattribute $P0, '@mag01'
-.end
-
-.const int N = 624
-.const int M = 397
-.const int MATRIX_A = 0x9908b0df
-.const int UPPER_MASK = 0x80000000
-.const int LOWER_MASK = 0x7fffffff
-
-.sub 'init' :vtable :method
-    new $P0, 'Integer'
-    set $P0, N
-    inc $P0             # $mti == N+1 means @mt is not initialized
-    setattribute self, '$mti', $P0
-    new $P0, 'FixedIntegerArray'
-    set $P0, N
-    setattribute self, '@mt', $P0
-    new $P0, 'FixedIntegerArray'
-    set $P0, 2
-    $P0[0] = 0
-    $P0[1] = MATRIX_A
-    setattribute self, '@mag01', $P0
-.end
-
-
-.sub 'clone' :vtable :method
-    .local pmc res
-    res = new [ 'Math'; 'Random'; 'MT' ]
-    $P0 = getattribute self, '$mti'
-    $P1 = clone $P0
-    setattribute res, '$mti', $P1
-    $P0 = getattribute self, '@mt'
-    $P1 = clone $P0
-    setattribute res, '@mt', $P1
-    .return (res)
-.end
-
-
-=head2 Initialization
-
-=over 4
-
-=item C<init_genrand (seed)>
-
-initializes the state vector by using one "seed", which may be zero.
-
-=cut
-
-.sub 'init_genrand' :method
-    .param int seed
-    .local pmc mt
-    .local int i
-    mt = getattribute self, '@mt'
-    seed &= 0xffffffff
-    mt[0] = seed
-    $I1 = seed
-    i = 1
-  L1:
-    unless i < N goto L2
-    $I0 = $I1 >>> 30
-    bxor $I0, $I1
-    $I0 *= 1812433253
-    $I0 += i
-    $I0 &= 0xffffffff
-    mt[i] = $I0
-    $I1 = $I0
-    inc i
-    goto L1
-  L2:
-    .local pmc mti
-    mti = getattribute self, '$mti'
-    set mti, i
-.end
-
-
-=item C<init_by_array (init_key)>
-
-initializes the state vector by using an array.
-
-=cut
-
-.sub 'init_by_array' :method
-    .param pmc init_key
-    .local pmc mt
-    mt = getattribute self, '@mt'
-    .local int i, j, k, key_length
-    self.'init_genrand'(19650218)
-    i = 1
-    j = 0
-    key_length = elements init_key
-    k = key_length
-    unless N > k goto L0
-    k = N
-  L0:
-  L1:
-    unless k goto L2
-    $I0 = i - 1
-    $I1 = mt[$I0]
-    $I2 = $I1 >>> 30
-    bxor $I2, $I1
-    $I2 *= 1664525
-    $I1 = mt[i]
-    bxor $I1, $I2
-    $I2 = init_key[j]
-    $I1 += $I2
-    $I1 += j
-    $I1 &= 0xffffffff
-    mt[i] = $I1
-    inc i
-    inc j
-    unless i >= N goto L3
-    $I0 = N - 1
-    $I1 = mt[$I0]
-    mt[0] = $I1
-    i = 1
-  L3:
-    unless j >= key_length goto L4
-    j = 0
-  L4:
-    dec k
-    goto L1
-  L2:
-    k = N - 1
-  L5:
-    unless k goto L6
-    $I0 = i - 1
-    $I1 = mt[$I0]
-    $I2 = $I1 >>> 30
-    bxor $I2, $I1
-    $I2 *= 1566083941
-    $I1 = mt[i]
-    bxor $I1, $I2
-    $I1 -= i
-    $I1 &= 0xffffffff
-    mt[i] = $I1
-    inc i
-    unless i >= N goto L7
-    $I0 = N - 1
-    $I1 = mt[$I0]
-    mt[0] = $I1
-    i = 1
-  L7:
-    dec k
-    goto L5
-  L6:
-    mt[0] = 0x80000000
-    $I1 = mt[0]
-.end
-
-=back
-
-=head2 Generation
-
-After initialization, the following type of pseudorandom numbers are available.
-
-=over 4
-
-=item C<genrand_int32 ()>
-
-generates a random number on [0,0xffffffff]-interval
-
-=cut
-
-.sub 'genrand_int32' :method
-    .local int y
-    .local pmc mt
-    mt = getattribute self, '@mt'
-    .local pmc mti
-    mti = getattribute self, '$mti'
-    .local pmc mag01
-    mag01 = getattribute self, '@mag01'
-    unless mti >= N goto L1     # generate N words at one time
-    $I0 = N + 1
-    unless mti == $I0 goto L2   # if init_genrand() has not been called
-    self.'init_genrand'(5489)   # a default seed is used
-  L2:
-    .local int kk
-    kk = 0
-  L3:
-    $I0 = N - M
-    unless kk < $I0 goto L4
-    $I0 = kk
-    $I1 = mt[$I0]
-    $I1 &= UPPER_MASK
-    $I0 = kk + 1
-    $I2 = mt[$I0]
-    $I2 &= LOWER_MASK
-    y = $I1 | $I2
-    $I0 = kk + M
-    $I1 = mt[$I0]
-    $I2 = y >>> 1
-    bxor $I1, $I2
-    $I0 = y & 1
-    $I2 = mag01[$I0]
-    bxor $I1, $I2
-    mt[kk] = $I1
-    inc kk
-    goto L3
-  L4:
-    $I0 = N - 1
-    unless kk < $I0 goto L5
-    $I0 = kk
-    $I1 = mt[$I0]
-    $I1 &= UPPER_MASK
-    $I0 = kk + 1
-    $I2 = mt[$I0]
-    $I2 &= LOWER_MASK
-    y = $I1 | $I2
-    $I0 = M - N
-    $I0 += kk
-    $I1 = mt[$I0]
-    $I2 = y >>> 1
-    bxor $I1, $I2
-    $I0 = y & 1
-    $I2 = mag01[$I0]
-    bxor $I1, $I2
-    mt[kk] = $I1
-    inc kk
-    goto L4
-  L5:
-    $I0 = N - 1
-    $I1 = mt[$I0]
-    $I1 &= UPPER_MASK
-    $I0 = 0
-    $I2 = mt[$I0]
-    $I2 &= LOWER_MASK
-    y = $I1 | $I2
-    $I0 = M - 1
-    $I1 = mt[$I0]
-    $I2 = y >>> 1
-    bxor $I1, $I2
-    $I0 = y & 1
-    $I2 = mag01[$I0]
-    bxor $I1, $I2
-    $I0 = N - 1
-    mt[$I0] = $I1
-    set mti, 0
-  L1:
-    y = mt[mti]
-    inc mti
-    # Tempering
-    $I0 = y >>> 11
-    bxor y, $I0
-    $I0 = y << 7
-    $I0 &= 0x9d2c5680
-    bxor y, $I0
-    $I0 = y << 15
-    $I0 &= 0xefc60000
-    bxor y, $I0
-    $I0 = y >>> 18
-    bxor y, $I0
-    .return (y)
-.end
-
-
-=item C<genrand_int31 ()>
-
-generates a random number on [0,0x7fffffff]-interval
-
-=cut
-
-.sub 'genrand_int31' :method
-    $I0 = self.'genrand_int32'()
-    $I0 >>>= 1
-    .return ($I0)
-.end
-
-
-=item C<genrand_real1 ()>
-
-generates a random number on [0,1]-real-interval
-
-=cut
-
-.sub 'genrand_real1' :method
-    $I0 = self.'genrand_int32'()
-    $N0 = $I0
-    unless $I0 < 0 goto L1
-    $N0 += 4294967296.0
-  L1:
-    $N0 /= 4294967295.0   # divided by 2^32-1
-    .return ($N0)
-.end
-
-
-=item C<genrand_real2 ()>
-
-generates a random number on [0,1)-real-interval
-
-=cut
-
-.sub 'genrand_real2' :method
-    $I0 = self.'genrand_int32'()
-    $N0 = $I0
-    unless $I0 < 0 goto L1
-    $N0 += 4294967296.0
-  L1:
-    $N0 /= 4294967296.0   # divided by 2^32
-    .return ($N0)
-.end
-
-
-=item C<genrand_real3 ()>
-
-generates a random number on (0,1)-real-interval
-
-=cut
-
-.sub 'genrand_real3' :method
-    $I0 = self.'genrand_int32'()
-    $N0 = $I0
-    unless $I0 < 0 goto L1
-    $N0 += 4294967296.0
-  L1:
-    $N0 += 0.5
-    $N0 /= 4294967296.0   # divided by 2^32
-    .return ($N0)
-.end
-
-
-=item C<genrand_res53 ()>
-
-generates a random number on [0,1) with 53-bit resolution
-
-=cut
-
-.sub 'genrand_res53' :method
-    $I1 = self.'genrand_int32'()
-    $I1 >>>= 5
-    $N1 = $I1
-    $I2 = self.'genrand_int32'()
-    $I2 >>>= 6
-    $N2 = $I2
-    $N0 = $N1 * 67108864.0
-    $N0 += $N2
-    $N0 /= 9007199254740992.0
-    .return ($N0)
-.end
-
-
-=back
-
-=head1 AUTHORS
-
-Francois Perrad
-
-=cut
-
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/sys_mem_reduce/runtime/parrot/library/OpenGL.pir
==============================================================================
--- branches/sys_mem_reduce/runtime/parrot/library/OpenGL.pir	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/runtime/parrot/library/OpenGL.pir	Sat Feb 20 22:12:51 2010	(r44252)
@@ -91,6 +91,7 @@
     load_bytecode 'OpenGL_funcs.pbc'
     _load_opengl_libs()
     _wrap_opengl_entry_points()
+    _load_nci_thunks()
     _export_opengl_functions()
 .end
 
@@ -241,6 +242,25 @@
 
 =back
 
+=head2 Thunk Loading
+
+These routines ensure that all NCI thunks necessary for calling OpenGL functions are
+available to Parrot.
+
+=cut
+
+.sub _load_nci_thunks
+    # load the nci thunks
+    .local pmc ns, loader
+    ns = get_namespace
+    loader = ns['Parrot_glut_nci_loader']
+    loader()
+
+    # delete loader the function, it isn't for public consumption
+    $P0 = new ['Undef']
+    set_global 'Parrot_glut_nci_loader', $P0
+.end
+
 =head2 Symbol Export
 
 These routines allow OpenGL symbols to exported to other namespaces to more

Modified: branches/sys_mem_reduce/runtime/parrot/library/P6object.pir
==============================================================================
--- branches/sys_mem_reduce/runtime/parrot/library/P6object.pir	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/runtime/parrot/library/P6object.pir	Sat Feb 20 22:12:51 2010	(r44252)
@@ -819,7 +819,7 @@
     # If this fails, and we want Any, and it's something form outside
     # of the Perl 6 world, we'd best just accept it.
     unless $S0 == 'Any' goto end
-    $I0 = isa topicwhat, 'Perl6Object'
+    $I0 = isa topicwhat, 'Mu'
     unless $I0 goto accept_anyway
     $I0 = 0
     goto end

Modified: branches/sys_mem_reduce/runtime/parrot/library/SDL.pir
==============================================================================
--- branches/sys_mem_reduce/runtime/parrot/library/SDL.pir	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/runtime/parrot/library/SDL.pir	Sat Feb 20 22:12:51 2010	(r44252)
@@ -88,6 +88,18 @@
     .local pmc libsdl
     .local pmc sdl_function
 
+    .local pmc env
+    env = new 'Env'
+    .local string sdlpath
+    say'Hu'
+    sdlpath = env['SDLLIBPATH']
+    if sdlpath == '' goto default_locations
+    say sdlpath
+    loadlib libsdl, sdlpath
+    if libsdl goto OK
+    goto failed
+
+default_locations:
     loadlib libsdl, 'libSDL'
     if libsdl goto OK
 
@@ -103,6 +115,7 @@
     loadlib libsdl, 'cygSDL-1-2-0'
     if libsdl goto OK
 
+failed:
     # failed to load libSDL
     $P0 = new 'Exception'
     $P0 = "libSDL not found!"
@@ -224,7 +237,7 @@
 
   initialize:
     .local pmc nci_sub
-    dlfunc nci_sub, ttf_lib, 'TTF_Init', 'iv'
+    dlfunc nci_sub, ttf_lib, 'TTF_Init', 'i'
     unless nci_sub goto error
 
     set_hll_global ['SDL::NCI::TTF'], 'Init', nci_sub
@@ -238,7 +251,7 @@
   error:
     .local pmc e
     e    = new 'Exception'
-    e[0] = "SDL_ttf not initialized\n"
+    e['message'] = "SDL_ttf not initialized\n"
     throw e
 
   success:

Modified: branches/sys_mem_reduce/runtime/parrot/library/Test/More.pir
==============================================================================
--- branches/sys_mem_reduce/runtime/parrot/library/Test/More.pir	Sat Feb 20 21:56:01 2010	(r44251)
+++ branches/sys_mem_reduce/runtime/parrot/library/Test/More.pir	Sat Feb 20 22:12:51 2010	(r44252)
@@ -35,6 +35,8 @@
 
     is( some_pmc, another_pmc, 'pmc comparison uses "eq" op' )
 
+    is_null( some_pmc, 'pmc was null' )
+
     diag( 'this may take a while' )
     is_deeply( some_deep_pmc, another_deep_pmc, 'deep structure comparison' )
 
@@ -155,6 +157,20 @@
 
 =cut
 
+.sub one_or_both_null
+    .param pmc left
+    .param pmc right
+
+    .local int one
+    .local int both
+
+    $I0 = isnull left
+    $I1 = isnull right
+    or one, $I0, $I1
+    and both, $I0, $I1
+    .return (one, both)
+.end
+
 .sub is :multi(PMC, Integer)
     .param pmc left
     .param pmc right
@@ -164,11 +180,17 @@
     .local pmc test
     get_hll_global test, [ 'Test'; 'More' ], '_test'
 
-    .local int l, r, pass
+    .local int pass
+    ($I0, pass) = one_or_both_null(left, right)
+    if $I0 goto report
+
+    .local int l, r
     l    = left
     r    = right
+
     pass = iseq l, r
 
+report:
     test.'ok'( pass, description )
     if pass goto done
 
@@ -176,17 +198,27 @@
     .local string l_string
     .local string r_string
 
+    l_string    = 'null'
+    if null left goto r_str
     l_string    = left
+
+r_str:
+    r_string    = 'null'
+    if null right goto diag
     r_string    = right
 
+diag:
     diagnostic = _make_diagnostic( l_string, r_string )
     test.'diag'( diagnostic )
   done:
 .end
 
-.sub is :multi(_, Float)
-    .param num    left
-    .param num    right
+#.sub is :multi(_, Float)
+#    .param num    left
+#    .param num    right
+.sub is :multi(PMC, Float)
+    .param pmc left
+    .param pmc right
     .param string description :optional
     .param int    have_desc   :opt_flag
     .param num    precision   :optional
@@ -195,15 +227,23 @@
     .local pmc test
     get_hll_global test, [ 'Test'; 'More' ], '_test'
 
+    .local int pass
+
+    ($I0, pass) = one_or_both_null(left, right)
+    if $I0 goto report
+
+    .local num l, r
+    l = left
+    r = right
+
     if have_prec goto check_precision
 
-    .local int pass
-    pass = iseq left, right
+    pass = iseq l, r
     goto report
 
   check_precision:
     .local num diff
-    diff = left - right
+    diff = l - r
     diff = abs diff
     pass = isle diff, precision
 
@@ -215,10 +255,17 @@
     .local string l_string
     .local string r_string
 
+    l_string    = 'null'
+    if null left goto r_str
     l_string    = left
+
+r_str:
+    r_string    = 'null'
+    if null right goto diag
     r_string    = right
 
-    diagnostic = _make_diagnostic( left, right )
+diag:
+    diagnostic = _make_diagnostic( l_string, r_string )
     test.'diag'( diagnostic )
   done:
 .end
@@ -232,12 +279,16 @@
     .local pmc test
     get_hll_global test, [ 'Test'; 'More' ], '_test'
 
-    .local string l, r
     .local int pass
-    l    = left
-    r    = right
+    ($I0, pass) = one_or_both_null(left, right)
+    if $I0 goto report
+
+    .local string l, r
+    l = left
+    r = right
     pass = iseq l, r
 
+report:
     test.'ok'( pass, description )
     if pass goto done
 
@@ -245,9 +296,16 @@
     .local string l_string
     .local string r_string
 
+    l_string    = 'null'
+    if null left goto r_str
     l_string    = left
+
+r_str:
+    r_string    = 'null'
+    if null right goto diag
     r_string    = right
 
+diag:
     diagnostic = _make_diagnostic( l_string, r_string )
     test.'diag'( diagnostic )
   done:
@@ -263,8 +321,11 @@
     get_hll_global test, [ 'Test'; 'More' ], '_test'
 
     .local int pass
-    .local int does_type
 
+    ($I0, pass) = one_or_both_null(left, right)
+    if $I0 goto result
+
+    .local int does_type
     does_type = does right, 'String'
     if does_type goto check_string
 
@@ -300,9 +361,16 @@
     .local string l_string
     .local string r_string
 
+    l_string    = 'null'
+    if null left goto r_str
     l_string    = left
+
+r_str:
+    r_string    = 'null'
+    if null right goto diag
     r_string    = right
 
+diag:
     diagnostic = _make_diagnostic( l_string, r_string )
     test.'diag'( diagno