[svn:parrot] r44203 - in branches/tt362: . compilers/data_json compilers/imcc compilers/json compilers/nqp compilers/pct compilers/pge compilers/pirc/src compilers/tge config/auto config/auto/sizes config/gen config/gen/call_list config/gen/crypto config/gen/makefiles config/gen/platform/generic config/gen/platform/openbsd docs docs/book/draft docs/book/pct docs/dev docs/pdds docs/pdds/draft docs/project examples/c examples/embed examples/languages/abc examples/languages/squaak examples/nci examples/pge examples/pir examples/sdl ext/nqp-rx ext/nqp-rx/src/stage0 include/parrot include/parrot/atomic lib/Parrot lib/Parrot/Configure/Step lib/Parrot/Docs/Section lib/Parrot/Ops2c lib/Parrot/Pmc2c ports/cpan ports/cygwin ports/debian ports/fedora ports/mandriva ports/suse runtime/parrot/include runtime/parrot/languages 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 s rc/interp src/io src/nci src/ops src/pmc src/runcore src/string t/codingstd t/compilers/tge t/library t/native_pbc t/oo t/op t/pmc t/src t/steps/gen t/steps/init/hints tools/build tools/dev tools/util

plobsing at svn.parrot.org plobsing at svn.parrot.org
Fri Feb 19 22:23:37 UTC 2010


Author: plobsing
Date: Fri Feb 19 22:23:20 2010
New Revision: 44203
URL: https://trac.parrot.org/parrot/changeset/44203

Log:
sync branch with latest trunk

Added:
   branches/tt362/src/nci/   (props changed)
      - copied from r44202, trunk/src/nci/
   branches/tt362/src/pmc/opcode.pmc
      - copied unchanged from r44202, trunk/src/pmc/opcode.pmc
   branches/tt362/src/pmc/oplib.pmc
      - copied unchanged from r44202, trunk/src/pmc/oplib.pmc
   branches/tt362/t/op/gc-leaky.t
      - copied unchanged from r44202, trunk/t/op/gc-leaky.t
   branches/tt362/t/pmc/opcode.t
      - copied unchanged from r44202, trunk/t/pmc/opcode.t
   branches/tt362/t/pmc/oplib.t
      - copied unchanged from r44202, trunk/t/pmc/oplib.t
   branches/tt362/tools/dev/mk_nci_thunks.pl
      - copied unchanged from r44202, trunk/tools/dev/mk_nci_thunks.pl
Replaced:
   branches/tt362/src/nci/api.c
      - copied unchanged from r44202, trunk/src/nci/api.c
   branches/tt362/src/nci/core_thunks.c
      - copied unchanged from r44202, trunk/src/nci/core_thunks.c
   branches/tt362/src/nci/core_thunks.nci
      - copied unchanged from r44202, trunk/src/nci/core_thunks.nci
   branches/tt362/src/nci/extra_thunks.c
      - copied unchanged from r44202, trunk/src/nci/extra_thunks.c
   branches/tt362/src/nci/extra_thunks.nci
      - copied unchanged from r44202, trunk/src/nci/extra_thunks.nci
Deleted:
   branches/tt362/config/gen/call_list/
   branches/tt362/config/gen/call_list.pm
   branches/tt362/runtime/parrot/library/Math/Random/
   branches/tt362/t/library/mt19937ar.t
   branches/tt362/t/library/mt19937ar.txt
   branches/tt362/t/steps/gen/call_list-01.t
   branches/tt362/tools/build/nativecall.pl
Modified:
   branches/tt362/   (props changed)
   branches/tt362/CREDITS
   branches/tt362/ChangeLog
   branches/tt362/Configure.pl
   branches/tt362/DEPRECATED.pod
   branches/tt362/MANIFEST
   branches/tt362/MANIFEST.SKIP
   branches/tt362/MANIFEST.generated
   branches/tt362/META.yml
   branches/tt362/NEWS
   branches/tt362/PBC_COMPAT
   branches/tt362/PLATFORMS
   branches/tt362/README
   branches/tt362/VERSION
   branches/tt362/compilers/data_json/Defines.mak
   branches/tt362/compilers/data_json/Rules.mak   (props changed)
   branches/tt362/compilers/imcc/Rules.mak   (props changed)
   branches/tt362/compilers/imcc/imcc.y
   branches/tt362/compilers/imcc/imcparser.c
   branches/tt362/compilers/imcc/imcparser.h
   branches/tt362/compilers/imcc/main.c
   branches/tt362/compilers/imcc/parser_util.c
   branches/tt362/compilers/imcc/pbc.c
   branches/tt362/compilers/json/Rules.mak   (props changed)
   branches/tt362/compilers/nqp/Rules.mak   (props changed)
   branches/tt362/compilers/pct/Rules.mak   (props changed)
   branches/tt362/compilers/pge/Rules.mak   (props changed)
   branches/tt362/compilers/pirc/src/bcgen.c
   branches/tt362/compilers/pirc/src/main.c
   branches/tt362/compilers/pirc/src/pir.y
   branches/tt362/compilers/pirc/src/pircompiler.c
   branches/tt362/compilers/pirc/src/pircompiler.h
   branches/tt362/compilers/pirc/src/pircompunit.c
   branches/tt362/compilers/pirc/src/pircompunit.h
   branches/tt362/compilers/pirc/src/piremit.c
   branches/tt362/compilers/pirc/src/piremit.h
   branches/tt362/compilers/pirc/src/pirmacro.c
   branches/tt362/compilers/pirc/src/pirmacro.h
   branches/tt362/compilers/pirc/src/pirparser.c
   branches/tt362/compilers/pirc/src/pirpcc.c
   branches/tt362/compilers/pirc/src/pirpcc.h
   branches/tt362/compilers/pirc/src/pirregalloc.c
   branches/tt362/compilers/pirc/src/pirregalloc.h
   branches/tt362/compilers/pirc/src/pirsymbol.c
   branches/tt362/compilers/pirc/src/pirsymbol.h
   branches/tt362/compilers/tge/Rules.mak   (props changed)
   branches/tt362/config/auto/perldoc.pm
   branches/tt362/config/auto/sizes/intval_maxmin_c.in   (props changed)
   branches/tt362/config/gen/crypto/digest_pmc.in
   branches/tt362/config/gen/makefiles/docs.in
   branches/tt362/config/gen/makefiles/root.in
   branches/tt362/config/gen/opengl.pm
   branches/tt362/config/gen/platform/generic/env.c
   branches/tt362/config/gen/platform/generic/memexec.c
   branches/tt362/config/gen/platform/openbsd/memexec.c
   branches/tt362/docs/book/draft/README   (props changed)
   branches/tt362/docs/book/draft/appa_glossary.pod   (props changed)
   branches/tt362/docs/book/draft/appb_patch_submission.pod   (props changed)
   branches/tt362/docs/book/draft/appc_command_line_options.pod   (props changed)
   branches/tt362/docs/book/draft/appd_build_options.pod   (props changed)
   branches/tt362/docs/book/draft/appe_source_code.pod   (props changed)
   branches/tt362/docs/book/draft/ch01_introduction.pod   (props changed)
   branches/tt362/docs/book/draft/ch02_getting_started.pod   (props changed)
   branches/tt362/docs/book/draft/ch07_dynpmcs.pod   (props changed)
   branches/tt362/docs/book/draft/ch08_dynops.pod   (props changed)
   branches/tt362/docs/book/draft/ch10_opcode_reference.pod   (props changed)
   branches/tt362/docs/book/draft/ch11_directive_reference.pod   (props changed)
   branches/tt362/docs/book/draft/ch12_operator_reference.pod   (props changed)
   branches/tt362/docs/book/draft/chXX_hlls.pod   (props changed)
   branches/tt362/docs/book/draft/chXX_library.pod   (props changed)
   branches/tt362/docs/book/draft/chXX_testing_and_debugging.pod   (props changed)
   branches/tt362/docs/book/pct/ch01_introduction.pod   (props changed)
   branches/tt362/docs/book/pct/ch02_getting_started.pod   (props changed)
   branches/tt362/docs/book/pct/ch03_compiler_tools.pod   (props changed)
   branches/tt362/docs/book/pct/ch04_pge.pod   (props changed)
   branches/tt362/docs/book/pct/ch05_nqp.pod   (props changed)
   branches/tt362/docs/dev/c_functions.pod   (props changed)
   branches/tt362/docs/embed.pod
   branches/tt362/docs/parrothist.pod
   branches/tt362/docs/pdds/draft/pdd06_pasm.pod
   branches/tt362/docs/pdds/draft/pdd11_extending.pod
   branches/tt362/docs/pdds/pdd30_install.pod   (props changed)
   branches/tt362/docs/project/release_manager_guide.pod
   branches/tt362/examples/c/nanoparrot.c
   branches/tt362/examples/c/pbc_info.c
   branches/tt362/examples/embed/cotorra.c   (contents, props changed)
   branches/tt362/examples/languages/abc/   (props changed)
   branches/tt362/examples/languages/squaak/   (props changed)
   branches/tt362/examples/nci/QtHelloWorld.pasm
   branches/tt362/examples/nci/QtHelloWorld.pir
   branches/tt362/examples/pge/demo.pir   (props changed)
   branches/tt362/examples/pir/make_hello_pbc.pir
   branches/tt362/examples/sdl/anim_image.pir
   branches/tt362/examples/sdl/bounce_parrot_logo.pir
   branches/tt362/examples/sdl/move_parrot_logo.pir
   branches/tt362/ext/nqp-rx/Rules.mak   (props changed)
   branches/tt362/ext/nqp-rx/src/stage0/HLL-s0.pir
   branches/tt362/ext/nqp-rx/src/stage0/NQP-s0.pir
   branches/tt362/ext/nqp-rx/src/stage0/P6Regex-s0.pir
   branches/tt362/include/parrot/atomic/gcc_pcc.h
   branches/tt362/include/parrot/call.h   (props changed)
   branches/tt362/include/parrot/debugger.h
   branches/tt362/include/parrot/extend.h
   branches/tt362/include/parrot/gc_api.h   (contents, props changed)
   branches/tt362/include/parrot/imcc.h
   branches/tt362/include/parrot/interpreter.h
   branches/tt362/include/parrot/nci.h
   branches/tt362/include/parrot/oo.h
   branches/tt362/include/parrot/pmc.h
   branches/tt362/include/parrot/runcore_api.h   (props changed)
   branches/tt362/include/parrot/runcore_profiling.h   (contents, props changed)
   branches/tt362/include/parrot/runcore_trace.h   (props changed)
   branches/tt362/lib/Parrot/Configure/Step/List.pm
   branches/tt362/lib/Parrot/Configure/Step/Test.pm   (props changed)
   branches/tt362/lib/Parrot/Docs/Section/Tools.pm
   branches/tt362/lib/Parrot/H2inc.pm   (props changed)
   branches/tt362/lib/Parrot/Ops2c/Utils.pm
   branches/tt362/lib/Parrot/Pmc2c/Attribute.pm
   branches/tt362/lib/Parrot/Pmc2c/MethodEmitter.pm
   branches/tt362/lib/Parrot/Pmc2c/PMCEmitter.pm
   branches/tt362/lib/Parrot/Pmc2c/UtilFunctions.pm
   branches/tt362/ports/cpan/pause_guide.pod   (props changed)
   branches/tt362/ports/cygwin/parrot-1.0.0-1.cygport   (props changed)
   branches/tt362/ports/debian/libparrot-dev.install.in   (props changed)
   branches/tt362/ports/debian/libparrot.install.in   (props changed)
   branches/tt362/ports/debian/parrot-doc.install.in   (props changed)
   branches/tt362/ports/debian/parrot.install.in   (props changed)
   branches/tt362/ports/fedora/parrot.spec.fedora   (props changed)
   branches/tt362/ports/mandriva/parrot.spec.mandriva   (props changed)
   branches/tt362/ports/suse/parrot.spec.suse   (props changed)
   branches/tt362/runtime/parrot/include/test_more.pir
   branches/tt362/runtime/parrot/languages/   (props changed)
   branches/tt362/runtime/parrot/library/Math/Rand.pir   (contents, props changed)
   branches/tt362/runtime/parrot/library/OpenGL.pir
   branches/tt362/runtime/parrot/library/P6object.pir
   branches/tt362/runtime/parrot/library/Rules.mak   (props changed)
   branches/tt362/runtime/parrot/library/SDL.pir
   branches/tt362/runtime/parrot/library/Test/More.pir
   branches/tt362/runtime/parrot/library/distutils.pir
   branches/tt362/src/   (props changed)
   branches/tt362/src/atomic/gcc_x86.c
   branches/tt362/src/call/args.c
   branches/tt362/src/call/context.c
   branches/tt362/src/call/ops.c   (props changed)
   branches/tt362/src/call/pcc.c   (props changed)
   branches/tt362/src/debug.c
   branches/tt362/src/dynext.c
   branches/tt362/src/dynpmc/dynlexpad.pmc
   branches/tt362/src/dynpmc/foo.pmc
   branches/tt362/src/dynpmc/gdbmhash.pmc
   branches/tt362/src/dynpmc/rational.pmc
   branches/tt362/src/embed.c
   branches/tt362/src/exceptions.c
   branches/tt362/src/extend.c
   branches/tt362/src/frame_builder.c
   branches/tt362/src/gc/alloc_memory.c   (props changed)
   branches/tt362/src/gc/alloc_resources.c   (contents, props changed)
   branches/tt362/src/gc/api.c   (contents, props changed)
   branches/tt362/src/gc/gc_inf.c
   branches/tt362/src/gc/gc_ms.c
   branches/tt362/src/gc/gc_private.h
   branches/tt362/src/gc/malloc.c   (props changed)
   branches/tt362/src/gc/malloc_trace.c   (props changed)
   branches/tt362/src/gc/mark_sweep.c   (props changed)
   branches/tt362/src/gc/system.c   (props changed)
   branches/tt362/src/global.c
   branches/tt362/src/global_setup.c
   branches/tt362/src/hash.c
   branches/tt362/src/hll.c
   branches/tt362/src/interp/inter_cb.c   (contents, props changed)
   branches/tt362/src/interp/inter_create.c   (contents, props changed)
   branches/tt362/src/interp/inter_misc.c   (contents, props changed)
   branches/tt362/src/io/api.c
   branches/tt362/src/io/socket_api.c
   branches/tt362/src/io/socket_unix.c
   branches/tt362/src/io/socket_win32.c
   branches/tt362/src/key.c
   branches/tt362/src/library.c
   branches/tt362/src/main.c
   branches/tt362/src/multidispatch.c
   branches/tt362/src/nci_test.c
   branches/tt362/src/oo.c
   branches/tt362/src/ops/bit.ops
   branches/tt362/src/ops/cmp.ops
   branches/tt362/src/ops/core.ops
   branches/tt362/src/ops/experimental.ops
   branches/tt362/src/ops/io.ops
   branches/tt362/src/ops/math.ops
   branches/tt362/src/ops/object.ops
   branches/tt362/src/ops/pmc.ops
   branches/tt362/src/packfile.c
   branches/tt362/src/pmc.c
   branches/tt362/src/pmc/arrayiterator.pmc
   branches/tt362/src/pmc/bigint.pmc
   branches/tt362/src/pmc/bignum.pmc
   branches/tt362/src/pmc/callcontext.pmc
   branches/tt362/src/pmc/capture.pmc
   branches/tt362/src/pmc/class.pmc
   branches/tt362/src/pmc/codestring.pmc
   branches/tt362/src/pmc/complex.pmc
   branches/tt362/src/pmc/continuation.pmc
   branches/tt362/src/pmc/coroutine.pmc
   branches/tt362/src/pmc/cpointer.pmc
   branches/tt362/src/pmc/default.pmc
   branches/tt362/src/pmc/env.pmc
   branches/tt362/src/pmc/exception.pmc
   branches/tt362/src/pmc/exporter.pmc
   branches/tt362/src/pmc/fixedbooleanarray.pmc
   branches/tt362/src/pmc/fixedfloatarray.pmc
   branches/tt362/src/pmc/fixedintegerarray.pmc
   branches/tt362/src/pmc/fixedpmcarray.pmc
   branches/tt362/src/pmc/fixedstringarray.pmc
   branches/tt362/src/pmc/float.pmc
   branches/tt362/src/pmc/hash.pmc
   branches/tt362/src/pmc/hashiterator.pmc
   branches/tt362/src/pmc/imageio.pmc
   branches/tt362/src/pmc/imageiosize.pmc
   branches/tt362/src/pmc/integer.pmc
   branches/tt362/src/pmc/key.pmc
   branches/tt362/src/pmc/lexinfo.pmc
   branches/tt362/src/pmc/managedstruct.pmc
   branches/tt362/src/pmc/namespace.pmc
   branches/tt362/src/pmc/nci.pmc
   branches/tt362/src/pmc/object.pmc
   branches/tt362/src/pmc/orderedhash.pmc
   branches/tt362/src/pmc/os.pmc
   branches/tt362/src/pmc/packfile.pmc
   branches/tt362/src/pmc/packfileannotations.pmc
   branches/tt362/src/pmc/packfileconstanttable.pmc
   branches/tt362/src/pmc/packfiledirectory.pmc
   branches/tt362/src/pmc/packfilefixuptable.pmc
   branches/tt362/src/pmc/packfilerawsegment.pmc
   branches/tt362/src/pmc/parrotinterpreter.pmc
   branches/tt362/src/pmc/parrotlibrary.pmc
   branches/tt362/src/pmc/parrotthread.pmc
   branches/tt362/src/pmc/pmc.num
   branches/tt362/src/pmc/pmcproxy.pmc
   branches/tt362/src/pmc/pointer.pmc
   branches/tt362/src/pmc/resizablebooleanarray.pmc
   branches/tt362/src/pmc/resizablepmcarray.pmc
   branches/tt362/src/pmc/resizablestringarray.pmc
   branches/tt362/src/pmc/role.pmc
   branches/tt362/src/pmc/scalar.pmc
   branches/tt362/src/pmc/scheduler.pmc
   branches/tt362/src/pmc/sockaddr.pmc
   branches/tt362/src/pmc/string.pmc
   branches/tt362/src/pmc/stringhandle.pmc
   branches/tt362/src/pmc/stringiterator.pmc
   branches/tt362/src/pmc/sub.pmc
   branches/tt362/src/pmc/task.pmc
   branches/tt362/src/pmc/undef.pmc
   branches/tt362/src/pmc/unmanagedstruct.pmc
   branches/tt362/src/pmc_freeze.c
   branches/tt362/src/runcore/cores.c   (props changed)
   branches/tt362/src/runcore/main.c   (props changed)
   branches/tt362/src/runcore/profiling.c   (contents, props changed)
   branches/tt362/src/runcore/trace.c   (props changed)
   branches/tt362/src/scheduler.c
   branches/tt362/src/string/api.c
   branches/tt362/src/sub.c
   branches/tt362/src/thread.c
   branches/tt362/src/utils.c
   branches/tt362/t/codingstd/c_function_docs.t
   branches/tt362/t/codingstd/copyright.t
   branches/tt362/t/codingstd/linelength.t
   branches/tt362/t/codingstd/trailing_space.t
   branches/tt362/t/compilers/tge/NoneGrammar.tg   (props changed)
   branches/tt362/t/library/test_more.t
   branches/tt362/t/native_pbc/annotations.pbc
   branches/tt362/t/native_pbc/integer_1.pbc
   branches/tt362/t/native_pbc/number_1.pbc
   branches/tt362/t/native_pbc/string_1.pbc
   branches/tt362/t/oo/root_new.t   (props changed)
   branches/tt362/t/op/string_mem.t
   branches/tt362/t/pmc/namespace-old.t   (props changed)
   branches/tt362/t/pmc/namespace.t
   branches/tt362/t/pmc/pmc.t
   branches/tt362/t/src/embed.t   (contents, props changed)
   branches/tt362/t/src/extend.t
   branches/tt362/t/steps/init/hints/linux-01.t   (props changed)
   branches/tt362/tools/build/cc_flags.pl   (props changed)
   branches/tt362/tools/build/h2inc.pl   (props changed)
   branches/tt362/tools/build/nativecall.pir
   branches/tt362/tools/dev/fetch_languages.pl   (props changed)
   branches/tt362/tools/dev/mk_gitignore.pl   (props changed)
   branches/tt362/tools/util/perlcritic-cage.conf   (props changed)
   branches/tt362/tools/util/release.json

Modified: branches/tt362/CREDITS
==============================================================================
--- branches/tt362/CREDITS	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/CREDITS	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/ChangeLog
==============================================================================
--- branches/tt362/ChangeLog	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/ChangeLog	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/Configure.pl
==============================================================================
--- branches/tt362/Configure.pl	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/Configure.pl	Fri Feb 19 22:23:20 2010	(r44203)
@@ -646,7 +646,6 @@
     gen::core_pmcs
     gen::crypto
     gen::opengl
-    gen::call_list
     gen::makefiles
     gen::platform
     gen::config_pm

Modified: branches/tt362/DEPRECATED.pod
==============================================================================
--- branches/tt362/DEPRECATED.pod	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/DEPRECATED.pod	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/MANIFEST
==============================================================================
--- branches/tt362/MANIFEST	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/MANIFEST	Fri Feb 19 22:23:20 2010	(r44203)
@@ -1,7 +1,7 @@
 # ex: set ro:
 # $Id$
 #
-# generated by tools/dev/mk_manifest_and_skip.pl Mon Feb 15 05:20:54 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Fri Feb 19 04:10:16 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                                             []
@@ -1442,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
@@ -1724,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]
@@ -1814,6 +1815,7 @@
 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]
@@ -1918,6 +1920,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]
@@ -2021,7 +2025,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]
@@ -2136,7 +2139,6 @@
 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                              []
@@ -2168,6 +2170,7 @@
 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/nm.pl                                             []

Modified: branches/tt362/MANIFEST.SKIP
==============================================================================
--- branches/tt362/MANIFEST.SKIP	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/MANIFEST.SKIP	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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 Fri Feb 19 21:06:32 2010 UT
 #
 # This file should contain a transcript of the svn:ignore properties
 # of the directories in the Parrot subversion repository. (Needed for
@@ -258,9 +258,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 +578,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 +626,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 +640,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 +652,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 +801,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/tt362/MANIFEST.generated
==============================================================================
--- branches/tt362/MANIFEST.generated	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/MANIFEST.generated	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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]
@@ -162,7 +162,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/tt362/META.yml
==============================================================================
--- branches/tt362/META.yml	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/META.yml	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/NEWS
==============================================================================
--- branches/tt362/NEWS	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/NEWS	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/PBC_COMPAT
==============================================================================
--- branches/tt362/PBC_COMPAT	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/PBC_COMPAT	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/PLATFORMS
==============================================================================
--- branches/tt362/PLATFORMS	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/PLATFORMS	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/README
==============================================================================
--- branches/tt362/README	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/README	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/VERSION
==============================================================================
--- branches/tt362/VERSION	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/VERSION	Fri Feb 19 22:23:20 2010	(r44203)
@@ -1 +1 @@
-2.0.0
+2.1.0

Modified: branches/tt362/compilers/data_json/Defines.mak
==============================================================================
--- branches/tt362/compilers/data_json/Defines.mak	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/data_json/Defines.mak	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/imcc/imcc.y
==============================================================================
--- branches/tt362/compilers/imcc/imcc.y	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/imcc/imcc.y	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/imcc/imcparser.c
==============================================================================
--- branches/tt362/compilers/imcc/imcparser.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/imcc/imcparser.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/imcc/imcparser.h
==============================================================================
--- branches/tt362/compilers/imcc/imcparser.h	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/imcc/imcparser.h	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/imcc/main.c
==============================================================================
--- branches/tt362/compilers/imcc/main.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/imcc/main.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/imcc/parser_util.c
==============================================================================
--- branches/tt362/compilers/imcc/parser_util.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/imcc/parser_util.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/imcc/pbc.c
==============================================================================
--- branches/tt362/compilers/imcc/pbc.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/imcc/pbc.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/pirc/src/bcgen.c
==============================================================================
--- branches/tt362/compilers/pirc/src/bcgen.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/pirc/src/bcgen.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/pirc/src/main.c
==============================================================================
--- branches/tt362/compilers/pirc/src/main.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/pirc/src/main.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/pirc/src/pir.y
==============================================================================
--- branches/tt362/compilers/pirc/src/pir.y	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/pirc/src/pir.y	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/pirc/src/pircompiler.c
==============================================================================
--- branches/tt362/compilers/pirc/src/pircompiler.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/pirc/src/pircompiler.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/pirc/src/pircompiler.h
==============================================================================
--- branches/tt362/compilers/pirc/src/pircompiler.h	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/pirc/src/pircompiler.h	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/pirc/src/pircompunit.c
==============================================================================
--- branches/tt362/compilers/pirc/src/pircompunit.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/pirc/src/pircompunit.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/pirc/src/pircompunit.h
==============================================================================
--- branches/tt362/compilers/pirc/src/pircompunit.h	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/pirc/src/pircompunit.h	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/pirc/src/piremit.c
==============================================================================
--- branches/tt362/compilers/pirc/src/piremit.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/pirc/src/piremit.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/pirc/src/piremit.h
==============================================================================
--- branches/tt362/compilers/pirc/src/piremit.h	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/pirc/src/piremit.h	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/pirc/src/pirmacro.c
==============================================================================
--- branches/tt362/compilers/pirc/src/pirmacro.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/pirc/src/pirmacro.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/pirc/src/pirmacro.h
==============================================================================
--- branches/tt362/compilers/pirc/src/pirmacro.h	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/pirc/src/pirmacro.h	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/pirc/src/pirparser.c
==============================================================================
--- branches/tt362/compilers/pirc/src/pirparser.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/pirc/src/pirparser.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/pirc/src/pirpcc.c
==============================================================================
--- branches/tt362/compilers/pirc/src/pirpcc.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/pirc/src/pirpcc.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/pirc/src/pirpcc.h
==============================================================================
--- branches/tt362/compilers/pirc/src/pirpcc.h	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/pirc/src/pirpcc.h	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/pirc/src/pirregalloc.c
==============================================================================
--- branches/tt362/compilers/pirc/src/pirregalloc.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/pirc/src/pirregalloc.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/pirc/src/pirregalloc.h
==============================================================================
--- branches/tt362/compilers/pirc/src/pirregalloc.h	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/pirc/src/pirregalloc.h	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/pirc/src/pirsymbol.c
==============================================================================
--- branches/tt362/compilers/pirc/src/pirsymbol.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/pirc/src/pirsymbol.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/compilers/pirc/src/pirsymbol.h
==============================================================================
--- branches/tt362/compilers/pirc/src/pirsymbol.h	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/compilers/pirc/src/pirsymbol.h	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/config/auto/perldoc.pm
==============================================================================
--- branches/tt362/config/auto/perldoc.pm	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/config/auto/perldoc.pm	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/config/gen/call_list.pm
==============================================================================
--- branches/tt362/config/gen/call_list.pm	Fri Feb 19 22:23:20 2010	(r44202)
+++ /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:

Modified: branches/tt362/config/gen/crypto/digest_pmc.in
==============================================================================
--- branches/tt362/config/gen/crypto/digest_pmc.in	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/config/gen/crypto/digest_pmc.in	Fri Feb 19 22:23:20 2010	(r44203)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2008, Parrot Foundation.
+Copyright (C) 2008-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -69,7 +69,7 @@
 */
     VTABLE PMC* clone() {
 @TEMP_md_guard@
-        PMC     *retval  = pmc_new_noinit(INTERP, SELF->vtable->base_type);
+        PMC     *retval  = Parrot_pmc_new_noinit(INTERP, SELF->vtable->base_type);
         @TEMP_md_ctx@ *c       = mem_allocate_zeroed_typed(@TEMP_md_ctx@);
 
         memcpy(c, PMC_data(SELF), sizeof (@TEMP_md_ctx@));

Modified: branches/tt362/config/gen/makefiles/docs.in
==============================================================================
--- branches/tt362/config/gen/makefiles/docs.in	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/config/gen/makefiles/docs.in	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/config/gen/makefiles/root.in
==============================================================================
--- branches/tt362/config/gen/makefiles/root.in	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/config/gen/makefiles/root.in	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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) \
@@ -648,7 +651,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 \
@@ -1146,13 +1151,13 @@
 
 # The -o option of parrot did not work with the object file extension ".o"
 # so as work around pbc_to_exe is used and the original commands are only
-# commented out so it can easy switched back
+# commented out so it can easily switched back.
 #examples/pasm/hello$(O): examples/pasm/hello.pbc
 #	$(PARROT) -o examples/pasm/hello$(O) examples/pasm/hello.pbc
 #
 #examples/pasm/hello$(EXE): examples/pasm/hello$(O)
 #	$(MAKE) . EXEC=examples/pasm/hello exec
-examples/pasm/hello$(EXE): examples/pasm/hello.pbc
+examples/pasm/hello$(EXE): examples/pasm/hello.pbc $(PBC_TO_EXE)
 	$(PBC_TO_EXE) examples/pasm/hello.pbc
 
 
@@ -1379,12 +1384,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 +1410,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 +1816,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 :
@@ -1839,6 +1848,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 +2414,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: $(PARROT) runtime/parrot/library/data_json.pbc tools/build/nativecall.pir
+	$(PARROT) tools/build/nativecall.pir \
+	    --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/tt362/config/gen/opengl.pm
==============================================================================
--- branches/tt362/config/gen/opengl.pm	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/config/gen/opengl.pm	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/config/gen/platform/generic/env.c
==============================================================================
--- branches/tt362/config/gen/platform/generic/env.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/config/gen/platform/generic/env.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/config/gen/platform/generic/memexec.c
==============================================================================
--- branches/tt362/config/gen/platform/generic/memexec.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/config/gen/platform/generic/memexec.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/config/gen/platform/openbsd/memexec.c
==============================================================================
--- branches/tt362/config/gen/platform/openbsd/memexec.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/config/gen/platform/openbsd/memexec.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/docs/embed.pod
==============================================================================
--- branches/tt362/docs/embed.pod	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/docs/embed.pod	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/docs/parrothist.pod
==============================================================================
--- branches/tt362/docs/parrothist.pod	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/docs/parrothist.pod	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/docs/pdds/draft/pdd06_pasm.pod
==============================================================================
--- branches/tt362/docs/pdds/draft/pdd06_pasm.pod	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/docs/pdds/draft/pdd06_pasm.pod	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/docs/pdds/draft/pdd11_extending.pod
==============================================================================
--- branches/tt362/docs/pdds/draft/pdd11_extending.pod	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/docs/pdds/draft/pdd11_extending.pod	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/docs/project/release_manager_guide.pod
==============================================================================
--- branches/tt362/docs/project/release_manager_guide.pod	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/docs/project/release_manager_guide.pod	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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  - ??
+ - Jul 20, 2010 - 2.6* - coke
 
 =cut
 

Modified: branches/tt362/examples/c/nanoparrot.c
==============================================================================
--- branches/tt362/examples/c/nanoparrot.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/examples/c/nanoparrot.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/examples/c/pbc_info.c
==============================================================================
--- branches/tt362/examples/c/pbc_info.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/examples/c/pbc_info.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/examples/embed/cotorra.c
==============================================================================
--- branches/tt362/examples/embed/cotorra.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/examples/embed/cotorra.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/examples/nci/QtHelloWorld.pasm
==============================================================================
--- branches/tt362/examples/nci/QtHelloWorld.pasm	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/examples/nci/QtHelloWorld.pasm	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/examples/nci/QtHelloWorld.pir
==============================================================================
--- branches/tt362/examples/nci/QtHelloWorld.pir	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/examples/nci/QtHelloWorld.pir	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/examples/pir/make_hello_pbc.pir
==============================================================================
--- branches/tt362/examples/pir/make_hello_pbc.pir	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/examples/pir/make_hello_pbc.pir	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/examples/sdl/anim_image.pir
==============================================================================
--- branches/tt362/examples/sdl/anim_image.pir	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/examples/sdl/anim_image.pir	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/examples/sdl/bounce_parrot_logo.pir
==============================================================================
--- branches/tt362/examples/sdl/bounce_parrot_logo.pir	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/examples/sdl/bounce_parrot_logo.pir	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/examples/sdl/move_parrot_logo.pir
==============================================================================
--- branches/tt362/examples/sdl/move_parrot_logo.pir	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/examples/sdl/move_parrot_logo.pir	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/ext/nqp-rx/src/stage0/HLL-s0.pir
==============================================================================
--- branches/tt362/ext/nqp-rx/src/stage0/HLL-s0.pir	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/ext/nqp-rx/src/stage0/HLL-s0.pir	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/ext/nqp-rx/src/stage0/NQP-s0.pir
==============================================================================
--- branches/tt362/ext/nqp-rx/src/stage0/NQP-s0.pir	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/ext/nqp-rx/src/stage0/NQP-s0.pir	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/ext/nqp-rx/src/stage0/P6Regex-s0.pir
==============================================================================
--- branches/tt362/ext/nqp-rx/src/stage0/P6Regex-s0.pir	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/ext/nqp-rx/src/stage0/P6Regex-s0.pir	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/include/parrot/atomic/gcc_pcc.h
==============================================================================
--- branches/tt362/include/parrot/atomic/gcc_pcc.h	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/include/parrot/atomic/gcc_pcc.h	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/include/parrot/debugger.h
==============================================================================
--- branches/tt362/include/parrot/debugger.h	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/include/parrot/debugger.h	Fri Feb 19 22:23:20 2010	(r44203)
@@ -240,11 +240,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);
@@ -391,9 +386,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/tt362/include/parrot/extend.h
==============================================================================
--- branches/tt362/include/parrot/extend.h	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/include/parrot/extend.h	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/include/parrot/gc_api.h
==============================================================================
--- branches/tt362/include/parrot/gc_api.h	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/include/parrot/gc_api.h	Fri Feb 19 22:23:20 2010	(r44203)
@@ -301,8 +301,6 @@
 int Parrot_gc_total_sized_buffers(PARROT_INTERP)
         __attribute__nonnull__(1);
 
-STRING *Parrot_gc_sys_name(PARROT_INTERP);
-
 #define ASSERT_ARGS_Parrot_block_GC_mark __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_Parrot_block_GC_sweep __attribute__unused__ int _ASSERT_ARGS_CHECK = (\

Modified: branches/tt362/include/parrot/imcc.h
==============================================================================
--- branches/tt362/include/parrot/imcc.h	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/include/parrot/imcc.h	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/include/parrot/interpreter.h
==============================================================================
--- branches/tt362/include/parrot/interpreter.h	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/include/parrot/interpreter.h	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/include/parrot/nci.h
==============================================================================
--- branches/tt362/include/parrot/nci.h	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/include/parrot/nci.h	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/include/parrot/oo.h
==============================================================================
--- branches/tt362/include/parrot/oo.h	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/include/parrot/oo.h	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/include/parrot/pmc.h
==============================================================================
--- branches/tt362/include/parrot/pmc.h	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/include/parrot/pmc.h	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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 * pmc_new_init(PARROT_INTERP, INTVAL base_type, ARGOUT(PMC *init))
+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 * 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,78 +131,70 @@
         __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 = (\
+#define ASSERT_ARGS_Parrot_pmc_create_mro __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_constant_pmc_new_noinit __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_pmc_new_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+#define ASSERT_ARGS_Parrot_pmc_new_constant_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#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 */

Modified: branches/tt362/include/parrot/runcore_profiling.h
==============================================================================
--- branches/tt362/include/parrot/runcore_profiling.h	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/include/parrot/runcore_profiling.h	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/lib/Parrot/Configure/Step/List.pm
==============================================================================
--- branches/tt362/lib/Parrot/Configure/Step/List.pm	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/lib/Parrot/Configure/Step/List.pm	Fri Feb 19 22:23:20 2010	(r44203)
@@ -67,7 +67,6 @@
     gen::core_pmcs
     gen::crypto
     gen::opengl
-    gen::call_list
     gen::makefiles
     gen::platform
     gen::config_pm

Modified: branches/tt362/lib/Parrot/Docs/Section/Tools.pm
==============================================================================
--- branches/tt362/lib/Parrot/Docs/Section/Tools.pm	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/lib/Parrot/Docs/Section/Tools.pm	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/lib/Parrot/Ops2c/Utils.pm
==============================================================================
--- branches/tt362/lib/Parrot/Ops2c/Utils.pm	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/lib/Parrot/Ops2c/Utils.pm	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/lib/Parrot/Pmc2c/Attribute.pm
==============================================================================
--- branches/tt362/lib/Parrot/Pmc2c/Attribute.pm	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/lib/Parrot/Pmc2c/Attribute.pm	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/lib/Parrot/Pmc2c/MethodEmitter.pm
==============================================================================
--- branches/tt362/lib/Parrot/Pmc2c/MethodEmitter.pm	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/lib/Parrot/Pmc2c/MethodEmitter.pm	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/lib/Parrot/Pmc2c/PMCEmitter.pm
==============================================================================
--- branches/tt362/lib/Parrot/Pmc2c/PMCEmitter.pm	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/lib/Parrot/Pmc2c/PMCEmitter.pm	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/lib/Parrot/Pmc2c/UtilFunctions.pm
==============================================================================
--- branches/tt362/lib/Parrot/Pmc2c/UtilFunctions.pm	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/lib/Parrot/Pmc2c/UtilFunctions.pm	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/runtime/parrot/include/test_more.pir
==============================================================================
--- branches/tt362/runtime/parrot/include/test_more.pir	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/runtime/parrot/include/test_more.pir	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/runtime/parrot/library/Math/Rand.pir
==============================================================================
--- branches/tt362/runtime/parrot/library/Math/Rand.pir	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/runtime/parrot/library/Math/Rand.pir	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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
 

Modified: branches/tt362/runtime/parrot/library/OpenGL.pir
==============================================================================
--- branches/tt362/runtime/parrot/library/OpenGL.pir	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/runtime/parrot/library/OpenGL.pir	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/runtime/parrot/library/P6object.pir
==============================================================================
--- branches/tt362/runtime/parrot/library/P6object.pir	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/runtime/parrot/library/P6object.pir	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/runtime/parrot/library/SDL.pir
==============================================================================
--- branches/tt362/runtime/parrot/library/SDL.pir	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/runtime/parrot/library/SDL.pir	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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/tt362/runtime/parrot/library/Test/More.pir
==============================================================================
--- branches/tt362/runtime/parrot/library/Test/More.pir	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/runtime/parrot/library/Test/More.pir	Fri Feb 19 22:23:20 2010	(r44203)
@@ -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'( diagnostic )
   done:
@@ -324,7 +392,9 @@
     get_hll_global test, [ 'Test'; 'More' ], '_test'
 
     .local int pass
-    pass       = 0
+
+    ($I0, pass) = one_or_both_null(left, right)
+    if $I0 goto report
 
     if left != right goto pass_it
     goto report
@@ -359,7 +429,9 @@
     get_hll_global test, [ 'Test'; 'More' ], '_test'
 
     .local int pass
-    pass = 0
+
+    ($I0, pass) = one_or_both_null(left, right)
+    if $I0 goto report
 
     ne left, right, pass_it
     goto report
@@ -394,7 +466,9 @@
     get_hll_global test, [ 'Test'; 'More' ], '_test'
 
     .local int pass
-    pass = 0
+
+    ($I0, pass) = one_or_both_null(left, right)
+    if $I0 goto report
 
     ne left, right, pass_it
     goto report
@@ -428,8 +502,12 @@
     .local pmc test
     get_hll_global test, [ 'Test'; 'More' ], '_test'
 
-    # this comparison may not work in general, but it's worth trying
     .local int pass
+
+    ($I0, pass) = one_or_both_null(left, right)
+    if $I0 goto report
+
+    # this comparison may not work in general, but it's worth trying
     pass = isne left, right
 
   report:
@@ -848,6 +926,37 @@
     .return( equal )
 .end
 
+=item C<is_null( pmc, description )>
+
+Records a passing test if the PMC passed in is null, fails otherwise.
+
+=cut
+
+.sub is_null
+    .param pmc victim
+    .param string description :optional
+
+    .local pmc test
+    get_hll_global test, [ 'Test'; 'More' ], '_test'
+
+    .local int passed
+    passed = isnull victim
+
+    test.'ok'( passed, description )
+    if passed goto done
+
+    .local string v_string
+    v_string    = 'null'
+    if null victim goto diag
+    v_string    = victim
+
+  diag:
+    .local string diagnostic
+    diagnostic = _make_diagnostic( v_string, 'null')
+    test.'diag'( diagnostic )
+  done:
+.end
+
 =item C<dies_ok( codestring, description )>
 
 Takes PIR code in C<codestring> and an optional message in C<description>.

Modified: branches/tt362/runtime/parrot/library/distutils.pir
==============================================================================
--- branches/tt362/runtime/parrot/library/distutils.pir	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/runtime/parrot/library/distutils.pir	Fri Feb 19 22:23:20 2010	(r44203)
@@ -1,4 +1,4 @@
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -194,6 +194,8 @@
 
 L<http://bitbucket.org/riffraff/shakespeare-parrot/src/tip/setup.pir>
 
+L<http://gitorious.org/kakapo/kakapo/blobs/master/setup.nqp>
+
 =cut
 
 .sub '__onload' :load :init :anon
@@ -212,6 +214,8 @@
     register_step_after('build', _build_pir_nqp)
     .const 'Sub' _build_pir_nqp_rx = '_build_pir_nqp_rx'
     register_step_after('build', _build_pir_nqp_rx)
+    .const 'Sub' _build_pir_pir = '_build_pir_pir'
+    register_step_after('build', _build_pir_pir)
     .const 'Sub' _build_pbc_pir = '_build_pbc_pir'
     register_step_after('build', _build_pbc_pir)
     .const 'Sub' _build_pbc_pbc = '_build_pbc_pbc'
@@ -235,6 +239,8 @@
     register_step_after('clean', _clean_pir_nqp)
     .const 'Sub' _clean_pir_nqp_rx = '_clean_pir_nqp_rx'
     register_step_after('clean', _clean_pir_nqp_rx)
+    .const 'Sub' _clean_pir_pir = '_clean_pir_pir'
+    register_step_after('clean', _clean_pir_pir)
     .const 'Sub' _clean_pbc_pir = '_clean_pbc_pir'
     register_step_after('clean', _clean_pbc_pir)
     .const 'Sub' _clean_pbc_pbc = '_clean_pbc_pbc'
@@ -695,7 +701,7 @@
   L2:
 .end
 
-=item pir_nqp-rx
+=item pir_nqp-rx / pir_nqprx
 
 hash
 
@@ -712,6 +718,11 @@
     $P0 = kv['pir_nqp-rx']
     build_pir_nqp_rx($P0)
   L1:
+    $I0 = exists kv['pir_nqprx']
+    unless $I0 goto L2
+    $P0 = kv['pir_nqprx']
+    build_pir_nqp_rx($P0)
+  L2:
 .end
 
 .sub 'build_pir_nqp_rx'
@@ -735,6 +746,50 @@
   L2:
 .end
 
+=item pir_pir (concat)
+
+hash
+
+the key is the PIR pathname
+
+the value is an array of PIR pathname
+
+=cut
+
+.sub '_build_pir_pir' :anon
+    .param pmc kv :slurpy :named
+    $I0 = exists kv['pir_pir']
+    unless $I0 goto L1
+    $P0 = kv['pir_pir']
+    build_pir_pir($P0)
+  L1:
+.end
+
+.sub 'build_pir_pir'
+    .param pmc hash
+    $P0 = iter hash
+  L1:
+    unless $P0 goto L2
+    .local string pir, src
+    pir = shift $P0
+    .local pmc srcs
+    srcs = hash[pir]
+    $I0 = newer(pir, srcs)
+    if $I0 goto L1
+    spew(pir, '', 1 :named('verbose'))
+    $P1 = iter srcs
+  L3:
+    unless $P1 goto L4
+    .local string src
+    src = shift $P1
+    $S0 = slurp(src)
+    append(pir, $S0)
+    goto L3
+  L4:
+    goto L1
+  L2:
+.end
+
 =item pbc_pbc
 
 hash
@@ -1375,6 +1430,19 @@
   L2:
 .end
 
+=item pir_pir
+
+=cut
+
+.sub '_clean_pir_pir' :anon
+    .param pmc kv :slurpy :named
+    $I0 = exists kv['pir_pir']
+    unless $I0 goto L1
+    $P0 = kv['pir_pir']
+    clean_key($P0)
+  L1:
+.end
+
 =item pir_pge
 
 =cut
@@ -1414,7 +1482,7 @@
   L1:
 .end
 
-=item pir_nqp-rx
+=item pir_nqp-rx / pir_nqprx
 
 =cut
 
@@ -1425,6 +1493,11 @@
     $P0 = kv['pir_nqp-rx']
     clean_key($P0)
   L1:
+    $I0 = exists kv['pir_nqprx']
+    unless $I0 goto L2
+    $P0 = kv['pir_nqprx']
+    clean_key($P0)
+  L2:
 .end
 
 =item pbc_pbc
@@ -2547,8 +2620,8 @@
 
 array of pathname or a single pathname
 
-=item pbc_pir, pir_pge, pir_tge, pir_nqp, pir_nqp-rx, pbc_pbc, exe_pbc,
-installable_pbc, dynops, dynpmc, html_pod
+=item pbc_pir, pir_pge, pir_tge, pir_nqp, pir_nqp-rx, pir_nqprx, pir_pir
+pbc_pbc, exe_pbc, installable_pbc, dynops, dynpmc, html_pod
 
 =item inst_bin, inst_dynext, inst_inc, inst_lang, inst_lib
 
@@ -2579,7 +2652,7 @@
     needed = new 'Hash'
     generated = new 'Hash'
 
-    $P0 = split ' ', 'pbc_pir pir_pge pir_tge pir_nqp pir_nqp-rx pbc_pbc exe_pbc installable_pbc dynops dynpmc html_pod'
+    $P0 = split ' ', 'pbc_pir pir_pge pir_tge pir_nqp pir_nqp-rx pir_nqprx pir_pir pbc_pbc exe_pbc installable_pbc dynops dynpmc html_pod'
   L1:
     unless $P0 goto L2
     $S0 = shift $P0
@@ -4412,6 +4485,13 @@
     .return ($I0)
 .end
 
+.sub 'newer' :multi(pmc, pmc)
+    .param pmc target
+    .param pmc depend
+    $S0 = target
+    .tailcall newer($S0, depend)
+.end
+
 =item mkpath
 
 =cut

Modified: branches/tt362/src/atomic/gcc_x86.c
==============================================================================
--- branches/tt362/src/atomic/gcc_x86.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/atomic/gcc_x86.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -1,5 +1,5 @@
 /* atomic/gcc_x86.c
- *  Copyright (C) 2006, Parrot Foundation.
+ *  Copyright (C) 2006-2010, Parrot Foundation.
  *  SVN Info
  *     $Id$
  */
@@ -34,7 +34,8 @@
  */
 /*
 
-=item C<void * parrot_i386_cmpxchg>
+=item C<void * parrot_i386_cmpxchg(void *volatile *ptr, void *expect, void
+*update)>
 
 The CMPXCHG assembly instruction is a single cycle x86 instruction
 that compares C<expect> and C<*ptr>. If they are equal, sets
@@ -68,7 +69,7 @@
 
 /*
 
-=item C<long parrot_i386_xadd>
+=item C<long parrot_i386_xadd(volatile long *l, long amount)>
 
 C<xadd> is an x86 instruction that performs the following operation:
 Temporary = C<result>;

Modified: branches/tt362/src/call/args.c
==============================================================================
--- branches/tt362/src/call/args.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/call/args.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -573,7 +573,7 @@
     INTVAL          arg_index;
 
     if (PMC_IS_NULL(signature))
-        call_object = pmc_new(interp, enum_class_CallContext);
+        call_object = Parrot_pmc_new(interp, enum_class_CallContext);
     else
         call_object = signature;
 
@@ -749,7 +749,7 @@
     else if (VTABLE_does(interp, aggregate, CONST_STRING(interp, "hash"))) {
         const INTVAL elements = VTABLE_elements(interp, aggregate);
         INTVAL index;
-        PMC * const key = pmc_new(interp, enum_class_Key);
+        PMC * const key = Parrot_pmc_new(interp, enum_class_Key);
         VTABLE_set_integer_native(interp, key, 0);
         SETATTR_Key_next_key(interp, key, (PMC *)INITBucketIndex);
 
@@ -799,7 +799,7 @@
     INTVAL          arg_count;
 
     if (PMC_IS_NULL(signature))
-        call_object = pmc_new(interp, enum_class_CallContext);
+        call_object = Parrot_pmc_new(interp, enum_class_CallContext);
     /* A hack to support 'get_results' as the way of fetching the
      * exception object inside an exception handler. The first argument
      * in the call object is the exception, stick it directly into the
@@ -884,7 +884,7 @@
     PMC         *type_tuple         = PMCNULL;
     PMC         *arg_flags     = PMCNULL;
     PMC         *return_flags  = PMCNULL;
-    PMC         * const call_object = pmc_new(interp, enum_class_CallContext);
+    PMC         * const call_object = Parrot_pmc_new(interp, enum_class_CallContext);
     const INTVAL sig_len            = strlen(sig);
     INTVAL       in_return_sig      = 0;
     INTVAL       i;
@@ -1000,15 +1000,17 @@
         ARGIN(PMC *raw_sig), ARGIN(void *arg_info), ARGIN(struct pcc_set_funcs *accessor))
 {
     ASSERT_ARGS(fill_params)
-    PMC    *named_used_list = PMCNULL;
     INTVAL *raw_params;
-    const INTVAL param_count = VTABLE_elements(interp, raw_sig);
+    PMC    *named_used_list = PMCNULL;
+    INTVAL  param_count     = 0;
     INTVAL  param_index     = 0;
     INTVAL  arg_index       = 0;
     INTVAL  named_count     = 0;
     INTVAL  err_check       = 0;
     INTVAL  positional_args;
 
+    GETATTR_FixedIntegerArray_size(interp, raw_sig, param_count);
+
     /* Check if we should be throwing errors. This is configured separately
      * for parameters and return values. */
     if (PARROT_ERRORS_test(interp, PARROT_ERRORS_PARAM_COUNT_FLAG))
@@ -1087,7 +1089,7 @@
                         EXCEPTION_INVALID_OPERATION,
                         "named parameters must follow all positional parameters");
 
-            collect_positional = pmc_new(interp,
+            collect_positional = Parrot_pmc_new(interp,
                     Parrot_get_ctx_HLL_type(interp, enum_class_ResizablePMCArray));
             for (; arg_index < positional_args; arg_index++) {
                 VTABLE_push_pmc(interp, collect_positional,
@@ -1119,7 +1121,7 @@
 
                 /* Mark the name as used, cannot be filled again. */
                 if (PMC_IS_NULL(named_used_list)) /* Only created if needed. */
-                    named_used_list = pmc_new(interp, enum_class_Hash);
+                    named_used_list = Parrot_pmc_new(interp, enum_class_Hash);
 
                 VTABLE_set_integer_keyed_str(interp, named_used_list, param_name, 1);
             }
@@ -1242,7 +1244,7 @@
 
         /* Collected ("slurpy") named parameter */
         if (param_flags & PARROT_ARG_SLURPY_ARRAY) {
-            PMC * const collect_named = pmc_new(interp,
+            PMC * const collect_named = Parrot_pmc_new(interp,
                     Parrot_get_ctx_HLL_type(interp, enum_class_Hash));
             PMC * const named_arg_list = VTABLE_get_attr_str(interp, call_object, CONST_STRING(interp, "named"));
             if (!PMC_IS_NULL(named_arg_list)) {
@@ -1260,7 +1262,7 @@
                                 VTABLE_get_pmc_keyed_str(interp, call_object, name));
                         /* Mark the name as used, cannot be filled again. */
                         if (PMC_IS_NULL(named_used_list)) /* Only created if needed. */
-                            named_used_list = pmc_new(interp, enum_class_Hash);
+                            named_used_list = Parrot_pmc_new(interp, enum_class_Hash);
                         VTABLE_set_integer_keyed_str(interp, named_used_list, name, 1);
                         named_count++;
                     }
@@ -1291,7 +1293,7 @@
 
                 /* Mark the name as used, cannot be filled again. */
                 if (PMC_IS_NULL(named_used_list)) /* Only created if needed. */
-                    named_used_list = pmc_new(interp, enum_class_Hash);
+                    named_used_list = Parrot_pmc_new(interp, enum_class_Hash);
                 VTABLE_set_integer_keyed_str(interp, named_used_list, param_name, 1);
                 named_count++;
 
@@ -1610,7 +1612,7 @@
     if (PMC_IS_NULL(call_object)) {
         /* If the return_count is 0, then there are no return values waiting to
          * fill the results, so no error. */
-        if (return_count > 0 && (err_check))
+        if (return_count > 0 && err_check)
             Parrot_ex_throw_from_c_args(interp, NULL,
                 EXCEPTION_INVALID_OPERATION,
                 "too few returns: 0 passed, %d expected", return_count);
@@ -1680,7 +1682,7 @@
                         EXCEPTION_INVALID_OPERATION,
                         "named results must follow all positional results");
 
-            collect_positional = pmc_new(interp,
+            collect_positional = Parrot_pmc_new(interp,
                     Parrot_get_ctx_HLL_type(interp, enum_class_ResizablePMCArray));
 
             /* Iterate over all positional returns in the list. */
@@ -1768,7 +1770,7 @@
 
                 /* Mark the name as used, cannot be filled again. */
                 if (PMC_IS_NULL(named_used_list)) /* Only created if needed. */
-                    named_used_list = pmc_new(interp,
+                    named_used_list = Parrot_pmc_new(interp,
                             Parrot_get_ctx_HLL_type(interp, enum_class_Hash));
                 VTABLE_set_integer_keyed_str(interp, named_used_list, result_name, 1);
             }
@@ -1921,7 +1923,7 @@
         return_flags = return_array[return_index];
 
         if (PMC_IS_NULL(named_return_list)) /* Only created if needed. */
-            named_return_list = pmc_new(interp,
+            named_return_list = Parrot_pmc_new(interp,
                     Parrot_get_ctx_HLL_type(interp, enum_class_Hash));
 
         if (VTABLE_exists_keyed_str(interp, named_return_list, return_name))
@@ -1987,7 +1989,7 @@
         /* Collected ("slurpy") named result */
         if (result_flags & PARROT_ARG_SLURPY_ARRAY) {
             if (PMC_IS_NULL(named_return_list))
-                named_return_list = pmc_new(interp,
+                named_return_list = Parrot_pmc_new(interp,
                         Parrot_get_ctx_HLL_type(interp, enum_class_Hash));
 
             csr_fill_pmc(interp, call_object, result_index, named_return_list);
@@ -2104,8 +2106,7 @@
         ARGIN(PMC *raw_sig), ARGIN(opcode_t *raw_returns))
 {
     ASSERT_ARGS(Parrot_pcc_fill_returns_from_op)
-    const INTVAL raw_return_count = VTABLE_elements(interp, raw_sig);
-    INTVAL err_check      = 0;
+
     static pcc_get_funcs function_pointers = {
         (intval_func_t)intval_arg_from_op,
         (numval_func_t)numval_arg_from_op,
@@ -2118,20 +2119,21 @@
         (pmc_func_t)pmc_constant_from_op,
     };
 
+    INTVAL raw_return_count = 0;
 
-    /* Check if we should be throwing errors. This is configured separately
-     * for parameters and return values. */
-    if (PARROT_ERRORS_test(interp, PARROT_ERRORS_RESULT_COUNT_FLAG))
-            err_check = 1;
+    GETATTR_FixedIntegerArray_size(interp, raw_sig, raw_return_count);
 
     /* A null call object is fine if there are no arguments and no returns. */
     if (PMC_IS_NULL(call_object)) {
-        if (raw_return_count > 0) {
-            if (err_check)
-                Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
-                        "too many return values: %d passed, 0 expected",
-                        raw_return_count);
-        }
+
+        /* Check if we should be throwing errors. This is configured separately
+         * for parameters and return values. */
+        if (raw_return_count > 0
+        &&  PARROT_ERRORS_test(interp, PARROT_ERRORS_RESULT_COUNT_FLAG))
+            Parrot_ex_throw_from_c_args(interp, NULL,
+                EXCEPTION_INVALID_OPERATION,
+                "too many return values: %d passed, 0 expected",
+                raw_return_count);
         return;
     }
 
@@ -2139,6 +2141,8 @@
 
     return;
 }
+
+
 /*
 
 =item C<void Parrot_pcc_fill_returns_from_continuation(PARROT_INTERP, PMC
@@ -2158,7 +2162,7 @@
 {
     ASSERT_ARGS(Parrot_pcc_fill_returns_from_continuation)
     const INTVAL raw_return_count = VTABLE_elements(interp, raw_sig);
-    INTVAL err_check      = 0;
+
     static pcc_get_funcs function_pointers = {
         (intval_func_t)intval_arg_from_continuation,
         (numval_func_t)numval_arg_from_continuation,
@@ -2171,20 +2175,17 @@
         (pmc_func_t)pmc_arg_from_continuation,
     };
 
-
-    /* Check if we should be throwing errors. This is configured separately
-     * for parameters and return values. */
-    if (PARROT_ERRORS_test(interp, PARROT_ERRORS_RESULT_COUNT_FLAG))
-            err_check = 1;
-
     /* A null call object is fine if there are no arguments and no returns. */
     if (PMC_IS_NULL(call_object)) {
-        if (raw_return_count > 0) {
-            if (err_check)
-                Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
-                        "too many return values: %d passed, 0 expected",
-                        raw_return_count);
-        }
+
+        /* Check if we should be throwing errors. This is configured separately
+         * for parameters and return values. */
+        if (raw_return_count > 0
+        &&  PARROT_ERRORS_test(interp, PARROT_ERRORS_RESULT_COUNT_FLAG))
+                Parrot_ex_throw_from_c_args(interp, NULL,
+                    EXCEPTION_INVALID_OPERATION,
+                    "too many return values: %d passed, 0 expected",
+                    raw_return_count);
         return;
     }
 
@@ -2193,6 +2194,7 @@
     return;
 }
 
+
 /*
 
 =item C<void Parrot_pcc_fill_returns_from_c_args(PARROT_INTERP, PMC
@@ -2219,7 +2221,6 @@
     ASSERT_ARGS(Parrot_pcc_fill_returns_from_c_args)
     va_list args;
     INTVAL raw_return_count = 0;
-    INTVAL err_check        = 0;
     PMC    *raw_sig         = PMCNULL;
     PMC    *invalid_sig     = PMCNULL;
 
@@ -2236,21 +2237,20 @@
     };
 
     parse_signature_string(interp, signature, &raw_sig, &invalid_sig);
+
     if (!PMC_IS_NULL(invalid_sig))
         Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
                 "parameters should not be included in the return signature");
 
     raw_return_count = VTABLE_elements(interp, raw_sig);
 
-    /* Check if we should be throwing errors. This is configured separately
-     * for parameters and return values. */
-    if (PARROT_ERRORS_test(interp, PARROT_ERRORS_RESULT_COUNT_FLAG))
-            err_check = 1;
-
     /* A null call object is fine if there are no arguments and no returns. */
     if (PMC_IS_NULL(call_object)) {
-        if (raw_return_count > 0)
-            if (err_check)
+
+        /* Check if we should be throwing errors. This is configured separately
+         * for parameters and return values. */
+        if (raw_return_count > 0
+        &&  PARROT_ERRORS_test(interp, PARROT_ERRORS_RESULT_COUNT_FLAG))
                 Parrot_ex_throw_from_c_args(interp, NULL,
                     EXCEPTION_INVALID_OPERATION,
                     "too many return values: %d passed, 0 expected",
@@ -2263,6 +2263,7 @@
     va_end(args);
 }
 
+
 /*
 
 =item C<static void parse_signature_string(PARROT_INTERP, const char *signature,
@@ -2288,7 +2289,7 @@
     INTVAL set = 0;
 
     if (PMC_IS_NULL(*arg_flags))
-        *arg_flags = pmc_new(interp, enum_class_ResizableIntegerArray);
+        *arg_flags = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
     current_array = *arg_flags;
 
     for (x = signature; *x != '\0'; x++) {
@@ -2307,7 +2308,7 @@
 
             /* Switch to the return argument flags. */
             if (PMC_IS_NULL(*return_flags))
-                *return_flags = pmc_new(interp, enum_class_ResizableIntegerArray);
+                *return_flags = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
             current_array = *return_flags;
         }
         /* parse arg type */
@@ -3142,7 +3143,7 @@
     return_flags = VTABLE_get_attr_str(interp, sig_object, return_flags_name);
     if (PMC_IS_NULL(return_flags)) {
         /* Create return_flags for single element */
-        return_flags = pmc_new(interp, enum_class_FixedIntegerArray);
+        return_flags = Parrot_pmc_new(interp, enum_class_FixedIntegerArray);
         return_flags_size = 0;
         VTABLE_set_integer_native(interp, return_flags, 1);
         VTABLE_set_attr_str(interp, sig_object, return_flags_name, return_flags);

Modified: branches/tt362/src/call/context.c
==============================================================================
--- branches/tt362/src/call/context.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/call/context.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -566,7 +566,7 @@
     ARGIN_NULLOK(PMC *old))
 {
     ASSERT_ARGS(Parrot_alloc_context)
-    PMC            *pmcctx = pmc_new(interp, enum_class_CallContext);
+    PMC            *pmcctx = Parrot_pmc_new(interp, enum_class_CallContext);
 
     allocate_registers(interp, pmcctx, number_regs_used);
     init_context(interp, pmcctx, old);
@@ -592,7 +592,7 @@
 Parrot_pcc_allocate_empty_context(PARROT_INTERP, ARGIN_NULLOK(PMC *old))
 {
     ASSERT_ARGS(Parrot_pcc_allocate_empty_context)
-    PMC            *pmcctx = pmc_new(interp, enum_class_CallContext);
+    PMC            *pmcctx = Parrot_pmc_new(interp, enum_class_CallContext);
 
     init_context(interp, pmcctx, old);
 

Modified: branches/tt362/src/debug.c
==============================================================================
--- branches/tt362/src/debug.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/debug.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -603,6 +603,9 @@
 
 =item C<static const DebuggerCmd * get_cmd(const char **cmd)>
 
+Parse the debuggger command indicated by C<**cmd>.  Return a pointer to the
+matching function for known commands, or a NULL pointer otherwise.
+
 =cut
 
 */
@@ -658,6 +661,8 @@
 
 =item C<static const char * skip_whitespace(const char *cmd)>
 
+Return a pointer to the first non-whitespace character in C<cmd>.
+
 =cut
 
 */
@@ -677,6 +682,8 @@
 
 =item C<static unsigned long get_uint(const char **cmd, unsigned int def)>
 
+Get an unsigned int from C<**cmd>.
+
 =cut
 
 */
@@ -700,6 +707,8 @@
 
 =item C<static unsigned long get_ulong(const char **cmd, unsigned long def)>
 
+Get an unsigned long from C<**cmd>.
+
 =cut
 
 */
@@ -1500,6 +1509,8 @@
 
 =item C<static unsigned short condition_regtype(const char *cmd)>
 
+Return the type of the register represented by C<*cmd>.
+
 =cut
 
 */
@@ -1865,6 +1876,8 @@
 
 =item C<static void list_breakpoints(PDB_t *pdb)>
 
+Print all breakpoints for this debugger session to C<pdb->debugger>.
+
 =cut
 
 */
@@ -3350,33 +3363,6 @@
 
 /*
 
-=item C<opcode_t * PDB_compile(PARROT_INTERP, const char *command)>
-
-Compiles instructions with the PASM compiler.
-
-Appends an C<end> op.
-
-This may be called from C<PDB_eval> above or from the compile opcode
-which generates a malloced string.
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-opcode_t *
-PDB_compile(PARROT_INTERP, ARGIN(const char *command))
-{
-    ASSERT_ARGS(PDB_compile)
-
-    UNUSED(command);
-    Parrot_ex_throw_from_c_args(interp, NULL,
-        EXCEPTION_UNIMPLEMENTED,
-        "PDB_compile ('PASM1' compiler) has been deprecated");
-}
-
-/*
-
 =item C<void PDB_print(PARROT_INTERP, const char *command)>
 
 Print interp registers.

Modified: branches/tt362/src/dynext.c
==============================================================================
--- branches/tt362/src/dynext.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/dynext.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -155,7 +155,7 @@
 {
     ASSERT_ARGS(set_cstring_prop)
     STRING * const key  = Parrot_str_new_constant(interp, what);
-    PMC    * const prop = constant_pmc_new(interp, enum_class_String);
+    PMC    * const prop = Parrot_pmc_new_constant(interp, enum_class_String);
 
     VTABLE_set_string_native(interp, prop, name);
     VTABLE_setprop(interp, lib_pmc, key, prop);
@@ -396,7 +396,7 @@
 
     /* seems to be a native/NCI lib */
     if (!load_func || !lib_pmc)
-        lib_pmc = constant_pmc_new(interp, enum_class_ParrotLibrary);
+        lib_pmc = Parrot_pmc_new_constant(interp, enum_class_ParrotLibrary);
 
     /*  Call init, if it exists */
     if (init_func)
@@ -532,7 +532,7 @@
 make_string_pmc(PARROT_INTERP, ARGIN(STRING *string))
 {
     ASSERT_ARGS(make_string_pmc)
-    PMC * const ret = constant_pmc_new(interp, enum_class_String);
+    PMC * const ret = Parrot_pmc_new_constant(interp, enum_class_String);
     VTABLE_set_string_native(interp, ret, string);
 
     return ret;
@@ -576,7 +576,7 @@
          * Anyways, if we hope to share bytecode at runtime, we need to have
          * them have identical opcodes anyways.
          */
-        PMC * const new_lib_pmc = constant_pmc_new(d, enum_class_ParrotLibrary);
+        PMC * const new_lib_pmc = Parrot_pmc_new_constant(d, enum_class_ParrotLibrary);
 
         PMC_data(new_lib_pmc) = handle;
         VTABLE_setprop(d, new_lib_pmc, CONST_STRING(s, "_filename"), make_string_pmc(d, wo_ext));
@@ -668,7 +668,7 @@
          * XXX Parrot_ex_throw_from_c_args? return PMCNULL?
          * PMC Undef seems convenient, because it can be queried with get_bool()
          */
-        return pmc_new(interp, enum_class_Undef);
+        return Parrot_pmc_new(interp, enum_class_Undef);
     }
 
     return run_init_lib(interp, handle, lib_name, wo_ext);

Modified: branches/tt362/src/dynpmc/dynlexpad.pmc
==============================================================================
--- branches/tt362/src/dynpmc/dynlexpad.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/dynpmc/dynlexpad.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -45,7 +45,7 @@
             (Parrot_DynLexPad_attributes *) PMC_data(SELF);
 
         if (VTABLE_elements(interp, lexinfo)) {
-            attrs->init = pmc_new_init(interp, enum_class_LexPad, lexinfo);
+            attrs->init = Parrot_pmc_new_init(interp, enum_class_LexPad, lexinfo);
         }
         else
             attrs->init = NULL;

Modified: branches/tt362/src/dynpmc/foo.pmc
==============================================================================
--- branches/tt362/src/dynpmc/foo.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/dynpmc/foo.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -16,14 +16,14 @@
 
     MULTI PMC* subtract(Integer value, PMC *dest) {
         if (!dest)
-            dest = pmc_new(interp, SELF->vtable->base_type);
+            dest = Parrot_pmc_new(interp, SELF->vtable->base_type);
         VTABLE_set_integer_native(interp, dest, 144);
         return dest;
     }
 
     MULTI PMC* subtract(DEFAULT value, PMC *dest) {
         if (!dest)
-            dest = pmc_new(interp, SELF->vtable->base_type);
+            dest = Parrot_pmc_new(interp, SELF->vtable->base_type);
         VTABLE_set_integer_native(interp, dest, 244);
         return dest;
     }

Modified: branches/tt362/src/dynpmc/gdbmhash.pmc
==============================================================================
--- branches/tt362/src/dynpmc/gdbmhash.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/dynpmc/gdbmhash.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -291,7 +291,7 @@
 
     VTABLE PMC* get_pmc_keyed(PMC* key) {
         STRING * ret_string = SELF.get_string_keyed(key);
-        PMC *ret_pmc = pmc_new(interp, enum_class_String);
+        PMC *ret_pmc = Parrot_pmc_new(interp, enum_class_String);
 
         VTABLE_set_string_native(interp, ret_pmc, ret_string);
 
@@ -311,7 +311,7 @@
     VTABLE void set_integer_keyed(PMC* key, INTVAL value) {
         PMC *temp;
 
-        temp = pmc_new(interp, enum_class_String);
+        temp = Parrot_pmc_new(interp, enum_class_String);
         VTABLE_set_integer_native(interp, temp, value);
         SELF.set_pmc_keyed(key, temp);
     }
@@ -330,7 +330,7 @@
     VTABLE void set_number_keyed(PMC* key, FLOATVAL value) {
         PMC *temp;
 
-        temp = pmc_new(interp, enum_class_String);
+        temp = Parrot_pmc_new(interp, enum_class_String);
         VTABLE_set_number_native(interp, temp, value);
         SELF.set_pmc_keyed(key, temp);
     }

Modified: branches/tt362/src/dynpmc/rational.pmc
==============================================================================
--- branches/tt362/src/dynpmc/rational.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/dynpmc/rational.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -282,7 +282,7 @@
 */
     VTABLE PMC *clone() {
       #ifdef PARROT_HAS_GMP
-        PMC * const ret = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const ret = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         mpq_set(RT(ret), RT(SELF));
         return ret;
       #else
@@ -522,7 +522,7 @@
 
     MULTI PMC *add(Rational value, PMC* dest) {
       #ifdef PARROT_HAS_GMP
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         mpq_add(RT(dest), RT(SELF), RT(value));
         return dest;
@@ -633,7 +633,7 @@
 
     MULTI PMC *subtract(Rational value, PMC* dest) {
       #ifdef PARROT_HAS_GMP
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         mpq_sub(RT(dest), RT(SELF), RT(value));
         return dest;
       #else
@@ -743,7 +743,7 @@
 
     MULTI PMC *multiply(Rational value, PMC* dest) {
       #ifdef PARROT_HAS_GMP
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         mpq_mul(RT(dest), RT(SELF), RT(value));
         return dest;
       #else
@@ -853,7 +853,7 @@
 
     MULTI PMC *divide(Rational value, PMC* dest) {
       #ifdef PARROT_HAS_GMP
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         mpq_div(RT(dest), RT(SELF), RT(value));
         return dest;
       #else
@@ -951,7 +951,7 @@
 */
     VTABLE PMC *neg(PMC* dest) {
       #ifdef PARROT_HAS_GMP
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         mpq_neg(RT(dest), RT(SELF));
         return dest;
@@ -984,7 +984,7 @@
 */
     VTABLE PMC *absolute(PMC* dest) {
       #ifdef PARROT_HAS_GMP
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         mpq_abs(RT(dest), RT(SELF));
         return dest;

Modified: branches/tt362/src/embed.c
==============================================================================
--- branches/tt362/src/embed.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/embed.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -37,8 +37,9 @@
 static const char * op_name(PARROT_INTERP, int k)
         __attribute__nonnull__(1);
 
-static void print_constant_table(PARROT_INTERP)
-        __attribute__nonnull__(1);
+static void print_constant_table(PARROT_INTERP, ARGIN(PMC *output))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 static void print_debug(PARROT_INTERP, SHIM(int status), SHIM(void *p))
         __attribute__nonnull__(1);
@@ -55,7 +56,8 @@
 #define ASSERT_ARGS_op_name __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_print_constant_table __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(output))
 #define ASSERT_ARGS_print_debug __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_set_current_sub __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -186,7 +188,7 @@
 void
 Parrot_set_executable_name(PARROT_INTERP, Parrot_String name)
 {
-    PMC * const name_pmc = pmc_new(interp, enum_class_String);
+    PMC * const name_pmc = Parrot_pmc_new(interp, enum_class_String);
     VTABLE_set_string_native(interp, name_pmc, name);
     VTABLE_set_pmc_keyed_int(interp, interp->iglobals, IGLOBALS_EXECUTABLE,
         name_pmc);
@@ -635,7 +637,7 @@
 setup_argv(PARROT_INTERP, int argc, ARGIN(char **argv))
 {
     ASSERT_ARGS(setup_argv)
-    PMC   *userargv = pmc_new(interp, enum_class_ResizableStringArray);
+    PMC   *userargv = Parrot_pmc_new(interp, enum_class_ResizableStringArray);
     INTVAL i;
 
     if (Interp_debug_TEST(interp, PARROT_START_DEBUG_FLAG)) {
@@ -763,7 +765,7 @@
     /* If we didn't find anything, put a dummy PMC into current_sub.
        The default values set by SUb.init are appropiate for the
        dummy, don't need additional settings. */
-    sub_pmc                      = pmc_new(interp, enum_class_Sub);
+    sub_pmc                      = Parrot_pmc_new(interp, enum_class_Sub);
     Parrot_pcc_set_sub(interp, CURRENT_CONTEXT(interp), sub_pmc);
 
     return sub_pmc;
@@ -868,7 +870,7 @@
 
 /*
 
-=item C<static void print_constant_table(PARROT_INTERP)>
+=item C<static void print_constant_table(PARROT_INTERP, PMC *output)>
 
 Prints the contents of the constants table.
 
@@ -876,41 +878,41 @@
 
 */
 static void
-print_constant_table(PARROT_INTERP)
+print_constant_table(PARROT_INTERP, ARGIN(PMC *output))
 {
     ASSERT_ARGS(print_constant_table)
     const INTVAL numconstants = interp->code->const_table->const_count;
     INTVAL i;
 
     /* TODO: would be nice to print the name of the file as well */
-    Parrot_io_printf(interp, "=head1 Constant-table\n\n");
+    Parrot_io_fprintf(interp, output, "=head1 Constant-table\n\n");
 
     for (i = 0; i < numconstants; ++i) {
         const PackFile_Constant * const c = interp->code->const_table->constants[i];
 
         switch (c->type) {
           case PFC_NUMBER:
-            Parrot_io_printf(interp, "PMC_CONST(%d): %f\n", i, c->u.number);
+            Parrot_io_fprintf(interp, output, "PMC_CONST(%d): %f\n", i, c->u.number);
             break;
           case PFC_STRING:
-            Parrot_io_printf(interp, "PMC_CONST(%d): %S\n", i, c->u.string);
+            Parrot_io_fprintf(interp, output, "PMC_CONST(%d): %S\n", i, c->u.string);
             break;
           case PFC_KEY:
-            Parrot_io_printf(interp, "PMC_CONST(%d): ", i);
+            Parrot_io_fprintf(interp, output, "PMC_CONST(%d): ", i);
             /* XXX */
             /* Parrot_print_p(interp, c->u.key); */
-            Parrot_io_printf(interp, "(PMC constant)");
-            Parrot_io_printf(interp, "\n");
+            Parrot_io_fprintf(interp, output, "(PMC constant)");
+            Parrot_io_fprintf(interp, output, "\n");
             break;
           case PFC_PMC:
             {
-                Parrot_io_printf(interp, "PMC_CONST(%d): ", i);
+                Parrot_io_fprintf(interp, output, "PMC_CONST(%d): ", i);
 
                 switch (c->u.key->vtable->base_type) {
                     /* each PBC file has a ParrotInterpreter, but it can't
                      * stringify by itself */
                   case enum_class_ParrotInterpreter:
-                    Parrot_io_printf(interp, "'ParrotInterpreter'");
+                    Parrot_io_fprintf(interp, output, "'ParrotInterpreter'");
                     break;
 
                     /* FixedIntegerArrays used for signatures, handy to print */
@@ -918,15 +920,15 @@
                     {
                         INTVAL n = VTABLE_elements(interp, c->u.key);
                         INTVAL i;
-                        Parrot_io_printf(interp, "[");
+                        Parrot_io_fprintf(interp, output, "[");
 
                         for (i = 0; i < n; ++i) {
                             INTVAL val = VTABLE_get_integer_keyed_int(interp, c->u.key, i);
-                            Parrot_io_printf(interp, "%d", val);
+                            Parrot_io_fprintf(interp, output, "%d", val);
                             if (i < n - 1)
-                                Parrot_io_printf(interp, ",");
+                                Parrot_io_fprintf(interp, output, ",");
                         }
-                        Parrot_io_printf(interp, "]");
+                        Parrot_io_fprintf(interp, output, "]");
                         break;
                     }
                   case enum_class_NameSpace:
@@ -937,28 +939,28 @@
                         /*Parrot_print_p(interp, c->u.key);*/
                         STRING * const s = VTABLE_get_string(interp, c->u.key);
                         if (s)
-                            Parrot_io_printf(interp, "%Ss", s);
+                            Parrot_io_fprintf(interp, output, "%Ss", s);
                         break;
                     }
                   case enum_class_Sub:
-                    Parrot_io_printf(interp, "%S", VTABLE_get_string(interp, c->u.key));
+                    Parrot_io_fprintf(interp, output, "%S", VTABLE_get_string(interp, c->u.key));
                     break;
                   default:
-                    Parrot_io_printf(interp, "(PMC constant)");
+                    Parrot_io_fprintf(interp, output, "(PMC constant)");
                     break;
                 }
 
-                Parrot_io_printf(interp, "\n");
+                Parrot_io_fprintf(interp, output, "\n");
                 break;
             }
           default:
-            Parrot_io_printf(interp, "wrong constant type in constant table!\n");
+            Parrot_io_fprintf(interp, output,  "wrong constant type in constant table!\n");
             /* XXX throw an exception? Is it worth the trouble? */
             break;
         }
     }
 
-    Parrot_io_printf(interp, "\n=cut\n\n");
+    Parrot_io_fprintf(interp, output, "\n=cut\n\n");
 }
 
 
@@ -977,7 +979,7 @@
 
 PARROT_EXPORT
 void
-Parrot_disassemble(PARROT_INTERP, SHIM(const char *outfile), Parrot_disassemble_options options)
+Parrot_disassemble(PARROT_INTERP, ARGIN(const char *outfile), Parrot_disassemble_options options)
 {
     PDB_line_t *line;
     PDB_t * const pdb   = mem_allocate_zeroed_typed(PDB_t);
@@ -985,6 +987,15 @@
     int curr_mapping    = 0;
     int op_code_seq_num = 0;
     int debugs;
+    PMC *output;
+
+    if (outfile != NULL) {
+        output = Parrot_io_open(interp, PMCNULL,
+                Parrot_str_new(interp, outfile, 0),
+                Parrot_str_new_constant(interp, "tw"));
+    }
+    else
+        output = Parrot_io_stdhandle(interp, PIO_STDOUT_FILENO, PMCNULL);
 
     interp->pdb     = pdb;
     pdb->cur_opcode = interp->code->base.data;
@@ -994,26 +1005,26 @@
     line   = pdb->file->line;
     debugs = (interp->code->debugs != NULL);
 
-    print_constant_table(interp);
+    print_constant_table(interp, output);
     if (options & enum_DIS_HEADER)
         return;
 
     if (!(options & enum_DIS_BARE))
-        Parrot_io_printf(interp, "# %12s-%12s", "Seq_Op_Num", "Relative-PC");
+        Parrot_io_fprintf(interp, output, "# %12s-%12s", "Seq_Op_Num", "Relative-PC");
 
     if (debugs) {
         if (!(options & enum_DIS_BARE))
-            Parrot_io_printf(interp, " %6s:\n", "SrcLn#");
+            Parrot_io_fprintf(interp, output, " %6s:\n", "SrcLn#");
         num_mappings = interp->code->debugs->num_mappings;
     }
     else {
-        Parrot_io_printf(interp, "\n");
+        Parrot_io_fprintf(interp, output, "\n");
     }
 
     while (line->next) {
         const char *c;
 
-        /* Parrot_io_printf(interp, "%i < %i %i == %i \n", curr_mapping,
+        /* Parrot_io_fprintf(interp, output, "%i < %i %i == %i \n", curr_mapping,
          * num_mappings, op_code_seq_num,
          * interp->code->debugs->mappings[curr_mapping]->offset); */
 
@@ -1021,35 +1032,37 @@
             if (op_code_seq_num == interp->code->debugs->mappings[curr_mapping]->offset) {
                 const int filename_const_offset =
                     interp->code->debugs->mappings[curr_mapping]->filename;
-                Parrot_io_printf(interp, "# Current Source Filename '%Ss'\n",
+                Parrot_io_fprintf(interp, output, "# Current Source Filename '%Ss'\n",
                         interp->code->const_table->constants[filename_const_offset]->u.string);
                 curr_mapping++;
             }
         }
 
         if (!(options & enum_DIS_BARE))
-            Parrot_io_printf(interp, "%012i-%012i",
+            Parrot_io_fprintf(interp, output, "%012i-%012i",
                              op_code_seq_num, line->opcode - interp->code->base.data);
 
         if (debugs && !(options & enum_DIS_BARE))
-            Parrot_io_printf(interp, " %06i: ",
+            Parrot_io_fprintf(interp, output, " %06i: ",
                     interp->code->debugs->base.data[op_code_seq_num]);
 
         /* If it has a label print it */
         if (line->label)
-            Parrot_io_printf(interp, "L%li:\t", line->label->number);
+            Parrot_io_fprintf(interp, output, "L%li:\t", line->label->number);
         else
-            Parrot_io_printf(interp, "\t");
+            Parrot_io_fprintf(interp, output, "\t");
 
         c = pdb->file->source + line->source_offset;
 
         while (c && *c != '\n')
-            Parrot_io_printf(interp, "%c", *(c++));
+            Parrot_io_fprintf(interp, output, "%c", *(c++));
 
-        Parrot_io_printf(interp, "\n");
+        Parrot_io_fprintf(interp, output, "\n");
         line = line->next;
         op_code_seq_num++;
     }
+    if (outfile != NULL)
+        Parrot_io_close(interp, output);
 
     return;
 }

Modified: branches/tt362/src/exceptions.c
==============================================================================
--- branches/tt362/src/exceptions.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/exceptions.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -68,7 +68,7 @@
         long error, ARGIN_NULLOK(STRING *msg))
 {
     ASSERT_ARGS(Parrot_ex_build_exception)
-    PMC *exception = pmc_new(interp, enum_class_Exception);
+    PMC *exception = Parrot_pmc_new(interp, enum_class_Exception);
 
     VTABLE_set_integer_keyed_str(interp, exception, CONST_STRING(interp, "severity"), severity);
     VTABLE_set_integer_keyed_str(interp, exception, CONST_STRING(interp, "type"), error);
@@ -176,7 +176,7 @@
 Parrot_ex_add_c_handler(PARROT_INTERP, ARGIN(Parrot_runloop *jp))
 {
     ASSERT_ARGS(Parrot_ex_add_c_handler)
-    PMC * const handler = pmc_new(interp, enum_class_ExceptionHandler);
+    PMC * const handler = Parrot_pmc_new(interp, enum_class_ExceptionHandler);
     /* Flag to mark a C exception handler */
     PObj_get_FLAGS(handler) |= SUB_FLAG_C_HANDLER;
     VTABLE_set_pointer(interp, handler, jp);

Modified: branches/tt362/src/extend.c
==============================================================================
--- branches/tt362/src/extend.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/extend.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -945,7 +945,7 @@
     ASSERT_ARGS(Parrot_PMC_new)
     Parrot_PMC newpmc;
     PARROT_CALLIN_START(interp);
-    newpmc = pmc_new_noinit(interp, type);
+    newpmc = Parrot_pmc_new_noinit(interp, type);
     VTABLE_init(interp, newpmc);
     PARROT_CALLIN_END(interp);
     return newpmc;
@@ -968,7 +968,7 @@
     ASSERT_ARGS(Parrot_PMC_typenum)
     Parrot_Int retval;
     PARROT_CALLIN_START(interp);
-    retval = pmc_type(interp, Parrot_str_new(interp, _class, 0));
+    retval = Parrot_pmc_get_type_str(interp, Parrot_str_new(interp, _class, 0));
     PARROT_CALLIN_END(interp);
     return retval;
 }
@@ -1058,120 +1058,6 @@
 
 /*
 
-=item C<void * Parrot_call_sub(PARROT_INTERP, Parrot_PMC sub_pmc, const char
-*signature, ...)>
-
-Call a parrot subroutine with the given function signature. The first char in
-C<signature> denotes the return value. Next chars are arguments.
-
-The return value of this function can be void or a pointer type.
-
-Signature chars are:
-
-    v ... void return
-    I ... Parrot_Int
-    N ... Parrot_Float
-    S ... Parrot_String
-    P ... Parrot_PMC
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-void *
-Parrot_call_sub(PARROT_INTERP, Parrot_PMC sub_pmc,
-                 ARGIN(const char *signature), ...)
-{
-    ASSERT_ARGS(Parrot_call_sub)
-    va_list     args;
-    PMC        *sig_object;
-    Parrot_sub *sub;
-    void       *result     = NULL;
-    const char *arg_sig    = signature;
-    char        return_sig = signature[0];
-
-    arg_sig++;
-    va_start(args, signature);
-    sig_object = Parrot_pcc_build_sig_object_from_varargs(interp, PMCNULL,
-        arg_sig, args);
-    va_end(args);
-
-    /* Add the return argument onto the call signature object (a bit
-     * hackish, added for backward compatibility in deprecated API function,
-     * see TT #1145). */
-    switch (return_sig) {
-        case 'v':
-        {
-            Parrot_String full_sig = VTABLE_get_string(interp, sig_object);
-            Parrot_str_concat(interp, full_sig,
-                    Parrot_str_new_constant(interp, "->"), 0);
-            break;
-        }
-        case 'V':
-        case 'P':
-        {
-            Parrot_pcc_append_result(interp, sig_object, Parrot_str_new_constant(interp, "P"),
-                    &result);
-            break;
-        }
-        default:
-            Parrot_ex_throw_from_c_args(interp, NULL,
-                EXCEPTION_INVALID_OPERATION,
-                "Dispatch: invalid return type %c!", return_sig);
-    }
-
-    PMC_get_sub(interp, sub_pmc, sub);
-    Parrot_pcc_set_constants(interp, CURRENT_CONTEXT(interp),
-        sub->seg->const_table->constants);
-    Parrot_pcc_invoke_from_sig_object(interp, sub_pmc, sig_object);
-
-    return result;
-}
-
-
-/*
-
-=item C<Parrot_Int Parrot_call_sub_ret_int(PARROT_INTERP, Parrot_PMC sub_pmc,
-const char *signature, ...)>
-
-Like C<Parrot_call_sub>, with Parrot_Int return result.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-Parrot_Int
-Parrot_call_sub_ret_int(PARROT_INTERP, Parrot_PMC sub_pmc,
-                 ARGIN(const char *signature), ...)
-{
-    ASSERT_ARGS(Parrot_call_sub_ret_int)
-    va_list     args;
-    PMC        *sig_object;
-    Parrot_Int  result;
-    char        return_sig  = signature[0];
-    const char *arg_sig     = signature;
-    Parrot_sub *sub;
-
-    arg_sig++;
-    va_start(args, signature);
-    sig_object = Parrot_pcc_build_sig_object_from_varargs(interp, PMCNULL, arg_sig, args);
-    va_end(args);
-
-    /* Add the return argument onto the call signature object (a bit
-     * hackish, added for backward compatibility in deprecated API function,
-     * see TT #1145). */
-    Parrot_pcc_append_result(interp, sig_object, Parrot_str_new_constant(interp, "I"), &result);
-    Parrot_pcc_invoke_from_sig_object(interp, sub_pmc, sig_object);
-
-    return result;
-}
-
-/*
-
 =item C<Parrot_Int Parrot_get_intreg(PARROT_INTERP, Parrot_Int regnum)>
 
 Return the value of an integer register.
@@ -1391,7 +1277,7 @@
 {
     ASSERT_ARGS(Parrot_register_pmc)
     PARROT_CALLIN_START(interp);
-    gc_register_pmc(interp, pmc);
+    Parrot_pmc_gc_register(interp, pmc);
     PARROT_CALLIN_END(interp);
 }
 
@@ -1412,7 +1298,7 @@
 {
     ASSERT_ARGS(Parrot_unregister_pmc)
     PARROT_CALLIN_START(interp);
-    gc_unregister_pmc(interp, pmc);
+    Parrot_pmc_gc_unregister(interp, pmc);
     PARROT_CALLIN_END(interp);
 }
 
@@ -1473,7 +1359,7 @@
     ASSERT_ARGS(Parrot_sub_new_from_c_func)
     Parrot_String sig = Parrot_new_string(interp, signature, strlen(signature),
         (char *) NULL, 0);
-    Parrot_PMC sub = pmc_new(interp, enum_class_NCI);
+    Parrot_PMC sub = Parrot_pmc_new(interp, enum_class_NCI);
     VTABLE_set_pointer_keyed_str(interp, sub, sig, F2DPTR(func));
     PObj_get_FLAGS(sub) |= PObj_private1_FLAG;
     return sub;
@@ -1497,7 +1383,7 @@
     Parrot_PMC result;
     PARROT_CALLIN_START(interp);
 
-    result = pmc_new_init(interp, enum_class_Class, classtype);
+    result = Parrot_pmc_new_init(interp, enum_class_Class, classtype);
 
     PARROT_CALLIN_END(interp);
     return result;

Modified: branches/tt362/src/frame_builder.c
==============================================================================
--- branches/tt362/src/frame_builder.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/frame_builder.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -62,7 +62,7 @@
 PMC *
 Parrot_jit_clone_buffer(PARROT_INTERP, PMC *pmc, void *priv)
 {
-    PMC * const rv = pmc_new(interp, pmc->vtable->base_type);
+    PMC * const rv = Parrot_pmc_new(interp, pmc->vtable->base_type);
 
     VTABLE_init(interp, rv);
     /* copy the attributes */
@@ -550,7 +550,7 @@
 
         /* make new pmc */
         emitm_movl_i_m(pc, enum_class_UnManagedStruct, emit_EBP, 0, 1, temp_calls_offset + 4);
-        emitm_call_cfunc(pc, pmc_new);
+        emitm_call_cfunc(pc, Parrot_pmc_new);
 
         /* restore pointer p to EDX */
         emitm_movl_m_r(interp, pc, emit_EDX, emit_EBP, 0, 1, temp_calls_offset + 12);

Modified: branches/tt362/src/gc/alloc_resources.c
==============================================================================
--- branches/tt362/src/gc/alloc_resources.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/gc/alloc_resources.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -80,6 +80,7 @@
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*dest_interp);
 
+static void free_memory_pool(Variable_Size_Pool *pool);
 static void free_pool(ARGMOD(Fixed_Size_Pool *pool))
         __attribute__nonnull__(1)
         FUNC_MODIFIES(*pool);
@@ -143,6 +144,7 @@
 #define ASSERT_ARGS_fix_pmc_syncs __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(dest_interp) \
     , PARROT_ASSERT_ARG(pool))
+#define ASSERT_ARGS_free_memory_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_free_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(pool))
 #define ASSERT_ARGS_new_memory_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
@@ -627,33 +629,6 @@
 
 /*
 
-=item C<size_t aligned_size(const Buffer *buffer, size_t len)>
-
-Determines the size of Buffer C<buffer> which has nominal length C<len>.
-The actual size in RAM of the Buffer might be different because of
-alignment issues.
-
-=cut
-
-*/
-
-PARROT_PURE_FUNCTION
-PARROT_WARN_UNUSED_RESULT
-size_t
-aligned_size(ARGIN(const Buffer *buffer), size_t len)
-{
-    ASSERT_ARGS(aligned_size)
-    if (PObj_is_COWable_TEST(buffer))
-        len += sizeof (void*);
-    if (PObj_aligned_TEST(buffer))
-        len = (len + BUFFER_ALIGN_1) & BUFFER_ALIGN_MASK;
-    else
-        len = (len + WORD_ALIGN_1) & WORD_ALIGN_MASK;
-    return len;
-}
-
-/*
-
 =item C<char * aligned_mem(const Buffer *buffer, char *mem)>
 
 Returns a pointer to the aligned allocated storage for Buffer C<buffer>,
@@ -670,6 +645,10 @@
 aligned_mem(ARGIN(const Buffer *buffer), ARGIN(char *mem))
 {
     ASSERT_ARGS(aligned_mem)
+#if 0
+    This code causing assert in compact_pool. Looks like STRINGs have
+    aligned flag set, but allocated less memory.
+    See C<aligned_string_size>.
     if (PObj_is_COWable_TEST(buffer))
         mem += sizeof (void*);
     if (PObj_aligned_TEST(buffer))
@@ -677,6 +656,9 @@
                 BUFFER_ALIGN_MASK);
     else
         mem = (char*)(((unsigned long)(mem + WORD_ALIGN_1)) & WORD_ALIGN_MASK);
+#endif
+    mem += sizeof (void*);
+    mem = (char*)(((unsigned long)(mem + WORD_ALIGN_1)) & WORD_ALIGN_MASK);
 
     return mem;
 }
@@ -1160,6 +1142,33 @@
 
 /*
 
+=item C<static void free_memory_pool(Variable_Size_Pool *pool)>
+
+Frees a memory pool; helper function for C<Parrot_gc_destroy_memory_pools>.
+
+=cut
+
+*/
+
+static void
+free_memory_pool(Variable_Size_Pool *pool)
+{
+    ASSERT_ARGS(free_memory_pool)
+
+    Memory_Block *cur_block = pool->top_block;
+
+    while (cur_block) {
+        Memory_Block * const next_block = cur_block->prev;
+        mem_internal_free(cur_block);
+        cur_block = next_block;
+    }
+
+    mem_internal_free(pool);
+}
+
+
+/*
+
 =item C<void Parrot_gc_destroy_memory_pools(PARROT_INTERP, Memory_Pools * const
 mem_pools)>
 
@@ -1176,24 +1185,9 @@
         ARGIN(Memory_Pools * const mem_pools))
 {
     ASSERT_ARGS(Parrot_gc_destroy_memory_pools)
-    int i;
-
-    for (i = 0; i < 2; i++) {
-        Variable_Size_Pool * const pool = i ?
-                mem_pools->constant_string_pool :
-                mem_pools->memory_pool;
-        Memory_Block *cur_block;
-
-        cur_block = pool->top_block;
-
-        while (cur_block) {
-            Memory_Block * const next_block = cur_block->prev;
-            mem_internal_free(cur_block);
-            cur_block = next_block;
-        }
 
-        mem_internal_free(pool);
-    }
+    free_memory_pool(mem_pools->constant_string_pool);
+    free_memory_pool(mem_pools->memory_pool);
 }
 
 /*

Modified: branches/tt362/src/gc/api.c
==============================================================================
--- branches/tt362/src/gc/api.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/gc/api.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -997,7 +997,8 @@
 
 PARROT_CANNOT_RETURN_NULL
 STRING *
-Parrot_gc_sys_name(PARROT_INTERP) {
+Parrot_gc_sys_name(PARROT_INTERP)
+{
     ASSERT_ARGS(Parrot_gc_sys_name)
     STRING *name = NULL;
     switch (interp->gc_sys->sys_type) {

Modified: branches/tt362/src/gc/gc_inf.c
==============================================================================
--- branches/tt362/src/gc/gc_inf.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/gc/gc_inf.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -60,46 +60,60 @@
         __attribute__nonnull__(2)
         FUNC_MODIFIES(*buffer);
 
+PARROT_CAN_RETURN_NULL
 static Buffer* gc_inf_allocate_bufferlike_header(PARROT_INTERP, size_t size)
         __attribute__nonnull__(1);
 
+PARROT_CAN_RETURN_NULL
 static void* gc_inf_allocate_fixed_size_storage(PARROT_INTERP, size_t size)
         __attribute__nonnull__(1);
 
-static void* gc_inf_allocate_pmc_attributes(PARROT_INTERP, PMC *pmc)
-        __attribute__nonnull__(1);
+PARROT_CAN_RETURN_NULL
+static void* gc_inf_allocate_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*pmc);
 
+PARROT_CAN_RETURN_NULL
 static PMC* gc_inf_allocate_pmc_header(PARROT_INTERP, UINTVAL flags)
         __attribute__nonnull__(1);
 
+PARROT_CAN_RETURN_NULL
 static STRING* gc_inf_allocate_string_header(PARROT_INTERP, UINTVAL flags)
         __attribute__nonnull__(1);
 
 static void gc_inf_allocate_string_storage(PARROT_INTERP,
-    STRING *str,
+    ARGMOD(STRING *str),
     size_t size)
-        __attribute__nonnull__(1);
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*str);
 
 static void gc_inf_compact_memory_pool(PARROT_INTERP)
         __attribute__nonnull__(1);
 
 static void gc_inf_free_bufferlike_header(PARROT_INTERP,
-    Buffer *b,
+    ARGIN_NULLOK(Buffer *b),
     size_t size)
         __attribute__nonnull__(1);
 
 static void gc_inf_free_fixed_size_storage(PARROT_INTERP,
     size_t size,
-    void *data)
-        __attribute__nonnull__(1);
+    ARGMOD(void *data))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(3)
+        FUNC_MODIFIES(*data);
 
-static void gc_inf_free_pmc_attributes(PARROT_INTERP, PMC *pmc)
-        __attribute__nonnull__(1);
+static void gc_inf_free_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*pmc);
 
-static void gc_inf_free_pmc_header(PARROT_INTERP, PMC *pmc)
+static void gc_inf_free_pmc_header(PARROT_INTERP, ARGIN_NULLOK(PMC *pmc))
         __attribute__nonnull__(1);
 
-static void gc_inf_free_string_header(PARROT_INTERP, STRING *s)
+static void gc_inf_free_string_header(PARROT_INTERP,
+    ARGIN_NULLOK(STRING *s))
         __attribute__nonnull__(1);
 
 PARROT_CANNOT_RETURN_NULL
@@ -133,9 +147,11 @@
         FUNC_MODIFIES(*buffer);
 
 static void gc_inf_reallocate_string_storage(PARROT_INTERP,
-    STRING *str,
+    ARGMOD(STRING *str),
     size_t size)
-        __attribute__nonnull__(1);
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        FUNC_MODIFIES(*str);
 
 #define ASSERT_ARGS_gc_inf_add_free_object __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(mem_pools) \
@@ -156,23 +172,27 @@
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_gc_inf_allocate_pmc_attributes \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(pmc))
 #define ASSERT_ARGS_gc_inf_allocate_pmc_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_gc_inf_allocate_string_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_gc_inf_allocate_string_storage \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(str))
 #define ASSERT_ARGS_gc_inf_compact_memory_pool __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_gc_inf_free_bufferlike_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_gc_inf_free_fixed_size_storage \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(data))
 #define ASSERT_ARGS_gc_inf_free_pmc_attributes __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(pmc))
 #define ASSERT_ARGS_gc_inf_free_pmc_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_gc_inf_free_string_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -194,7 +214,8 @@
     , PARROT_ASSERT_ARG(buffer))
 #define ASSERT_ARGS_gc_inf_reallocate_string_storage \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(str))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
 
@@ -424,6 +445,7 @@
 
 */
 
+PARROT_CAN_RETURN_NULL
 static PMC*
 gc_inf_allocate_pmc_header(PARROT_INTERP, UINTVAL flags)
 {
@@ -432,14 +454,14 @@
 }
 
 static void
-gc_inf_free_pmc_header(PARROT_INTERP, PMC *pmc)
+gc_inf_free_pmc_header(PARROT_INTERP, ARGIN_NULLOK(PMC *pmc))
 {
     ASSERT_ARGS(gc_inf_free_pmc_header)
     if (pmc)
         free(pmc);
 }
 
-
+PARROT_CAN_RETURN_NULL
 static STRING*
 gc_inf_allocate_string_header(PARROT_INTERP, UINTVAL flags)
 {
@@ -448,14 +470,14 @@
 }
 
 static void
-gc_inf_free_string_header(PARROT_INTERP, STRING *s)
+gc_inf_free_string_header(PARROT_INTERP, ARGIN_NULLOK(STRING *s))
 {
     ASSERT_ARGS(gc_inf_free_string_header)
     if (s)
         free(s);
 }
 
-
+PARROT_CAN_RETURN_NULL
 static Buffer*
 gc_inf_allocate_bufferlike_header(PARROT_INTERP, size_t size)
 {
@@ -464,16 +486,16 @@
 }
 
 static void
-gc_inf_free_bufferlike_header(PARROT_INTERP, Buffer *b, size_t size)
+gc_inf_free_bufferlike_header(PARROT_INTERP, ARGIN_NULLOK(Buffer *b), size_t size)
 {
     ASSERT_ARGS(gc_inf_free_bufferlike_header)
     if (b)
         free(b);
 }
 
-
+PARROT_CAN_RETURN_NULL
 static void*
-gc_inf_allocate_pmc_attributes(PARROT_INTERP, PMC *pmc)
+gc_inf_allocate_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
 {
     ASSERT_ARGS(gc_inf_allocate_pmc_attributes)
     const size_t attr_size = pmc->vtable->attr_size;
@@ -482,7 +504,7 @@
 }
 
 static void
-gc_inf_free_pmc_attributes(PARROT_INTERP, PMC *pmc)
+gc_inf_free_pmc_attributes(PARROT_INTERP, ARGMOD(PMC *pmc))
 {
     ASSERT_ARGS(gc_inf_free_pmc_attributes)
     if (PMC_data(pmc))
@@ -491,7 +513,7 @@
 
 
 static void
-gc_inf_allocate_string_storage(PARROT_INTERP, STRING *str, size_t size)
+gc_inf_allocate_string_storage(PARROT_INTERP, ARGMOD(STRING *str), size_t size)
 {
     ASSERT_ARGS(gc_inf_allocate_string_storage)
     char *mem;
@@ -509,7 +531,7 @@
 }
 
 static void
-gc_inf_reallocate_string_storage(PARROT_INTERP, STRING *str, size_t size)
+gc_inf_reallocate_string_storage(PARROT_INTERP, ARGMOD(STRING *str), size_t size)
 {
     ASSERT_ARGS(gc_inf_reallocate_string_storage)
     char *mem;
@@ -551,7 +573,7 @@
     Buffer_buflen(buffer)   = size;
 }
 
-
+PARROT_CAN_RETURN_NULL
 static void*
 gc_inf_allocate_fixed_size_storage(PARROT_INTERP, size_t size)
 {
@@ -560,7 +582,7 @@
 }
 
 static void
-gc_inf_free_fixed_size_storage(PARROT_INTERP, size_t size, void *data)
+gc_inf_free_fixed_size_storage(PARROT_INTERP, size_t size, ARGMOD(void *data))
 {
     ASSERT_ARGS(gc_inf_free_fixed_size_storage)
     if (data)

Modified: branches/tt362/src/gc/gc_ms.c
==============================================================================
--- branches/tt362/src/gc/gc_ms.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/gc/gc_ms.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -85,6 +85,15 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
+static void gc_ms_free_attributes_from_pool(PARROT_INTERP,
+    ARGMOD(PMC_Attribute_Pool *pool),
+    ARGMOD(void *data))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3)
+        FUNC_MODIFIES(*pool)
+        FUNC_MODIFIES(*data);
+
 static void gc_ms_free_bufferlike_header(PARROT_INTERP,
     ARGMOD(Buffer *obj),
     size_t size)
@@ -181,15 +190,6 @@
 static void gc_ms_unblock_GC_sweep(PARROT_INTERP)
         __attribute__nonnull__(1);
 
-static void gc_ms_free_attributes_from_pool(PARROT_INTERP,
-    ARGMOD(PMC_Attribute_Pool *pool),
-    ARGMOD(void *data))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        FUNC_MODIFIES(*pool)
-        FUNC_MODIFIES(*data);
-
 #define ASSERT_ARGS_gc_ms_active_sized_buffers __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(mem_pools))
@@ -223,6 +223,11 @@
 #define ASSERT_ARGS_gc_ms_finalize_memory_pools __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(mem_pools))
+#define ASSERT_ARGS_gc_ms_free_attributes_from_pool \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(pool) \
+    , PARROT_ASSERT_ARG(data))
 #define ASSERT_ARGS_gc_ms_free_bufferlike_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(obj))
@@ -275,11 +280,6 @@
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_gc_ms_unblock_GC_sweep __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_gc_ms_free_attributes_from_pool \
-     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(pool) \
-    , PARROT_ASSERT_ARG(data))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
 
@@ -471,6 +471,7 @@
     /* Note it */
     mem_pools->gc_mark_runs++;
     --mem_pools->gc_mark_block_level;
+    mem_pools->header_allocs_since_last_collect = 0;
 
     return;
 }
@@ -803,13 +804,12 @@
 
     Buffer_buflen(buffer) = 0;
     Buffer_bufstart(buffer) = NULL;
-    new_size = aligned_size(buffer, size);
+    new_size = aligned_string_size(size);
     mem = (char *)mem_allocate(interp, interp->mem_pools, new_size,
         interp->mem_pools->memory_pool);
     mem = aligned_mem(buffer, mem);
     Buffer_bufstart(buffer) = mem;
-    if (PObj_is_COWable_TEST(buffer))
-        new_size -= sizeof (void*);
+    new_size -= sizeof (void*);
     Buffer_buflen(buffer) = new_size;
 }
 
@@ -852,8 +852,8 @@
      * normally, which play ping pong with buffers.
      * The normal case is therefore always to allocate a new block
      */
-    new_size = aligned_size(buffer, newsize);
-    old_size = aligned_size(buffer, Buffer_buflen(buffer));
+    new_size = aligned_string_size(newsize);
+    old_size = aligned_string_size(Buffer_buflen(buffer));
     needed   = new_size - old_size;
 
     if ((pool->top_block->free >= needed)
@@ -881,8 +881,7 @@
 
     Buffer_bufstart(buffer) = mem;
 
-    if (PObj_is_COWable_TEST(buffer))
-        new_size -= sizeof (void *);
+    new_size -= sizeof (void *);
 
     Buffer_buflen(buffer) = new_size;
 }
@@ -1156,8 +1155,9 @@
 
     if (pool->skip == GC_ONE_SKIP)
         pool->skip = GC_NO_SKIP;
-    else if (pool->skip == GC_NO_SKIP
-         &&  interp->mem_pools->header_allocs_since_last_collect >= 1024*1024)
+    else if (pool->skip == GC_NEVER_SKIP
+         || (pool->skip == GC_NO_SKIP
+         &&  mem_pools->header_allocs_since_last_collect >= GC_SIZE_THRESHOLD))
             Parrot_gc_mark_and_sweep(interp, GC_trace_stack_FLAG);
 
     /* requires that num_free_objects be updated in Parrot_gc_mark_and_sweep.
@@ -1320,6 +1320,9 @@
 
     if (alloc_size > POOL_MAX_BYTES)
         pool->objects_per_alloc = POOL_MAX_BYTES / pool->object_size;
+
+    if (alloc_size > GC_SIZE_THRESHOLD)
+        pool->skip = GC_NEVER_SKIP;
 }
 
 

Modified: branches/tt362/src/gc/gc_private.h
==============================================================================
--- branches/tt362/src/gc/gc_private.h	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/gc/gc_private.h	Fri Feb 19 22:23:20 2010	(r44203)
@@ -45,6 +45,7 @@
 #define UNITS_PER_ALLOC_GROWTH_FACTOR          1.75
 
 #define POOL_MAX_BYTES                         65536 * 128
+#define GC_SIZE_THRESHOLD                      1024  * 1024
 
 #define PMC_HEADERS_PER_ALLOC     4096 * 10 / sizeof (PMC)
 #define BUFFER_HEADERS_PER_ALLOC  4096      / sizeof (Buffer)
@@ -91,7 +92,8 @@
 typedef enum _gc_skip_type_enum {
     GC_NO_SKIP = 0,
     GC_ONE_SKIP,
-    GC_ALWAYS_SKIP
+    GC_ALWAYS_SKIP,
+    GC_NEVER_SKIP
 } gc_skip_type_enum;
 
 typedef struct GC_Subsystem {
@@ -487,11 +489,6 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-PARROT_PURE_FUNCTION
-PARROT_WARN_UNUSED_RESULT
-size_t aligned_size(ARGIN(const Buffer *buffer), size_t len)
-        __attribute__nonnull__(1);
-
 PARROT_CONST_FUNCTION
 PARROT_WARN_UNUSED_RESULT
 size_t aligned_string_size(size_t len);
@@ -558,8 +555,6 @@
 #define ASSERT_ARGS_aligned_mem __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(buffer) \
     , PARROT_ASSERT_ARG(mem))
-#define ASSERT_ARGS_aligned_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(buffer))
 #define ASSERT_ARGS_aligned_string_size __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_check_buffer_ptr __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(pobj) \

Modified: branches/tt362/src/global.c
==============================================================================
--- branches/tt362/src/global.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/global.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -249,7 +249,7 @@
         return PMCNULL;
 
     /* TT #1221 - match HLL of enclosing namespace? */
-    sub_ns = pmc_new(interp, Parrot_get_ctx_HLL_type(interp,
+    sub_ns = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp,
                                                  enum_class_NameSpace));
 
     if (PMC_IS_NULL(sub_ns))
@@ -765,7 +765,7 @@
 
     /* is there an existing MultiSub PMC? or do we need to create one? */
     if (PMC_IS_NULL(multisub)) {
-        multisub = pmc_new(interp,  Parrot_get_ctx_HLL_type(interp, enum_class_MultiSub));
+        multisub = Parrot_pmc_new(interp,  Parrot_get_ctx_HLL_type(interp, enum_class_MultiSub));
         /* we have to push the sub onto the MultiSub before we try to store
         it because storing requires information from the sub */
         VTABLE_push_pmc(interp, multisub, sub_pmc);

Modified: branches/tt362/src/global_setup.c
==============================================================================
--- branches/tt362/src/global_setup.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/global_setup.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -104,7 +104,7 @@
         config_hash = Parrot_thaw(interp, config_string);
     }
     else {
-        config_hash = pmc_new(interp, enum_class_Hash);
+        config_hash = Parrot_pmc_new(interp, enum_class_Hash);
     }
 
     VTABLE_set_pmc_keyed_int(interp, iglobals,
@@ -172,7 +172,7 @@
     VTABLE_set_pmc_keyed_int(interp, iglobals,
             (INTVAL)IGLOBALS_CLASSNAME_HASH, interp->class_hash);
 
-    self           = pmc_new_noinit(interp, enum_class_ParrotInterpreter);
+    self           = Parrot_pmc_new_noinit(interp, enum_class_ParrotInterpreter);
     VTABLE_set_pointer(interp, self, interp);
     /* PMC_data(self) = interp; */
 
@@ -185,10 +185,10 @@
     parrot_init_library_paths(interp);
 
     /* load_bytecode and dynlib loaded hash */
-    pmc = pmc_new(interp, enum_class_Hash);
+    pmc = Parrot_pmc_new(interp, enum_class_Hash);
     VTABLE_set_pmc_keyed_int(interp, iglobals, IGLOBALS_PBC_LIBS, pmc);
 
-    pmc = pmc_new(interp, enum_class_Hash);
+    pmc = Parrot_pmc_new(interp, enum_class_Hash);
     VTABLE_set_pmc_keyed_int(interp, iglobals, IGLOBALS_DYN_LIBS, pmc);
 }
 
@@ -212,18 +212,18 @@
     create_initial_context(interp);
 
     /* create the namespace root stash */
-    interp->root_namespace = pmc_new(interp, enum_class_NameSpace);
+    interp->root_namespace = Parrot_pmc_new(interp, enum_class_NameSpace);
     Parrot_init_HLL(interp);
 
     Parrot_pcc_set_namespace(interp, CURRENT_CONTEXT(interp),
         VTABLE_get_pmc_keyed_int(interp, interp->HLL_namespace, 0));
 
     /* We need a class hash */
-    interp->class_hash = classname_hash = pmc_new(interp, enum_class_NameSpace);
+    interp->class_hash = classname_hash = Parrot_pmc_new(interp, enum_class_NameSpace);
     Parrot_register_core_pmcs(interp, classname_hash);
 
     /* init the interpreter globals array */
-    iglobals         = pmc_new(interp, enum_class_FixedPMCArray);
+    iglobals         = Parrot_pmc_new(interp, enum_class_FixedPMCArray);
     interp->iglobals = iglobals;
     VTABLE_set_integer_native(interp, iglobals, (INTVAL)IGLOBALS_SIZE);
 

Modified: branches/tt362/src/hash.c
==============================================================================
--- branches/tt362/src/hash.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/hash.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -1446,7 +1446,7 @@
 get_integer_pmc(PARROT_INTERP, INTVAL value)
 {
     ASSERT_ARGS(get_integer_pmc)
-    PMC * const ret = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
+    PMC * const ret = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
     VTABLE_set_integer_native(interp, ret, value);
     return ret;
 }
@@ -1467,7 +1467,7 @@
 get_number_pmc(PARROT_INTERP, FLOATVAL value)
 {
     ASSERT_ARGS(get_number_pmc)
-    PMC * const ret = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
+    PMC * const ret = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
     VTABLE_set_number_native(interp, ret, value);
     return ret;
 }
@@ -1487,7 +1487,7 @@
 get_string_pmc(PARROT_INTERP, ARGIN(STRING *value))
 {
     ASSERT_ARGS(get_string_pmc)
-    PMC * const ret = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_String));
+    PMC * const ret = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_String));
     VTABLE_set_string_native(interp, ret, value);
     return ret;
 }

Modified: branches/tt362/src/hll.c
==============================================================================
--- branches/tt362/src/hll.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/hll.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -88,7 +88,7 @@
 
     PMC *entry_id;
 
-    PMC * const entry = constant_pmc_new(interp, enum_class_FixedPMCArray);
+    PMC * const entry = Parrot_pmc_new_constant(interp, enum_class_FixedPMCArray);
 
     if (entry_name && !STRING_IS_EMPTY(entry_name)) {
         VTABLE_set_pmc_keyed_str(interp, hll_info, entry_name, entry);
@@ -98,7 +98,7 @@
 
     VTABLE_set_integer_native(interp, entry, e_HLL_MAX);
 
-    entry_id = constant_pmc_new(interp, enum_class_Integer);
+    entry_id = Parrot_pmc_new_constant(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, entry_id, id);
     VTABLE_set_pmc_keyed_int(interp, entry, e_HLL_id, entry_id);
 
@@ -122,9 +122,9 @@
 {
     ASSERT_ARGS(Parrot_init_HLL)
     interp->HLL_info      =
-        pmc_new(interp, enum_class_OrderedHash);
+        Parrot_pmc_new(interp, enum_class_OrderedHash);
     interp->HLL_namespace =
-        constant_pmc_new(interp, enum_class_ResizablePMCArray);
+        Parrot_pmc_new_constant(interp, enum_class_ResizablePMCArray);
 
     Parrot_register_HLL(interp, CONST_STRING(interp, "parrot"));
 }
@@ -168,7 +168,7 @@
     entry    = new_hll_entry(interp, hll_name);
 
     /* register HLL name */
-    name     = constant_pmc_new(interp, enum_class_String);
+    name     = Parrot_pmc_new_constant(interp, enum_class_String);
 
     VTABLE_set_string_native(interp, name, hll_name);
     VTABLE_set_pmc_keyed_int(interp, entry, e_HLL_name, name);
@@ -188,7 +188,7 @@
     VTABLE_set_pmc_keyed_int(interp, interp->HLL_namespace, idx, ns_hash);
 
     /* create HLL typemap hash */
-    type_hash = constant_pmc_new(interp, enum_class_Hash);
+    type_hash = Parrot_pmc_new_constant(interp, enum_class_Hash);
     VTABLE_set_pointer(interp, type_hash, parrot_new_intval_hash(interp));
     VTABLE_set_pmc_keyed_int(interp, entry, e_HLL_typemap, type_hash);
 
@@ -243,7 +243,7 @@
     VTABLE_set_pmc_keyed_int(interp, entry, e_HLL_name, PMCNULL);
 
     /* register dynlib */
-    name    = constant_pmc_new(interp, enum_class_String);
+    name    = Parrot_pmc_new_constant(interp, enum_class_String);
 
     VTABLE_set_string_native(interp, name, hll_lib);
     VTABLE_set_pmc_keyed_int(interp, entry, e_HLL_lib, name);

Modified: branches/tt362/src/interp/inter_cb.c
==============================================================================
--- branches/tt362/src/interp/inter_cb.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/interp/inter_cb.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -110,7 +110,7 @@
         Parrot_ex_throw_from_c_args(interp, NULL, 1,
             "unhandled signature '%Ss' in make_cb", cb_signature);
 
-    cb_sig = pmc_new(interp, enum_class_String);
+    cb_sig = Parrot_pmc_new(interp, enum_class_String);
     VTABLE_set_string_native(interp, cb_sig, cb_signature);
     sc = CONST_STRING(interp, "_signature");
     VTABLE_setprop(interp, user_data, sc, cb_sig);
@@ -122,14 +122,14 @@
      * we need to anchor it.
      *
      */
-    gc_register_pmc(interp, user_data);
+    Parrot_pmc_gc_register(interp, user_data);
 
     /*
      * Finally, the external lib awaits a function pointer.
      * Create a PMC that points to Parrot_callback_C (or _D);
      * it can be passed on with signature 'p'.
      */
-    cb = pmc_new(interp, enum_class_UnManagedStruct);
+    cb = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
     /*
      * Currently, we handle only 2 types:
      * _C ... user_data is 2nd parameter
@@ -139,7 +139,7 @@
         VTABLE_set_pointer(interp, cb, F2DPTR(Parrot_callback_C));
     else
         VTABLE_set_pointer(interp, cb, F2DPTR(Parrot_callback_D));
-    gc_register_pmc(interp, cb);
+    Parrot_pmc_gc_register(interp, cb);
 
     return cb;
 }
@@ -345,7 +345,7 @@
 #endif
       case 'p':
         /* created a UnManagedStruct */
-        p_param = pmc_new(interp, enum_class_UnManagedStruct);
+        p_param = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
         VTABLE_set_pointer(interp, p_param, external_data);
         pasm_sig[1] = 'P';
         param = (void*) p_param;

Modified: branches/tt362/src/interp/inter_create.c
==============================================================================
--- branches/tt362/src/interp/inter_create.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/interp/inter_create.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -37,14 +37,9 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
-static void setup_default_compreg(PARROT_INTERP)
-        __attribute__nonnull__(1);
-
 #define ASSERT_ARGS_is_env_var_set __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(var))
-#define ASSERT_ARGS_setup_default_compreg __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: static */
 
@@ -78,26 +73,6 @@
 
 /*
 
-=item C<static void setup_default_compreg(PARROT_INTERP)>
-
-Setup default compiler for PASM.
-
-=cut
-
-*/
-
-static void
-setup_default_compreg(PARROT_INTERP)
-{
-    ASSERT_ARGS(setup_default_compreg)
-    STRING * const pasm1 = CONST_STRING(interp, "PASM1");
-
-    /* register the nci compiler object */
-    Parrot_compreg(interp, pasm1, (Parrot_compiler_func_t)PDB_compile);
-}
-
-/*
-
 =item C<Parrot_Interp make_interpreter(Interp *parent, INTVAL flags)>
 
 Create the Parrot interpreter. Allocate memory and clear the registers.
@@ -289,19 +264,16 @@
     interp->code            = NULL;
 
     /* create the root set registry */
-    interp->gc_registry     = pmc_new(interp, enum_class_AddrRegistry);
+    interp->gc_registry     = Parrot_pmc_new(interp, enum_class_AddrRegistry);
 
     /* And a dynamic environment stack */
     /* TODO: We should really consider removing this (TT #876) */
-    interp->dynamic_env = pmc_new(interp, enum_class_ResizablePMCArray);
+    interp->dynamic_env = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
 
     /* create exceptions list */
     interp->current_runloop_id    = 0;
     interp->current_runloop_level = 0;
 
-    /* register assembler/compilers */
-    setup_default_compreg(interp);
-
     /* setup stdio PMCs */
     Parrot_io_init(interp);
 

Modified: branches/tt362/src/interp/inter_misc.c
==============================================================================
--- branches/tt362/src/interp/inter_misc.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/interp/inter_misc.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -51,7 +51,7 @@
                     ARGIN(const char *name), ARGIN(const char *proto))
 {
     ASSERT_ARGS(register_nci_method)
-    PMC    * const method      = pmc_new(interp, enum_class_NCI);
+    PMC    * const method      = Parrot_pmc_new(interp, enum_class_NCI);
     STRING * const method_name = string_make(interp, name, strlen(name),
         NULL, PObj_constant_FLAG|PObj_external_FLAG);
 
@@ -84,7 +84,7 @@
         ARGIN(STRING *name))
 {
     ASSERT_ARGS(register_raw_nci_method_in_ns)
-    PMC    * const method      = pmc_new(interp, enum_class_NCI);
+    PMC    * const method      = Parrot_pmc_new(interp, enum_class_NCI);
 
     /* setup call func */
     VTABLE_set_pointer(interp, method, func);
@@ -111,7 +111,7 @@
 {
     ASSERT_ARGS(Parrot_mark_method_writes)
     STRING *const str_name = Parrot_str_new_constant(interp, name);
-    PMC    *const pmc_true = pmc_new(interp, enum_class_Integer);
+    PMC    *const pmc_true = Parrot_pmc_new(interp, enum_class_Integer);
     PMC    *const method   = VTABLE_get_pmc_keyed_str(
         interp, interp->vtables[type]->_namespace, str_name);
     VTABLE_set_integer_native(interp, pmc_true, 1);
@@ -136,13 +136,13 @@
 {
     ASSERT_ARGS(Parrot_compreg)
     PMC* const iglobals = interp->iglobals;
-    PMC        *nci     = pmc_new(interp, enum_class_NCI);
+    PMC        *nci     = Parrot_pmc_new(interp, enum_class_NCI);
     STRING     *sc      = CONST_STRING(interp, "PJt");
     PMC        *hash    = VTABLE_get_pmc_keyed_int(interp, interp->iglobals,
                               IGLOBALS_COMPREG_HASH);
 
     if (!hash) {
-        hash = pmc_new_noinit(interp, enum_class_Hash);
+        hash = Parrot_pmc_new_noinit(interp, enum_class_Hash);
         VTABLE_init(interp, hash);
         VTABLE_set_pmc_keyed_int(interp, iglobals,
                 (INTVAL)IGLOBALS_COMPREG_HASH, hash);

Modified: branches/tt362/src/io/api.c
==============================================================================
--- branches/tt362/src/io/api.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/io/api.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -89,7 +89,7 @@
 Parrot_io_new_pmc(PARROT_INTERP, INTVAL flags)
 {
     ASSERT_ARGS(Parrot_io_new_pmc)
-    PMC * const new_io = pmc_new(interp, enum_class_FileHandle);
+    PMC * const new_io = Parrot_pmc_new(interp, enum_class_FileHandle);
 
     Parrot_io_set_flags(interp, new_io, flags);
 
@@ -125,7 +125,7 @@
     if (PMC_IS_NULL(pmc)) {
         /* TODO: We should look up the HLL mapped type, instead of always
            using FileHandle here */
-        new_filehandle = pmc_new(interp, enum_class_FileHandle);
+        new_filehandle = Parrot_pmc_new(interp, enum_class_FileHandle);
         PARROT_ASSERT(new_filehandle->vtable->base_type == enum_class_FileHandle);
     }
     else

Modified: branches/tt362/src/io/socket_api.c
==============================================================================
--- branches/tt362/src/io/socket_api.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/io/socket_api.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -346,7 +346,7 @@
 Parrot_io_new_socket_pmc(PARROT_INTERP, INTVAL flags)
 {
     ASSERT_ARGS(Parrot_io_new_socket_pmc)
-    PMC * const new_io = pmc_new(interp, enum_class_Socket);
+    PMC * const new_io = Parrot_pmc_new(interp, enum_class_Socket);
 
     Parrot_io_set_flags(interp, new_io, flags);
 

Modified: branches/tt362/src/io/socket_unix.c
==============================================================================
--- branches/tt362/src/io/socket_unix.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/io/socket_unix.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -102,7 +102,7 @@
     ASSERT_ARGS(Parrot_io_sockaddr_in)
 
     char * const s        = Parrot_str_to_cstring(interp, addr);
-    PMC  * const sockaddr = pmc_new(interp, enum_class_Sockaddr);
+    PMC  * const sockaddr = Parrot_pmc_new(interp, enum_class_Sockaddr);
 
     get_sockaddr_in(interp, sockaddr, s, port);
     Parrot_str_free_cstring(s);
@@ -258,7 +258,7 @@
     int newsock;
 
     PARROT_SOCKET(newio)->local  = PARROT_SOCKET(socket)->local;
-    PARROT_SOCKET(newio)->remote = pmc_new(interp, enum_class_Sockaddr);
+    PARROT_SOCKET(newio)->remote = Parrot_pmc_new(interp, enum_class_Sockaddr);
     saddr                        = SOCKADDR_REMOTE(newio);
 
     newsock = accept(io->os_handle, (struct sockaddr *)saddr, &addrlen);

Modified: branches/tt362/src/io/socket_win32.c
==============================================================================
--- branches/tt362/src/io/socket_win32.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/io/socket_win32.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -205,7 +205,7 @@
     int newsock;
 
     PARROT_SOCKET(newio)->local  = PARROT_SOCKET(socket)->local;
-    PARROT_SOCKET(newio)->remote = pmc_new(interp, enum_class_Sockaddr);
+    PARROT_SOCKET(newio)->remote = Parrot_pmc_new(interp, enum_class_Sockaddr);
     saddr                        = SOCKADDR_REMOTE(newio);
 
     newsock = accept((int)io->os_handle, (struct sockaddr *)saddr, &addrlen);
@@ -445,7 +445,7 @@
     ASSERT_ARGS(Parrot_io_sockaddr_in)
     PMC  * sockaddr;
     char * const s = Parrot_str_to_cstring(interp, addr);
-    sockaddr = pmc_new(interp, enum_class_Sockaddr);
+    sockaddr = Parrot_pmc_new(interp, enum_class_Sockaddr);
     get_sockaddr_in(interp, sockaddr, s, port);
     Parrot_str_free_cstring(s);
     return sockaddr;

Modified: branches/tt362/src/key.c
==============================================================================
--- branches/tt362/src/key.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/key.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -43,7 +43,7 @@
 key_new(PARROT_INTERP)
 {
     ASSERT_ARGS(key_new)
-    return pmc_new(interp, enum_class_Key);
+    return Parrot_pmc_new(interp, enum_class_Key);
 }
 
 
@@ -64,7 +64,7 @@
 key_new_integer(PARROT_INTERP, INTVAL value)
 {
     ASSERT_ARGS(key_new_integer)
-    PMC * const key = pmc_new(interp, enum_class_Key);
+    PMC * const key = Parrot_pmc_new(interp, enum_class_Key);
 
     PObj_get_FLAGS(key) |= KEY_integer_FLAG;
     SETATTR_Key_int_key(interp, key, value);
@@ -90,7 +90,7 @@
 key_new_number(PARROT_INTERP, FLOATVAL value)
 {
     ASSERT_ARGS(key_new_number)
-    PMC * const key = pmc_new(interp, enum_class_Key);
+    PMC * const key = Parrot_pmc_new(interp, enum_class_Key);
 
     PObj_get_FLAGS(key) |= KEY_number_FLAG;
     SETATTR_Key_num_key(interp, key, value);
@@ -116,7 +116,7 @@
 key_new_string(PARROT_INTERP, ARGIN(STRING *value))
 {
     ASSERT_ARGS(key_new_string)
-    PMC * const key = pmc_new(interp, enum_class_Key);
+    PMC * const key = Parrot_pmc_new(interp, enum_class_Key);
 
     PObj_get_FLAGS(key) |= KEY_string_FLAG;
     SETATTR_Key_str_key(interp, key, value);
@@ -164,7 +164,7 @@
 key_new_pmc(PARROT_INTERP, ARGIN(PMC *value))
 {
     ASSERT_ARGS(key_new_pmc)
-    PMC * const key = pmc_new(interp, enum_class_Key);
+    PMC * const key = Parrot_pmc_new(interp, enum_class_Key);
 
     PObj_get_FLAGS(key) |= KEY_pmc_FLAG;
     Parrot_ex_throw_from_c_args(interp, NULL, 1, "this is broken - see slice.pmc");

Modified: branches/tt362/src/library.c
==============================================================================
--- branches/tt362/src/library.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/library.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -168,7 +168,7 @@
                                 (INTVAL)IGLOBALS_CONFIG_HASH);
 
     /* create the lib_paths array */
-    PMC * const lib_paths   = pmc_new(interp, enum_class_FixedPMCArray);
+    PMC * const lib_paths   = Parrot_pmc_new(interp, enum_class_FixedPMCArray);
 
     VTABLE_set_integer_native(interp, lib_paths, PARROT_LIB_PATH_SIZE);
     VTABLE_set_pmc_keyed_int(interp, iglobals,
@@ -191,7 +191,7 @@
 
     /* each is an array of strings */
     /* define include paths */
-    paths = pmc_new(interp, enum_class_ResizableStringArray);
+    paths = Parrot_pmc_new(interp, enum_class_ResizableStringArray);
     VTABLE_set_pmc_keyed_int(interp, lib_paths,
             PARROT_LIB_PATH_INCLUDE, paths);
     if (!STRING_IS_NULL(builddir)) {
@@ -209,7 +209,7 @@
 
 
     /* define library paths */
-    paths = pmc_new(interp, enum_class_ResizableStringArray);
+    paths = Parrot_pmc_new(interp, enum_class_ResizableStringArray);
     VTABLE_set_pmc_keyed_int(interp, lib_paths,
             PARROT_LIB_PATH_LIBRARY, paths);
     if (!STRING_IS_NULL(builddir)) {
@@ -224,7 +224,7 @@
     }
 
     /* define languages paths */
-    paths = pmc_new(interp, enum_class_ResizableStringArray);
+    paths = Parrot_pmc_new(interp, enum_class_ResizableStringArray);
     VTABLE_set_pmc_keyed_int(interp, lib_paths,
             PARROT_LIB_PATH_LANG, paths);
     if (!STRING_IS_NULL(builddir)) {
@@ -239,7 +239,7 @@
     }
 
     /* define dynext paths */
-    paths = pmc_new(interp, enum_class_ResizableStringArray);
+    paths = Parrot_pmc_new(interp, enum_class_ResizableStringArray);
     VTABLE_set_pmc_keyed_int(interp, lib_paths,
             PARROT_LIB_PATH_DYNEXT, paths);
     if (!STRING_IS_NULL(builddir)) {
@@ -254,7 +254,7 @@
     }
 
     /* shared exts */
-    paths = pmc_new(interp, enum_class_ResizableStringArray);
+    paths = Parrot_pmc_new(interp, enum_class_ResizableStringArray);
     VTABLE_set_pmc_keyed_int(interp, lib_paths,
             PARROT_LIB_DYN_EXTS, paths);
     /* no CONST_STRING here - the c2str.pl preprocessor needs "real strs" */

Modified: branches/tt362/src/main.c
==============================================================================
--- branches/tt362/src/main.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/main.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -49,7 +49,7 @@
 static const char * parseflags(PARROT_INTERP,
     ARGIN(int *argc),
     ARGIN(char **argv[]),
-    ARGIN(INTVAL *core),
+    ARGIN(Parrot_Run_core_t *core),
     ARGIN(Parrot_trace_flags *trace))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2)
@@ -104,7 +104,7 @@
     Interp     *interp;
     int         status;
 
-    INTVAL             core  = 0;
+    Parrot_Run_core_t  core  = PARROT_SLOW_CORE;
     Parrot_trace_flags trace = PARROT_NO_TRACE;
 
     /* internationalization setup */
@@ -128,6 +128,18 @@
     initialize_interpreter(interp, (void*)&stacktop);
     imcc_initialize(interp);
 
+    { /* EXPERIMENTAL: add library and include paths from environment */
+        PMC *env = Parrot_pmc_new(interp, enum_class_Env);
+        STRING *path = VTABLE_get_string_keyed_str(interp, env,
+                Parrot_str_new_constant(interp, "PARROT_LIBRARY"));
+        if (!STRING_is_null(interp, path) && Parrot_str_length(interp, path) > 0)
+            Parrot_lib_add_path(interp, path, PARROT_LIB_PATH_LIBRARY);
+        path = VTABLE_get_string_keyed_str(interp, env,
+                Parrot_str_new_constant(interp, "PARROT_INCLUDE"));
+        if (!STRING_is_null(interp, path) && Parrot_str_length(interp, path) > 0)
+            Parrot_lib_add_path(interp, path, PARROT_LIB_PATH_INCLUDE);
+    }
+
     /* Parse flags */
     sourcefile = parseflags(interp, &argc, &argv, &core, &trace);
 
@@ -400,7 +412,7 @@
 /*
 
 =item C<static const char * parseflags(PARROT_INTERP, int *argc, char **argv[],
-INTVAL *core, Parrot_trace_flags *trace)>
+Parrot_Run_core_t *core, Parrot_trace_flags *trace)>
 
 Parse Parrot's command line for options and set appropriate flags.
 
@@ -412,7 +424,7 @@
 static const char *
 parseflags(PARROT_INTERP,
         ARGIN(int *argc), ARGIN(char **argv[]),
-        ARGIN(INTVAL *core), ARGIN(Parrot_trace_flags *trace))
+        ARGIN(Parrot_Run_core_t *core), ARGIN(Parrot_trace_flags *trace))
 {
     ASSERT_ARGS(parseflags)
     struct longopt_opt_info opt  = LONGOPT_OPT_INFO_INIT;

Modified: branches/tt362/src/multidispatch.c
==============================================================================
--- branches/tt362/src/multidispatch.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/multidispatch.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -255,7 +255,7 @@
 Parrot_mmd_find_multi_from_sig_obj(PARROT_INTERP, ARGIN(STRING *name), ARGIN(PMC *invoke_sig))
 {
     ASSERT_ARGS(Parrot_mmd_find_multi_from_sig_obj)
-    PMC * const candidate_list = pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC * const candidate_list = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
 
     mmd_search_by_sig_obj(interp, name, invoke_sig, candidate_list);
     mmd_search_global(interp, name, candidate_list);
@@ -442,7 +442,7 @@
 mmd_build_type_tuple_from_type_list(PARROT_INTERP, ARGIN(PMC *type_list))
 {
     ASSERT_ARGS(mmd_build_type_tuple_from_type_list)
-    PMC   *multi_sig   = constant_pmc_new(interp, enum_class_FixedIntegerArray);
+    PMC   *multi_sig   = Parrot_pmc_new_constant(interp, enum_class_FixedIntegerArray);
     INTVAL param_count = VTABLE_elements(interp, type_list);
     INTVAL i;
 
@@ -461,7 +461,7 @@
         else if (Parrot_str_equal(interp, type_name, CONST_STRING(interp, "FLOATVAL")))
             type = enum_type_FLOATVAL;
         else
-            type = pmc_type(interp, type_name);
+            type = Parrot_pmc_get_type_str(interp, type_name);
 
         VTABLE_set_integer_keyed_int(interp, multi_sig, i, type);
     }
@@ -513,7 +513,7 @@
 Parrot_mmd_build_type_tuple_from_sig_obj(PARROT_INTERP, ARGIN(PMC *sig_obj))
 {
     ASSERT_ARGS(Parrot_mmd_build_type_tuple_from_sig_obj)
-    PMC * const  type_tuple = pmc_new(interp, enum_class_ResizableIntegerArray);
+    PMC * const  type_tuple = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
     STRING      *string_sig = VTABLE_get_string(interp, sig_obj);
     INTVAL       tuple_size = 0;
     INTVAL       args_ended = 0;
@@ -633,7 +633,7 @@
             if (!sig)
                 return PMCNULL;
 
-            type = pmc_type(interp, sig);
+            type = Parrot_pmc_get_type_str(interp, sig);
 
             if (type == enum_type_undef)
                 return PMCNULL;
@@ -642,11 +642,11 @@
             type = VTABLE_get_integer(interp, sig_elem);
         }
         else
-            type = pmc_type_p(interp, sig_elem);
+            type = Parrot_pmc_get_type(interp, sig_elem);
 
         /* create destination PMC only as necessary */
         if (PMC_IS_NULL(ar)) {
-            ar = pmc_new(interp, enum_class_FixedIntegerArray);
+            ar = Parrot_pmc_new(interp, enum_class_FixedIntegerArray);
             VTABLE_set_integer_native(interp, ar, n);
         }
 
@@ -899,7 +899,7 @@
 Parrot_mmd_search_scopes(PARROT_INTERP, ARGIN(STRING *meth))
 {
     ASSERT_ARGS(Parrot_mmd_search_scopes)
-    PMC * const candidates = pmc_new(interp, enum_class_ResizablePMCArray);
+    PMC * const candidates = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
     const int stop         = mmd_search_local(interp, meth, candidates);
 
     if (!stop)
@@ -1061,7 +1061,7 @@
     PMC           *multi_sub = Parrot_get_global(interp, ns, sub_name);
 
     if (PMC_IS_NULL(multi_sub)) {
-        multi_sub = constant_pmc_new(interp, enum_class_MultiSub);
+        multi_sub = Parrot_pmc_new_constant(interp, enum_class_MultiSub);
         Parrot_set_global(interp, ns, sub_name, multi_sub);
     }
 
@@ -1094,7 +1094,7 @@
     PMC        *multi_sub = Parrot_get_global(interp, ns, sub_name);
 
     if (PMC_IS_NULL(multi_sub)) {
-        multi_sub = constant_pmc_new(interp, enum_class_MultiSub);
+        multi_sub = Parrot_pmc_new_constant(interp, enum_class_MultiSub);
         Parrot_set_global(interp, ns, sub_name, multi_sub);
     }
 
@@ -1172,7 +1172,7 @@
     STRING *ns_name       = VTABLE_get_string_keyed_int(interp, type_list, 0);
 
     /* Create an NCI sub for the C function */
-    PMC    *sub_obj       = constant_pmc_new(interp, enum_class_NCI);
+    PMC    *sub_obj       = Parrot_pmc_new_constant(interp, enum_class_NCI);
     PMC    *multi_sig     = mmd_build_type_tuple_from_long_sig(interp,
                                 long_sig_str);
 
@@ -1219,7 +1219,7 @@
         STRING   *ns_name   = mmd_info[i].ns_name;
 
         /* Create an NCI sub for the C function */
-        PMC    *sub_obj       = constant_pmc_new(interp, enum_class_NCI);
+        PMC    *sub_obj       = Parrot_pmc_new_constant(interp, enum_class_NCI);
 
         VTABLE_set_pointer_keyed_str(interp, sub_obj, short_sig,
                                      F2DPTR(func_ptr));

Copied: branches/tt362/src/nci/api.c (from r44202, trunk/src/nci/api.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/tt362/src/nci/api.c	Fri Feb 19 22:23:20 2010	(r44203, copy of r44202, trunk/src/nci/api.c)
@@ -0,0 +1,85 @@
+/* nci.c
+ *  Copyright (C) 2001-2009, Parrot Foundation.
+ *  SVN Info
+ *     $Id$
+ *  Overview:
+ *     Native Call Interface routines. The code needed to build a
+ *     parrot to C call frame is in here
+ *  Data Structure and Algorithms:
+ *  History:
+ *  Notes:
+ *  References:
+ */
+
+#include "parrot/parrot.h"
+#include "parrot/nci.h"
+#include "api.str"
+
+/* HEADERIZER HFILE: include/parrot/nci.h */
+/* HEADERIZER STOP */
+
+static void
+init_nci_funcs(PARROT_INTERP) {
+    VTABLE_set_pmc_keyed_int(interp, interp->iglobals, IGLOBALS_NCI_FUNCS,
+        Parrot_pmc_new(interp, enum_class_Hash));
+    Parrot_nci_load_core_thunks(interp);
+    Parrot_nci_load_extra_thunks(interp);
+}
+
+/* This function serves a single purpose. It takes the function
+   signature for a C function we want to call and returns a pointer
+   to a function that can call it. */
+
+void *
+build_call_func(PARROT_INTERP, SHIM(PMC *pmc_nci), NOTNULL(STRING *signature), SHIM(int *jitted)) {
+    PMC *iglobals;
+    PMC *nci_funcs;
+    PMC *thunk;
+
+    /* fixup empty signatures */
+    if (STRING_IS_EMPTY(signature))
+        signature = CONST_STRING(interp, "v");
+
+    iglobals = interp->iglobals;
+    if (PMC_IS_NULL(iglobals))
+        PANIC(interp, "iglobals isn't created yet");
+
+    nci_funcs = VTABLE_get_pmc_keyed_int(interp, iglobals, IGLOBALS_NCI_FUNCS);
+    if (PMC_IS_NULL(nci_funcs)) {
+        init_nci_funcs(interp);
+        nci_funcs = VTABLE_get_pmc_keyed_int(interp, iglobals, IGLOBALS_NCI_FUNCS);
+    }
+
+    thunk = VTABLE_get_pmc_keyed_str(interp, nci_funcs, signature);
+
+    PARROT_ASSERT(PMC_IS_NULL(thunk) || thunk->vtable);
+
+    if ((!PMC_IS_NULL(thunk)) && thunk->vtable->base_type == enum_class_UnManagedStruct)
+        return F2DPTR(VTABLE_get_pointer(interp, thunk));
+
+    /*
+      These lines have been added to aid debugging. I want to be able to
+      see which signature has an unknown type. I am sure someone can come up
+      with a neater way to do this.
+     */
+    {
+        STRING *ns = CONST_STRING(interp, " is an unknown signature type");
+        STRING *message = Parrot_str_concat(interp, signature, ns, 0);
+
+        ns = CONST_STRING(interp, ".\nCAN_BUILD_CALL_FRAMES is disabled, add the signature to src/nci/extra_thunks.nci");
+        message = Parrot_str_concat(interp, message, ns, 0);
+
+        /*
+         * I think there may be memory issues with this but if we get to here we are
+         * aborting.
+         */
+        PANIC(interp, Parrot_str_to_cstring(interp, message));
+    }
+}
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */

Copied: branches/tt362/src/nci/core_thunks.c (from r44202, trunk/src/nci/core_thunks.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/tt362/src/nci/core_thunks.c	Fri Feb 19 22:23:20 2010	(r44203, copy of r44202, trunk/src/nci/core_thunks.c)
@@ -0,0 +1,1246 @@
+/* ex: set ro ft=c:
+ * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
+ *
+ * This file is generated automatically by tools/build/nativecall.pir
+ *
+ * Any changes made here will be lost!
+ *
+ */
+
+/* src/nci/core_thunks.c
+ *  Copyright (C) 2010, Parrot Foundation.
+ *  SVN Info
+ *     $Id$
+ *  Overview:
+ *     Native Call Interface routines. The code needed to build a
+ *     parrot to C call frame is in here
+ *  Data Structure and Algorithms:
+ *  History:
+ *  Notes:
+ *  References:
+ */
+
+
+#include "parrot/parrot.h"
+#include "pmc/pmc_nci.h"
+
+
+#ifdef PARROT_IN_EXTENSION
+/* external libraries can't have strings statically compiled into parrot */
+#  define CONST_STRING(i, s) Parrot_str_new_constant((i), (s))
+#else
+#  include "core_thunks.str"
+#endif
+
+/* HEADERIZER HFILE: none */
+/* HEADERIZER STOP */
+
+/* All our static functions that call in various ways. Yes, terribly
+   hackish, but that is just fine */
+
+
+static void
+pcf_d_JOd(PARROT_INTERP, PMC *self)
+{
+    typedef double(* func_t)(PARROT_INTERP, PMC *, double);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    FLOATVAL return_data;
+
+    PMC * t_1;
+    FLOATVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiN", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (double)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "N", return_data);
+    
+
+
+}
+static void
+pcf_I_JOS(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_P_JOl(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+}
+static void
+pcf_P_Jt(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    char *t_1; STRING *ts_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_1);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_S_JOS(PARROT_INTERP, PMC *self)
+{
+    typedef STRING *(* func_t)(PARROT_INTERP, PMC *, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    STRING * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (STRING *)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", return_data);
+    
+
+
+}
+static void
+pcf_I_JI(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, INTVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_v_JOSP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, STRING *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiSP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3);
+    
+    
+
+
+
+}
+static void
+pcf_v_JOS(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_P_JOS(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+}
+static void
+pcf_I_JOI(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, INTVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_P_JOP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiP", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+}
+static void
+pcf_P_JOPS(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    STRING * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPS", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+}
+static void
+pcf_v_JOPSP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, PMC *, STRING *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    STRING * t_3;
+    PMC * t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPSP", &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3, t_4);
+    
+    
+
+
+
+
+}
+static void
+pcf_v_JPPP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3);
+    
+    
+
+
+
+}
+static void
+pcf_v_JPIP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, INTVAL, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3);
+    
+    
+
+
+
+}
+static void
+pcf_v_JPSP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, STRING *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3);
+    
+    
+
+
+
+}
+static void
+pcf_v_JPNP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, FLOATVAL, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    FLOATVAL t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PNP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3);
+    
+    
+
+
+
+}
+static void
+pcf_v_JPP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_v_JPI(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, INTVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_v_JPS(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_v_JPN(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, FLOATVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    FLOATVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PN", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_P_JPPP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+}
+static void
+pcf_P_JPIP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, INTVAL, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+}
+static void
+pcf_P_JPSP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, STRING *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+}
+static void
+pcf_P_JPNP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, FLOATVAL, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    FLOATVAL t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PNP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+}
+static void
+pcf_I_JPP(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_I_JPS(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_I_JPN(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, FLOATVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    FLOATVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PN", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_JP(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_v_JP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1);
+    
+    
+
+}
+static void
+pcf_i_JPi(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_JPii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_JPiii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIII", &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1, t_2, t_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+}
+static void
+pcf_i_JPt(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    char *t_2; STRING *ts_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_1, &ts_2);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_P_JOSSS(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, STRING *, STRING *, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    STRING * t_3;
+    STRING * t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiSSS", &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+
+}
+static void
+pcf_v_JOSS(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, STRING *, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    STRING * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiSS", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3);
+    
+    
+
+
+
+}
+static void
+pcf_S_JOI(PARROT_INTERP, PMC *self)
+{
+    typedef STRING *(* func_t)(PARROT_INTERP, PMC *, INTVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    STRING * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (STRING *)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", return_data);
+    
+
+
+}
+static void
+pcf_v_JOb(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    STRING *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, Buffer_bufstart(t_2));
+    
+    
+
+
+}
+static void
+pcf_i_JOPxAT_(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPPs", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_I_JOPxAT_(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPPs", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_I_JOIPxAT_(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, INTVAL, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    PMC * t_3;
+    PMC * t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiIPPs", &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1, t_2, t_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+}
+static void
+pcf_P_JO(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+}
+static void
+pcf_v_JOP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiP", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_P_Ji(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+}
+
+
+ void
+Parrot_nci_load_core_thunks(PARROT_INTERP)
+{
+    PMC        *iglobals;
+    PMC        *temp_pmc;
+
+    PMC        *HashPointer   = NULL;
+
+    iglobals = interp->iglobals;
+    if (PMC_IS_NULL(iglobals))
+        PANIC(interp, "iglobals isn't created yet");
+
+    HashPointer = VTABLE_get_pmc_keyed_int(interp, iglobals,
+            IGLOBALS_NCI_FUNCS);
+    if (PMC_IS_NULL(HashPointer))
+        PANIC(interp, "iglobals.nci_funcs isn't created yet");
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_d_JOd);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "dJOd"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JOS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJOS"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOl);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOl"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_Jt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_S_JOS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "SJOS"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JI);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJI"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOSP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOSP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOS"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOS"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JOI);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJOI"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOPS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOPS"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOPSP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOPSP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPPP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPIP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPIP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPSP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPSP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPNP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPNP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPI);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPI"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPS"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JPN);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJPN"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JPPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJPPP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JPIP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJPIP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JPSP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJPSP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JPNP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJPNP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJPP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JPS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJPS"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JPN);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJPN"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JPi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJPi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JPii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJPii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JPiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJPiii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JPt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJPt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOSSS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOSSS"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOSS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOSS"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_S_JOI);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "SJOI"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOb);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOb"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JOPxAT_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJOP@"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JOPxAT_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJOP@"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JOIPxAT_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJOIP@"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JO);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJO"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_Ji);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJi"), temp_pmc);
+
+}
+
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
+

Copied: branches/tt362/src/nci/core_thunks.nci (from r44202, trunk/src/nci/core_thunks.nci)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/tt362/src/nci/core_thunks.nci	Fri Feb 19 22:23:20 2010	(r44203, copy of r44202, trunk/src/nci/core_thunks.nci)
@@ -0,0 +1,70 @@
+# Copyright (C) 2002-2010, Parrot Foundation.
+
+# This file contains the Parrot Native Call Interface signature
+# declarations required by Parrot's core. To add signatures for extensions,
+# add to F<src/nci/extra_thunks.nci>
+
+# The format of this file is explained in F<src/nci/extra_thunks.nci>
+
+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

Copied: branches/tt362/src/nci/extra_thunks.c (from r44202, trunk/src/nci/extra_thunks.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/tt362/src/nci/extra_thunks.c	Fri Feb 19 22:23:20 2010	(r44203, copy of r44202, trunk/src/nci/extra_thunks.c)
@@ -0,0 +1,7238 @@
+/* ex: set ro ft=c:
+ * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
+ *
+ * This file is generated automatically by tools/build/nativecall.pir
+ *
+ * Any changes made here will be lost!
+ *
+ */
+
+/* src/nci/extra_thunks.c
+ *  Copyright (C) 2010, Parrot Foundation.
+ *  SVN Info
+ *     $Id$
+ *  Overview:
+ *     Native Call Interface routines. The code needed to build a
+ *     parrot to C call frame is in here
+ *  Data Structure and Algorithms:
+ *  History:
+ *  Notes:
+ *  References:
+ */
+
+
+#include "parrot/parrot.h"
+#include "pmc/pmc_nci.h"
+
+
+#ifdef PARROT_IN_EXTENSION
+/* external libraries can't have strings statically compiled into parrot */
+#  define CONST_STRING(i, s) Parrot_str_new_constant((i), (s))
+#else
+#  include "extra_thunks.str"
+#endif
+
+/* HEADERIZER HFILE: none */
+/* HEADERIZER STOP */
+
+/* All our static functions that call in various ways. Yes, terribly
+   hackish, but that is just fine */
+
+
+static void
+pcf_v_J(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    ;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "");
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp);
+    
+    
+}
+static void
+pcf_i_ip(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    PMC *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_i_JPip(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *, int, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    PMC *t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1, t_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_JpP(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, void *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_1;
+    PMC * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_Jpii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, void *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_p(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_i_tp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(char *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    char *t_0; STRING *ts_0;
+    PMC *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SP", &ts_0, &t_1);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    if (t_0) Parrot_str_free_cstring(t_0);
+
+}
+static void
+pcf_p_J(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(PARROT_INTERP);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    ;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "");
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(interp);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+}
+static void
+pcf_p_Jp(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(PARROT_INTERP, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(interp, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+}
+static void
+pcf_t_J(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(PARROT_INTERP);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    ;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "");
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(interp);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+}
+static void
+pcf_t_Jpti(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(PARROT_INTERP, void *, char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    PMC *t_1;
+    char *t_2; STRING *ts_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSI", &t_1, &ts_2, &t_3);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(interp, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+
+}
+static void
+pcf_t_p(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    PMC *t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0));
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+}
+static void
+pcf_t_pt(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(void *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_0, &ts_1);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_v_p(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0));
+    
+    
+}
+static void
+pcf_v_pit(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, int, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    char *t_2; STRING *ts_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIS", &t_0, &t_1, &ts_2);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_v_ptt(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, char *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSS", &t_0, &ts_1, &ts_2);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_v_Jtiiipt(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, char *, int, int, int, void *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    PMC *t_5;
+    char *t_6; STRING *ts_6;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SIIIPS", &ts_1, &t_2, &t_3, &t_4, &t_5, &ts_6);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_6 = ts_6 ? Parrot_str_to_cstring(interp, ts_6) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3, t_4, PMC_IS_NULL((PMC*)t_5) ? (void *)NULL : VTABLE_get_pointer(interp, t_5), t_6);
+    
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+
+
+
+if (t_6) Parrot_str_free_cstring(t_6);
+}
+static void
+pcf_p_JttPP(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(PARROT_INTERP, char *, char *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    PMC * t_3;
+    PMC * t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SSPP", &ts_1, &ts_2, &t_3, &t_4);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(interp, t_1, t_2, t_3, t_4);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+
+
+}
+static void
+pcf_P_Jtpi(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, char *, void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    char *t_1; STRING *ts_1;
+    PMC *t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SPI", &ts_1, &t_2, &t_3);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+
+}
+static void
+pcf_i_Vppp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void **, void *, void *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0; void *v_0;
+    PMC *t_1;
+    PMC *t_2;
+    PMC *t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPP", &t_0, &t_1, &t_2, &t_3);
+    v_0 = VTABLE_get_pointer(interp, t_0);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(&v_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    VTABLE_set_pointer(interp, t_0, v_0);
+
+
+
+}
+static void
+pcf_v_JpPP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, void *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_1;
+    PMC * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3);
+    
+    
+
+
+
+}
+static void
+pcf_v_pt(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_0, &ts_1);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_v_Jpt(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, void *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_1;
+    char *t_2; STRING *ts_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_1, &ts_2);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2);
+    
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_v_(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)();
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    ;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)();
+    
+    
+}
+static void
+pcf_v_Jiiip(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, int, int, int, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    PMC *t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIIP", &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3, PMC_IS_NULL((PMC*)t_4) ? (void *)NULL : VTABLE_get_pointer(interp, t_4));
+    
+    
+
+
+
+
+}
+static void
+pcf_v_i(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    INTVAL t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(t_0);
+    
+    
+}
+static void
+pcf_v_ii(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(t_0, t_1);
+    
+    
+
+}
+static void
+pcf_v_illllllll(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(int, long, long, long, long, long, long, long, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    INTVAL t_6;
+    INTVAL t_7;
+    INTVAL t_8;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIIIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7, &t_8);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7, t_8);
+    
+    
+
+
+
+
+
+
+
+
+}
+static void
+pcf_v_l(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    INTVAL t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(t_0);
+    
+    
+}
+static void
+pcf_v_pbip(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, void *, int, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    STRING *t_1;
+    INTVAL t_2;
+    PMC *t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSIP", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), Buffer_bufstart(t_1), t_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
+    
+    
+
+
+
+}
+static void
+pcf_v_pi(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    
+    
+
+}
+static void
+pcf_v_piiii(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIII", &t_0, &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4);
+    
+    
+
+
+
+
+}
+static void
+pcf_v_pl(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    
+    
+
+}
+static void
+pcf_v_pp(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
+    
+    
+
+}
+static void
+pcf_i_JPP(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_P_JP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+}
+static void
+pcf_P_JPP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+}
+static void
+pcf_P_JO(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+}
+static void
+pcf_S_JO(PARROT_INTERP, PMC *self)
+{
+    typedef STRING *(* func_t)(PARROT_INTERP, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    STRING * return_data;
+
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (STRING *)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", return_data);
+    
+
+}
+static void
+pcf_i_P(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_P_JOPP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+}
+static void
+pcf_P_JOPPP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    PMC * t_3;
+    PMC * t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPPP", &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+
+}
+static void
+pcf_v_JOPP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3);
+    
+    
+
+
+
+}
+static void
+pcf_v_JOPPP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    PMC * t_3;
+    PMC * t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPPP", &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3, t_4);
+    
+    
+
+
+
+
+}
+static void
+pcf_P_JOPPPP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    PMC * t_3;
+    PMC * t_4;
+    PMC * t_5;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPPPP", &t_1, &t_2, &t_3, &t_4, &t_5);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3, t_4, t_5);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+
+
+}
+static void
+pcf_P_JOPPPPP(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, PMC *, PMC *, PMC *, PMC *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    PMC * t_2;
+    PMC * t_3;
+    PMC * t_4;
+    PMC * t_5;
+    PMC * t_6;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiPPPPP", &t_1, &t_2, &t_3, &t_4, &t_5, &t_6);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3, t_4, t_5, t_6);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+
+
+
+}
+static void
+pcf_I_JOSI(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, STRING *, INTVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiSI", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_P_JOSII(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, STRING *, INTVAL, INTVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiSII", &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+
+}
+static void
+pcf_t_p3(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(void *, int *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    PMC *t_0;
+    PMC *t_1; int i_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
+    i_1 = VTABLE_get_integer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+}
+static void
+pcf_i_pp3p(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, int *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    PMC *t_2; int i_2;
+    PMC *t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPP", &t_0, &t_1, &t_2, &t_3);
+    i_2 = VTABLE_get_integer(interp, t_2);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), &i_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+VTABLE_set_integer_native(interp, t_2, i_2);
+
+}
+static void
+pcf_i_pp3(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, int *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    PMC *t_2; int i_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_0, &t_1, &t_2);
+    i_2 = VTABLE_get_integer(interp, t_2);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), &i_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+VTABLE_set_integer_native(interp, t_2, i_2);
+}
+static void
+pcf_i_ppd(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, double);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    FLOATVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPN", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_ptii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, char *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSII", &t_0, &ts_1, &t_2, &t_3);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+
+}
+static void
+pcf_i_pipi(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    PMC *t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIPI", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_t_ptti(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(void *, char *, char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSI", &t_0, &ts_1, &ts_2, &t_3);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+
+}
+static void
+pcf_t_pti(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(void *, char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSI", &t_0, &ts_1, &t_2);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+}
+static void
+pcf_t_pttti(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(void *, char *, char *, char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    char *t_3; STRING *ts_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSSI", &t_0, &ts_1, &ts_2, &ts_3, &t_4);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+if (t_3) Parrot_str_free_cstring(t_3);
+
+}
+static void
+pcf_p_Ji(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(PARROT_INTERP, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(interp, t_1);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+}
+static void
+pcf_p_Jipp(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(PARROT_INTERP, int, void *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    INTVAL t_1;
+    PMC *t_2;
+    PMC *t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IPP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(interp, t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+
+}
+static void
+pcf_p_Jbip(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(PARROT_INTERP, void *, int, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    STRING *t_1;
+    INTVAL t_2;
+    PMC *t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SIP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(interp, Buffer_bufstart(t_1), t_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+
+}
+static void
+pcf_v_Jp(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
+    
+    
+
+}
+static void
+pcf_v_JS(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    STRING * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1);
+    
+    
+
+}
+static void
+pcf_t_tt(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(char *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    char *t_0; STRING *ts_0;
+    char *t_1; STRING *ts_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SS", &ts_0, &ts_1);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(t_0, t_1);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_I_JOt(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, PMC *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    char *t_2; STRING *ts_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &ts_2);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_v_JOSI(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, STRING *, INTVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiSI", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2, t_3);
+    
+    
+
+
+
+}
+static void
+pcf_S_JOi(PARROT_INTERP, PMC *self)
+{
+    typedef STRING *(* func_t)(PARROT_INTERP, PMC *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    STRING * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (STRING *)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", return_data);
+    
+
+
+}
+static void
+pcf_v_JOi(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_I_JO(PARROT_INTERP, PMC *self)
+{
+    typedef INTVAL(* func_t)(PARROT_INTERP, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (INTVAL)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_N_JO(PARROT_INTERP, PMC *self)
+{
+    typedef FLOATVAL(* func_t)(PARROT_INTERP, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    FLOATVAL return_data;
+
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (FLOATVAL)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "N", return_data);
+    
+
+}
+static void
+pcf_v_JON(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, FLOATVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    FLOATVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiN", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_P_JOi(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+}
+static void
+pcf_v_JOI(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *, INTVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_P_JOI(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, INTVAL);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+}
+static void
+pcf_P_JOIS(PARROT_INTERP, PMC *self)
+{
+    typedef PMC *(* func_t)(PARROT_INTERP, PMC *, INTVAL, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    PMC * return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    STRING * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiIS", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (PMC *)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", return_data);
+    
+
+
+
+}
+static void
+pcf_S_JOSP(PARROT_INTERP, PMC *self)
+{
+    typedef STRING *(* func_t)(PARROT_INTERP, PMC *, STRING *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    STRING * return_data;
+
+    PMC * t_1;
+    STRING * t_2;
+    PMC * t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiSP", &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (STRING *)(*fn_pointer)(interp, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", return_data);
+    
+
+
+
+}
+static void
+pcf_i_(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)();
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    ;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)();
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_i_i3i(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    PMC *t_1; int i_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IPI", &t_0, &t_1, &t_2);
+    i_1 = VTABLE_get_integer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, &i_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+
+}
+static void
+pcf_i_ibi(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    STRING *t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "ISI", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, Buffer_bufstart(t_1), t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_l_lttl(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)(long, char *, char *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "ISSI", &t_0, &ts_1, &ts_2, &t_3);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)(t_0, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+
+}
+static void
+pcf_i_pip(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    PMC *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIP", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_piS(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, STRING *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    STRING * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIS", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_S_i(PARROT_INTERP, PMC *self)
+{
+    typedef STRING *(* func_t)(int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    STRING * return_data;
+
+    INTVAL t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (STRING *)(*fn_pointer)(t_0);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", return_data);
+    
+}
+static void
+pcf_l_p(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)(void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_c_p(PARROT_INTERP, PMC *self)
+{
+    typedef char(* func_t)(void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_p_pi(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+}
+static void
+pcf_p_p(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0));
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+}
+static void
+pcf_i_pttttt(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, char *, char *, char *, char *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    char *t_3; STRING *ts_3;
+    char *t_4; STRING *ts_4;
+    char *t_5; STRING *ts_5;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSSSS", &t_0, &ts_1, &ts_2, &ts_3, &ts_4, &ts_5);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;t_4 = ts_4 ? Parrot_str_to_cstring(interp, ts_4) : (char *)NULL;t_5 = ts_5 ? Parrot_str_to_cstring(interp, ts_5) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4, t_5);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+if (t_3) Parrot_str_free_cstring(t_3);
+if (t_4) Parrot_str_free_cstring(t_4);
+if (t_5) Parrot_str_free_cstring(t_5);
+}
+static void
+pcf_c_pttt(PARROT_INTERP, PMC *self)
+{
+    typedef char(* func_t)(void *, char *, char *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    char *t_3; STRING *ts_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSS", &t_0, &ts_1, &ts_2, &ts_3);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+if (t_3) Parrot_str_free_cstring(t_3);
+}
+static void
+pcf_p_pttttiti(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, char *, char *, char *, char *, int, char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    char *t_3; STRING *ts_3;
+    char *t_4; STRING *ts_4;
+    INTVAL t_5;
+    char *t_6; STRING *ts_6;
+    INTVAL t_7;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSSSISI", &t_0, &ts_1, &ts_2, &ts_3, &ts_4, &t_5, &ts_6, &t_7);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;t_4 = ts_4 ? Parrot_str_to_cstring(interp, ts_4) : (char *)NULL;t_6 = ts_6 ? Parrot_str_to_cstring(interp, ts_6) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4, t_5, t_6, t_7);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+if (t_3) Parrot_str_free_cstring(t_3);
+if (t_4) Parrot_str_free_cstring(t_4);
+
+if (t_6) Parrot_str_free_cstring(t_6);
+
+}
+static void
+pcf_i_pt(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_0, &ts_1);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_i_ptl(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, char *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSI", &t_0, &ts_1, &t_2);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+}
+static void
+pcf_i_pi(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_i_pl(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_l_(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)();
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    ;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)();
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_p_pt(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_0, &ts_1);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_p_ptt(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, char *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSS", &t_0, &ts_1, &ts_2);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_i_pit(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    char *t_2; STRING *ts_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIS", &t_0, &t_1, &ts_2);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_p_pp(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    PMC *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+}
+static void
+pcf_l_ttl(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)(char *, char *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    char *t_0; STRING *ts_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SSI", &ts_0, &ts_1, &t_2);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)(t_0, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    if (t_0) Parrot_str_free_cstring(t_0);
+if (t_1) Parrot_str_free_cstring(t_1);
+
+}
+static void
+pcf_l_pttl(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)(void *, char *, char *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSI", &t_0, &ts_1, &ts_2, &t_3);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+
+}
+static void
+pcf_v_t(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    char *t_0; STRING *ts_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_0);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(t_0);
+    
+    if (t_0) Parrot_str_free_cstring(t_0);
+}
+static void
+pcf_p_pttttitl(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, char *, char *, char *, char *, int, char *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    char *t_3; STRING *ts_3;
+    char *t_4; STRING *ts_4;
+    INTVAL t_5;
+    char *t_6; STRING *ts_6;
+    INTVAL t_7;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSSSISI", &t_0, &ts_1, &ts_2, &ts_3, &ts_4, &t_5, &ts_6, &t_7);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;t_4 = ts_4 ? Parrot_str_to_cstring(interp, ts_4) : (char *)NULL;t_6 = ts_6 ? Parrot_str_to_cstring(interp, ts_6) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4, t_5, t_6, t_7);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+if (t_3) Parrot_str_free_cstring(t_3);
+if (t_4) Parrot_str_free_cstring(t_4);
+
+if (t_6) Parrot_str_free_cstring(t_6);
+
+}
+static void
+pcf_p_tiB3P(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(char *, int, char **, int *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    char *t_0; STRING *ts_0;
+    INTVAL t_1;
+    char *t_2; STRING *ts_2;
+    PMC *t_3; int i_3;
+    PMC * t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SISPP", &ts_0, &t_1, &ts_2, &t_3, &t_4);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *) NULL;i_3 = VTABLE_get_integer(interp, t_3);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, t_1, &t_2, &i_3, t_4);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+
+if (t_2) Parrot_str_free_cstring(t_2);
+VTABLE_set_integer_native(interp, t_3, i_3);
+
+}
+static void
+pcf_p_tip3P(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(char *, int, void *, int *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    char *t_0; STRING *ts_0;
+    INTVAL t_1;
+    PMC *t_2;
+    PMC *t_3; int i_3;
+    PMC * t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SIPPP", &ts_0, &t_1, &t_2, &t_3, &t_4);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;i_3 = VTABLE_get_integer(interp, t_3);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), &i_3, t_4);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+
+
+VTABLE_set_integer_native(interp, t_3, i_3);
+
+}
+static void
+pcf_i_pPtiiipi(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, PMC *, char *, int, int, int, void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC * t_1;
+    char *t_2; STRING *ts_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    PMC *t_6;
+    INTVAL t_7;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPSIIIPI", &t_0, &t_1, &ts_2, &t_3, &t_4, &t_5, &t_6, &t_7);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4, t_5, PMC_IS_NULL((PMC*)t_6) ? (void *)NULL : VTABLE_get_pointer(interp, t_6), t_7);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+
+
+
+
+
+}
+static void
+pcf_i_tpiibi(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(char *, void *, int, int, void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    char *t_0; STRING *ts_0;
+    PMC *t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    STRING *t_4;
+    INTVAL t_5;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SPIISI", &ts_0, &t_1, &t_2, &t_3, &t_4, &t_5);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, Buffer_bufstart(t_4), t_5);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    if (t_0) Parrot_str_free_cstring(t_0);
+
+
+
+
+
+}
+static void
+pcf_p_ptippppi(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, char *, int, void *, void *, void *, void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    PMC *t_3;
+    PMC *t_4;
+    PMC *t_5;
+    PMC *t_6;
+    INTVAL t_7;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSIPPPPI", &t_0, &ts_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3), PMC_IS_NULL((PMC*)t_4) ? (void *)NULL : VTABLE_get_pointer(interp, t_4), PMC_IS_NULL((PMC*)t_5) ? (void *)NULL : VTABLE_get_pointer(interp, t_5), PMC_IS_NULL((PMC*)t_6) ? (void *)NULL : VTABLE_get_pointer(interp, t_6), t_7);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+
+
+
+
+
+}
+static void
+pcf_p_pi33ipi(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, int, int *, int *, int, void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    INTVAL t_1;
+    PMC *t_2; int i_2;
+    PMC *t_3; int i_3;
+    INTVAL t_4;
+    PMC *t_5;
+    INTVAL t_6;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIPPIPI", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6);
+    i_2 = VTABLE_get_integer(interp, t_2);i_3 = VTABLE_get_integer(interp, t_3);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, &i_2, &i_3, t_4, PMC_IS_NULL((PMC*)t_5) ? (void *)NULL : VTABLE_get_pointer(interp, t_5), t_6);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+VTABLE_set_integer_native(interp, t_2, i_2);
+VTABLE_set_integer_native(interp, t_3, i_3);
+
+
+
+}
+static void
+pcf_p_pttip(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, char *, char *, int, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    INTVAL t_3;
+    PMC *t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSSIP", &t_0, &ts_1, &ts_2, &t_3, &t_4);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, PMC_IS_NULL((PMC*)t_4) ? (void *)NULL : VTABLE_get_pointer(interp, t_4));
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+
+
+}
+static void
+pcf_p_ptipppi(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, char *, int, void *, void *, void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    PMC *t_3;
+    PMC *t_4;
+    PMC *t_5;
+    INTVAL t_6;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSIPPPI", &t_0, &ts_1, &t_2, &t_3, &t_4, &t_5, &t_6);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3), PMC_IS_NULL((PMC*)t_4) ? (void *)NULL : VTABLE_get_pointer(interp, t_4), PMC_IS_NULL((PMC*)t_5) ? (void *)NULL : VTABLE_get_pointer(interp, t_5), t_6);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+
+
+
+
+}
+static void
+pcf_p_ppP(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, void *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    PMC *t_1;
+    PMC * t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+}
+static void
+pcf_p_iiil(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(int, int, int, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIII", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, t_1, t_2, t_3);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+
+}
+static void
+pcf_i_ppl(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPI", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_v_pip(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, int, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    PMC *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIP", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
+    
+    
+
+
+}
+static void
+pcf_p_pti(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSI", &t_0, &ts_1, &t_2);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+}
+static void
+pcf_i_ppp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    PMC *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_p_ptii(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, char *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSII", &t_0, &ts_1, &t_2, &t_3);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+
+}
+static void
+pcf_p_ti(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    char *t_0; STRING *ts_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SI", &ts_0, &t_1);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, t_1);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+
+}
+static void
+pcf_p_ptp(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, char *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    PMC *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSP", &t_0, &ts_1, &t_2);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+}
+static void
+pcf_i_pt33(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, char *, int *, int *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    PMC *t_2; int i_2;
+    PMC *t_3; int i_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSPP", &t_0, &ts_1, &t_2, &t_3);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;i_2 = VTABLE_get_integer(interp, t_2);i_3 = VTABLE_get_integer(interp, t_3);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, &i_2, &i_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+VTABLE_set_integer_native(interp, t_2, i_2);
+VTABLE_set_integer_native(interp, t_3, i_3);
+}
+static void
+pcf_c_(PARROT_INTERP, PMC *self)
+{
+    typedef char(* func_t)();
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    ;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char)(*fn_pointer)();
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_c_pi(PARROT_INTERP, PMC *self)
+{
+    typedef char(* func_t)(void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_d_(PARROT_INTERP, PMC *self)
+{
+    typedef double(* func_t)();
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    FLOATVAL return_data;
+
+    ;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (double)(*fn_pointer)();
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "N", return_data);
+    
+}
+static void
+pcf_d_d(PARROT_INTERP, PMC *self)
+{
+    typedef double(* func_t)(double);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    FLOATVAL return_data;
+
+    FLOATVAL t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "N", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (double)(*fn_pointer)(t_0);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "N", return_data);
+    
+}
+static void
+pcf_f_(PARROT_INTERP, PMC *self)
+{
+    typedef float(* func_t)();
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    FLOATVAL return_data;
+
+    ;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (float)(*fn_pointer)();
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "N", return_data);
+    
+}
+static void
+pcf_f_ff(PARROT_INTERP, PMC *self)
+{
+    typedef float(* func_t)(float, float);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    FLOATVAL return_data;
+
+    FLOATVAL t_0;
+    FLOATVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "NN", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (float)(*fn_pointer)(t_0, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "N", return_data);
+    
+
+}
+static void
+pcf_f_is(PARROT_INTERP, PMC *self)
+{
+    typedef float(* func_t)(int, short);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    FLOATVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (float)(*fn_pointer)(t_0, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "N", return_data);
+    
+
+}
+static void
+pcf_i_b(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    STRING *t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(Buffer_bufstart(t_0));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_i_d(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(double);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    FLOATVAL t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "N", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_i_i(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_i_ii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_i_ii4(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int, long *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    PMC *t_2; long i_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIP", &t_0, &t_1, &t_2);
+    i_2 = VTABLE_get_integer(interp, t_2);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, &i_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+VTABLE_set_integer_native(interp, t_2, i_2);
+}
+static void
+pcf_i_ii4i(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int, long *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    PMC *t_2; long i_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIPI", &t_0, &t_1, &t_2, &t_3);
+    i_2 = VTABLE_get_integer(interp, t_2);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, &i_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+VTABLE_set_integer_native(interp, t_2, i_2);
+
+}
+static void
+pcf_i_iiii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIII", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_iiilsp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int, int, long, short, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    PMC *t_5;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIIIIP", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2, t_3, t_4, PMC_IS_NULL((PMC*)t_5) ? (void *)NULL : VTABLE_get_pointer(interp, t_5));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+
+}
+static void
+pcf_i_iil(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "III", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_iili(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int, long, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIII", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_iip(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    PMC *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIP", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_iit(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    char *t_2; STRING *ts_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIS", &t_0, &t_1, &ts_2);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_i_iiti(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int, char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    char *t_2; STRING *ts_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IISI", &t_0, &t_1, &ts_2, &t_3);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+
+}
+static void
+pcf_i_ilsp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, long, short, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    PMC *t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIIP", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_iti(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "ISI", &t_0, &ts_1, &t_2);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+}
+static void
+pcf_i_l(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_i_li(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(long, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_i_lp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(long, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    PMC *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_i_lsp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(long, short, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    PMC *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIP", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_p33(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int *, int *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1; int i_1;
+    PMC *t_2; int i_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_0, &t_1, &t_2);
+    i_1 = VTABLE_get_integer(interp, t_1);i_2 = VTABLE_get_integer(interp, t_2);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1, &i_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+VTABLE_set_integer_native(interp, t_2, i_2);
+}
+static void
+pcf_i_p333(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int *, int *, int *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1; int i_1;
+    PMC *t_2; int i_2;
+    PMC *t_3; int i_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPP", &t_0, &t_1, &t_2, &t_3);
+    i_1 = VTABLE_get_integer(interp, t_1);i_2 = VTABLE_get_integer(interp, t_2);i_3 = VTABLE_get_integer(interp, t_3);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1, &i_2, &i_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+VTABLE_set_integer_native(interp, t_2, i_2);
+VTABLE_set_integer_native(interp, t_3, i_3);
+}
+static void
+pcf_i_p333333(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int *, int *, int *, int *, int *, int *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1; int i_1;
+    PMC *t_2; int i_2;
+    PMC *t_3; int i_3;
+    PMC *t_4; int i_4;
+    PMC *t_5; int i_5;
+    PMC *t_6; int i_6;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPPPPP", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6);
+    i_1 = VTABLE_get_integer(interp, t_1);i_2 = VTABLE_get_integer(interp, t_2);i_3 = VTABLE_get_integer(interp, t_3);i_4 = VTABLE_get_integer(interp, t_4);i_5 = VTABLE_get_integer(interp, t_5);i_6 = VTABLE_get_integer(interp, t_6);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1, &i_2, &i_3, &i_4, &i_5, &i_6);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+VTABLE_set_integer_native(interp, t_2, i_2);
+VTABLE_set_integer_native(interp, t_3, i_3);
+VTABLE_set_integer_native(interp, t_4, i_4);
+VTABLE_set_integer_native(interp, t_5, i_5);
+VTABLE_set_integer_native(interp, t_6, i_6);
+}
+static void
+pcf_i_p4(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, long *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1; long i_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
+    i_1 = VTABLE_get_integer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+}
+static void
+pcf_i_p42p(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, long *, short *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1; long i_1;
+    PMC *t_2; short i_2;
+    PMC *t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPP", &t_0, &t_1, &t_2, &t_3);
+    i_1 = VTABLE_get_integer(interp, t_1);i_2 = VTABLE_get_integer(interp, t_2);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1, &i_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+VTABLE_set_integer_native(interp, t_2, i_2);
+
+}
+static void
+pcf_i_p4i(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, long *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1; long i_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPI", &t_0, &t_1, &t_2);
+    i_1 = VTABLE_get_integer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+
+}
+static void
+pcf_i_pb(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    STRING *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PS", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), Buffer_bufstart(t_1));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_i_pii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_pii4(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, int, long *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    PMC *t_3; long i_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIP", &t_0, &t_1, &t_2, &t_3);
+    i_3 = VTABLE_get_integer(interp, t_3);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, &i_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+VTABLE_set_integer_native(interp, t_3, i_3);
+}
+static void
+pcf_i_pii4i(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, int, long *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    PMC *t_3; long i_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIPI", &t_0, &t_1, &t_2, &t_3, &t_4);
+    i_3 = VTABLE_get_integer(interp, t_3);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, &i_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+VTABLE_set_integer_native(interp, t_3, i_3);
+
+}
+static void
+pcf_i_piii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIII", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_piiiiii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, int, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    INTVAL t_6;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4, t_5, t_6);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+
+
+}
+static void
+pcf_i_piiilsp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, int, int, long, short, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    PMC *t_6;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIIIIP", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4, t_5, PMC_IS_NULL((PMC*)t_6) ? (void *)NULL : VTABLE_get_pointer(interp, t_6));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+
+
+}
+static void
+pcf_i_piil(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, int, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIII", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_piili(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, int, long, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIII", &t_0, &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+}
+static void
+pcf_i_piit(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, int, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    char *t_3; STRING *ts_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIS", &t_0, &t_1, &t_2, &ts_3);
+    t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+if (t_3) Parrot_str_free_cstring(t_3);
+}
+static void
+pcf_i_piiti(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, int, char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    char *t_3; STRING *ts_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIISI", &t_0, &t_1, &t_2, &ts_3, &t_4);
+    t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+if (t_3) Parrot_str_free_cstring(t_3);
+
+}
+static void
+pcf_i_pilsp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, long, short, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    PMC *t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIIP", &t_0, &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, PMC_IS_NULL((PMC*)t_4) ? (void *)NULL : VTABLE_get_pointer(interp, t_4));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+}
+static void
+pcf_i_pli(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, long, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_pll(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, long, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_pllllllll(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, long, long, long, long, long, long, long, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    INTVAL t_6;
+    INTVAL t_7;
+    INTVAL t_8;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7, &t_8);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4, t_5, t_6, t_7, t_8);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+
+
+
+
+}
+static void
+pcf_i_plp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, long, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    PMC *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIP", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_plsp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, long, short, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    PMC *t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIP", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_pp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_i_ppi(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPI", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_ppiiiiiiii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, int, int, int, int, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    INTVAL t_6;
+    INTVAL t_7;
+    INTVAL t_8;
+    INTVAL t_9;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPIIIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7, &t_8, &t_9);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, t_4, t_5, t_6, t_7, t_8, t_9);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+
+
+
+
+
+}
+static void
+pcf_i_pppp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, void *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    PMC *t_2;
+    PMC *t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPP", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_psp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, short, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    PMC *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIP", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_pti(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSI", &t_0, &ts_1, &t_2);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+}
+static void
+pcf_i_pitl(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, char *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    char *t_2; STRING *ts_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PISI", &t_0, &t_1, &ts_2, &t_3);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+
+}
+static void
+pcf_i_s(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(short);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_i_s22(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(short, short *, short *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    PMC *t_1; short i_1;
+    PMC *t_2; short i_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IPP", &t_0, &t_1, &t_2);
+    i_1 = VTABLE_get_integer(interp, t_1);i_2 = VTABLE_get_integer(interp, t_2);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, &i_1, &i_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+VTABLE_set_integer_native(interp, t_2, i_2);
+}
+static void
+pcf_i_s222(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(short, short *, short *, short *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    PMC *t_1; short i_1;
+    PMC *t_2; short i_2;
+    PMC *t_3; short i_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IPPP", &t_0, &t_1, &t_2, &t_3);
+    i_1 = VTABLE_get_integer(interp, t_1);i_2 = VTABLE_get_integer(interp, t_2);i_3 = VTABLE_get_integer(interp, t_3);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, &i_1, &i_2, &i_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+VTABLE_set_integer_native(interp, t_2, i_2);
+VTABLE_set_integer_native(interp, t_3, i_3);
+}
+static void
+pcf_i_sp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(short, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    PMC *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_i_sss(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(short, short, short);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "III", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_ssss(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(short, short, short, short);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIII", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_t(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    char *t_0; STRING *ts_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_0);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    if (t_0) Parrot_str_free_cstring(t_0);
+}
+static void
+pcf_i_ti(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(char *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    char *t_0; STRING *ts_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SI", &ts_0, &t_1);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    if (t_0) Parrot_str_free_cstring(t_0);
+
+}
+static void
+pcf_i_4(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(long *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0; long i_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+    i_0 = VTABLE_get_integer(interp, t_0);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(&i_0);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    VTABLE_set_integer_native(interp, t_0, i_0);
+}
+static void
+pcf_i_4i(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(long *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0; long i_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+    i_0 = VTABLE_get_integer(interp, t_0);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(&i_0, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    VTABLE_set_integer_native(interp, t_0, i_0);
+
+}
+static void
+pcf_i_42p(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(long *, short *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0; long i_0;
+    PMC *t_1; short i_1;
+    PMC *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_0, &t_1, &t_2);
+    i_0 = VTABLE_get_integer(interp, t_0);i_1 = VTABLE_get_integer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(&i_0, &i_1, PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    VTABLE_set_integer_native(interp, t_0, i_0);
+VTABLE_set_integer_native(interp, t_1, i_1);
+
+}
+static void
+pcf_l_ii(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)(int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)(t_0, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_l_l4(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)(long, long *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    PMC *t_1; long i_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
+    i_1 = VTABLE_get_integer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)(t_0, &i_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+}
+static void
+pcf_l_pi(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)(void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_l_pii(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)(void *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_l_p33l(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)(void *, int *, int *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1; int i_1;
+    PMC *t_2; int i_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPI", &t_0, &t_1, &t_2, &t_3);
+    i_1 = VTABLE_get_integer(interp, t_1);i_2 = VTABLE_get_integer(interp, t_2);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), &i_1, &i_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+VTABLE_set_integer_native(interp, t_2, i_2);
+
+}
+static void
+pcf_l_33l(PARROT_INTERP, PMC *self)
+{
+    typedef long(* func_t)(int *, int *, long);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0; int i_0;
+    PMC *t_1; int i_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPI", &t_0, &t_1, &t_2);
+    i_0 = VTABLE_get_integer(interp, t_0);i_1 = VTABLE_get_integer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (long)(*fn_pointer)(&i_0, &i_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    VTABLE_set_integer_native(interp, t_0, i_0);
+VTABLE_set_integer_native(interp, t_1, i_1);
+
+}
+static void
+pcf_p_(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)();
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    ;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)();
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+}
+static void
+pcf_p_B(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(char **);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    char *t_0; STRING *ts_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_0);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *) NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(&t_0);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+}
+static void
+pcf_p_b(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    STRING *t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(Buffer_bufstart(t_0));
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+}
+static void
+pcf_p_Jt(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(PARROT_INTERP, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    char *t_1; STRING *ts_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_1);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(interp, t_1);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_p_i(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    INTVAL t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+}
+static void
+pcf_p_ii(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, t_1);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+}
+static void
+pcf_p_iiii(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIII", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, t_1, t_2, t_3);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+
+}
+static void
+pcf_p_iiiiii(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(int, int, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, t_1, t_2, t_3, t_4, t_5);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+
+
+
+}
+static void
+pcf_p_iiiiiiii(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(int, int, int, int, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    INTVAL t_6;
+    INTVAL t_7;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IIIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, t_1, t_2, t_3, t_4, t_5, t_6, t_7);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+
+
+
+
+
+}
+static void
+pcf_p_pii(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+}
+static void
+pcf_p_piiii(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIIII", &t_0, &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+
+
+}
+static void
+pcf_p_t(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    char *t_0; STRING *ts_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_0);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+}
+static void
+pcf_p_tpp(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(char *, void *, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    char *t_0; STRING *ts_0;
+    PMC *t_1;
+    PMC *t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SPP", &ts_0, &t_1, &t_2);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2));
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+
+
+}
+static void
+pcf_p_ttttttt(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(char *, char *, char *, char *, char *, char *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    char *t_0; STRING *ts_0;
+    char *t_1; STRING *ts_1;
+    char *t_2; STRING *ts_2;
+    char *t_3; STRING *ts_3;
+    char *t_4; STRING *ts_4;
+    char *t_5; STRING *ts_5;
+    char *t_6; STRING *ts_6;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SSSSSSS", &ts_0, &ts_1, &ts_2, &ts_3, &ts_4, &ts_5, &ts_6);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;t_3 = ts_3 ? Parrot_str_to_cstring(interp, ts_3) : (char *)NULL;t_4 = ts_4 ? Parrot_str_to_cstring(interp, ts_4) : (char *)NULL;t_5 = ts_5 ? Parrot_str_to_cstring(interp, ts_5) : (char *)NULL;t_6 = ts_6 ? Parrot_str_to_cstring(interp, ts_6) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, t_1, t_2, t_3, t_4, t_5, t_6);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+if (t_1) Parrot_str_free_cstring(t_1);
+if (t_2) Parrot_str_free_cstring(t_2);
+if (t_3) Parrot_str_free_cstring(t_3);
+if (t_4) Parrot_str_free_cstring(t_4);
+if (t_5) Parrot_str_free_cstring(t_5);
+if (t_6) Parrot_str_free_cstring(t_6);
+}
+static void
+pcf_s_(PARROT_INTERP, PMC *self)
+{
+    typedef short(* func_t)();
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    ;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (short)(*fn_pointer)();
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+}
+static void
+pcf_t_(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)();
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    ;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)();
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+}
+static void
+pcf_t_i(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    INTVAL t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(t_0);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+}
+static void
+pcf_t_ii(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(t_0, t_1);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+
+}
+static void
+pcf_t_pi(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    PMC *t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+
+}
+static void
+pcf_t_pii(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(void *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+
+
+}
+static void
+pcf_t_t(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    char *t_0; STRING *ts_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_0);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(t_0);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+}
+static void
+pcf_t_tl4(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(char *, long, long *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    char *t_0; STRING *ts_0;
+    INTVAL t_1;
+    PMC *t_2; long i_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SIP", &ts_0, &t_1, &t_2);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;i_2 = VTABLE_get_integer(interp, t_2);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(t_0, t_1, &i_2);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+
+VTABLE_set_integer_native(interp, t_2, i_2);
+}
+static void
+pcf_t_t4(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(char *, long *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    char *t_0; STRING *ts_0;
+    PMC *t_1; long i_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SP", &ts_0, &t_1);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;i_1 = VTABLE_get_integer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(t_0, &i_1);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+VTABLE_set_integer_native(interp, t_1, i_1);
+}
+static void
+pcf_i_sc(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(short, char);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_s_sc(PARROT_INTERP, PMC *self)
+{
+    typedef short(* func_t)(short, char);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (short)(*fn_pointer)(t_0, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_c_sc(PARROT_INTERP, PMC *self)
+{
+    typedef char(* func_t)(short, char);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "II", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char)(*fn_pointer)(t_0, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_i_iii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "III", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_i3(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int, int *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_0;
+    PMC *t_1; int i_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
+    i_1 = VTABLE_get_integer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, &i_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+VTABLE_set_integer_native(interp, t_1, i_1);
+}
+static void
+pcf_t_b(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    STRING *t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(Buffer_bufstart(t_0));
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    
+}
+static void
+pcf_t_B(PARROT_INTERP, PMC *self)
+{
+    typedef char *(* func_t)(char **);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    char * return_data;
+STRING *final_destination;
+
+    char *t_0; STRING *ts_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_0);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *) NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (char *)(*fn_pointer)(&t_0);
+    final_destination = Parrot_str_new(interp, return_data, 0);
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "S", final_destination);
+    if (t_0) Parrot_str_free_cstring(t_0);
+}
+static void
+pcf_v_P(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(t_0);
+    
+    
+}
+static void
+pcf_v_pP(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1);
+    
+    
+
+}
+static void
+pcf_p_ip(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(int, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    INTVAL t_0;
+    PMC *t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "IP", &t_0, &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(t_0, PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1));
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+}
+static void
+pcf_i_33(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(int *, int *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0; int i_0;
+    PMC *t_1; int i_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PP", &t_0, &t_1);
+    i_0 = VTABLE_get_integer(interp, t_0);i_1 = VTABLE_get_integer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(&i_0, &i_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    VTABLE_set_integer_native(interp, t_0, i_0);
+VTABLE_set_integer_native(interp, t_1, i_1);
+}
+static void
+pcf_v_pii(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PII", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_v_JO(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(PARROT_INTERP, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(interp, t_1);
+    
+    
+
+}
+static void
+pcf_i_JO(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "Pi", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_i_JOi(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    INTVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiI", &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_JOt(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, PMC *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC * t_1;
+    char *t_2; STRING *ts_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PiS", &t_1, &ts_2);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_i_Jt(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    char *t_1; STRING *ts_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "S", &ts_1);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+}
+static void
+pcf_i_Ji(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(PARROT_INTERP, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "I", &t_1);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(interp, t_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+}
+static void
+pcf_v_Vi(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void **, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0; void *v_0;
+    INTVAL t_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PI", &t_0, &t_1);
+    v_0 = VTABLE_get_pointer(interp, t_0);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(&v_0, t_1);
+    
+    VTABLE_set_pointer(interp, t_0, v_0);
+
+}
+static void
+pcf_p_ppiii(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, void *, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    PMC *t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPIII", &t_0, &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, t_4);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+
+
+}
+static void
+pcf_p_ppiiiiiii(PARROT_INTERP, PMC *self)
+{
+    typedef void *(* func_t)(void *, void *, int, int, int, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+PMC * final_destination = PMCNULL;
+
+    PMC *t_0;
+    PMC *t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    INTVAL t_6;
+    INTVAL t_7;
+    INTVAL t_8;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPIIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7, &t_8);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (void *)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, t_4, t_5, t_6, t_7, t_8);
+    if (return_data != NULL) {
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+                             VTABLE_set_pointer(interp, final_destination, return_data);
+                          }
+                          Parrot_pcc_fill_returns_from_c_args(interp, call_object, "P", final_destination);
+    
+
+
+
+
+
+
+
+
+}
+static void
+pcf_i_ppii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPII", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_ppiii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPIII", &t_0, &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+}
+static void
+pcf_i_ppiiii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, t_4, t_5);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+
+}
+static void
+pcf_i_ppiiiii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, int, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    INTVAL t_6;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, t_4, t_5, t_6);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+
+
+}
+static void
+pcf_i_ppiiiiii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, int, int, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    INTVAL t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    INTVAL t_6;
+    INTVAL t_7;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2, t_3, t_4, t_5, t_6, t_7);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+
+
+
+}
+static void
+pcf_i_ppt(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, char *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    char *t_2; STRING *ts_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPS", &t_0, &t_1, &ts_2);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+}
+static void
+pcf_i_pppi(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, void *, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    PMC *t_2;
+    INTVAL t_3;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPI", &t_0, &t_1, &t_2, &t_3);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), t_3);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+}
+static void
+pcf_i_pppii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, void *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    PMC *t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPII", &t_0, &t_1, &t_2, &t_3, &t_4);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), t_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+}
+static void
+pcf_i_pppiiii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, void *, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    PMC *t_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    INTVAL t_6;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), t_3, t_4, t_5, t_6);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+
+
+}
+static void
+pcf_i_ppppiiiiii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, void *, void *, void *, int, int, int, int, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    PMC *t_1;
+    PMC *t_2;
+    PMC *t_3;
+    INTVAL t_4;
+    INTVAL t_5;
+    INTVAL t_6;
+    INTVAL t_7;
+    INTVAL t_8;
+    INTVAL t_9;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPPPIIIIII", &t_0, &t_1, &t_2, &t_3, &t_4, &t_5, &t_6, &t_7, &t_8, &t_9);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), PMC_IS_NULL((PMC*)t_1) ? (void *)NULL : VTABLE_get_pointer(interp, t_1), PMC_IS_NULL((PMC*)t_2) ? (void *)NULL : VTABLE_get_pointer(interp, t_2), PMC_IS_NULL((PMC*)t_3) ? (void *)NULL : VTABLE_get_pointer(interp, t_3), t_4, t_5, t_6, t_7, t_8, t_9);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+
+
+
+
+
+
+
+}
+static void
+pcf_v_fff(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(float, float, float);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    FLOATVAL t_0;
+    FLOATVAL t_1;
+    FLOATVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "NNN", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(t_0, t_1, t_2);
+    
+    
+
+
+}
+static void
+pcf_v_V(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void **);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0; void *v_0;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "P", &t_0);
+    v_0 = VTABLE_get_pointer(interp, t_0);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(&v_0);
+    
+    VTABLE_set_pointer(interp, t_0, v_0);
+}
+static void
+pcf_v_VVV(PARROT_INTERP, PMC *self)
+{
+    typedef void(* func_t)(void **, void **, void **);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    void * return_data;
+
+    PMC *t_0; void *v_0;
+    PMC *t_1; void *v_1;
+    PMC *t_2; void *v_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PPP", &t_0, &t_1, &t_2);
+    v_0 = VTABLE_get_pointer(interp, t_0);v_1 = VTABLE_get_pointer(interp, t_1);v_2 = VTABLE_get_pointer(interp, t_2);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+     (*fn_pointer)(&v_0, &v_1, &v_2);
+    
+    VTABLE_set_pointer(interp, t_0, v_0);
+VTABLE_set_pointer(interp, t_1, v_1);
+VTABLE_set_pointer(interp, t_2, v_2);
+}
+static void
+pcf_i_tV(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(char *, void **);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    char *t_0; STRING *ts_0;
+    PMC *t_1; void *v_1;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "SP", &ts_0, &t_1);
+    t_0 = ts_0 ? Parrot_str_to_cstring(interp, ts_0) : (char *)NULL;v_1 = VTABLE_get_pointer(interp, t_1);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(t_0, &v_1);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    if (t_0) Parrot_str_free_cstring(t_0);
+VTABLE_set_pointer(interp, t_1, v_1);
+}
+static void
+pcf_i_ptiVp(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, char *, int, void **, void *);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    char *t_1; STRING *ts_1;
+    INTVAL t_2;
+    PMC *t_3; void *v_3;
+    PMC *t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PSIPP", &t_0, &ts_1, &t_2, &t_3, &t_4);
+    t_1 = ts_1 ? Parrot_str_to_cstring(interp, ts_1) : (char *)NULL;v_3 = VTABLE_get_pointer(interp, t_3);
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, &v_3, PMC_IS_NULL((PMC*)t_4) ? (void *)NULL : VTABLE_get_pointer(interp, t_4));
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+if (t_1) Parrot_str_free_cstring(t_1);
+
+VTABLE_set_pointer(interp, t_3, v_3);
+
+}
+static void
+pcf_i_pid(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, double);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    FLOATVAL t_2;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PIN", &t_0, &t_1, &t_2);
+    
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+
+}
+static void
+pcf_i_pitii(PARROT_INTERP, PMC *self)
+{
+    typedef int(* func_t)(void *, int, char *, int, int);
+    func_t fn_pointer;
+    void *orig_func;
+    PMC *ctx         = CURRENT_CONTEXT(interp);
+    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
+    INTVAL return_data;
+
+    PMC *t_0;
+    INTVAL t_1;
+    char *t_2; STRING *ts_2;
+    INTVAL t_3;
+    INTVAL t_4;
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "PISII", &t_0, &t_1, &ts_2, &t_3, &t_4);
+    t_2 = ts_2 ? Parrot_str_to_cstring(interp, ts_2) : (char *)NULL;
+    GETATTR_NCI_orig_func(interp, self, orig_func);
+    fn_pointer = (func_t)D2FPTR(orig_func);
+    return_data =  (int)(*fn_pointer)(PMC_IS_NULL((PMC*)t_0) ? (void *)NULL : VTABLE_get_pointer(interp, t_0), t_1, t_2, t_3, t_4);
+    Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);
+    
+
+if (t_2) Parrot_str_free_cstring(t_2);
+
+
+}
+
+
+ void
+Parrot_nci_load_extra_thunks(PARROT_INTERP)
+{
+    PMC        *iglobals;
+    PMC        *temp_pmc;
+
+    PMC        *HashPointer   = NULL;
+
+    iglobals = interp->iglobals;
+    if (PMC_IS_NULL(iglobals))
+        PANIC(interp, "iglobals isn't created yet");
+
+    HashPointer = VTABLE_get_pmc_keyed_int(interp, iglobals,
+            IGLOBALS_NCI_FUNCS);
+    if (PMC_IS_NULL(HashPointer))
+        PANIC(interp, "iglobals.nci_funcs isn't created yet");
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_J);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJ"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ip);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iip"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JPip);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJPip"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JpP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJpP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_Jpii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJpii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_p);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ip"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_tp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "itp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_J);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pJ"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_Jp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pJp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_J);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tJ"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_Jpti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tJpti"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_p);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_pt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tpt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_p);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pit);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpit"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_ptt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vptt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_Jtiiipt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJtiiipt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_JttPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pJttPP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_Jtpi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJtpi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_Vppp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iVppp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JpPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJpPP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_Jpt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJpt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "v"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_Jiiip);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJiiip"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_i);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_ii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_illllllll);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "villllllll"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_l);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vl"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pbip);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpbip"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_piiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpiiii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pl);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpl"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJPP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJPP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JO);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJO"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_S_JO);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "SJO"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_P);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOPP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOPPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOPPP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOPP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOPPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOPPP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOPPPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOPPPP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOPPPPP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOPPPPP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JOSI);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJOSI"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOSII);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOSII"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_p3);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tp3"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pp3p);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipp3p"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pp3);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipp3"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppd);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippd"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ptii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iptii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pipi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipipi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_ptti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tptti"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_pti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tpti"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_pttti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tpttti"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_Ji);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pJi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_Jipp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pJipp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_Jbip);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pJbip"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_Jp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJS"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_tt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ttt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JOt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJOt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOSI);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOSI"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_S_JOi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "SJOi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_I_JO);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "IJO"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_N_JO);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "NJO"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JON);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJON"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JOI);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJOI"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOI);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOI"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_P_JOIS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "PJOIS"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_S_JOSP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "SJOSP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "i"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_i3i);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ii3i"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ibi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iibi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_lttl);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "llttl"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pip);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipip"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piS);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiS"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_S_i);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "Si"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_p);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "lp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_c_p);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "cp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_p);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pttttt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipttttt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_c_pttt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "cpttt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pttttiti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppttttiti"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ptl);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iptl"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pl);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipl"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "l"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ptt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pptt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pit);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipit"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_ttl);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "lttl"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_pttl);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "lpttl"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_t);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pttttitl);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppttttitl"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_tiB3P);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ptiB3P"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_tip3P);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ptip3P"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pPtiiipi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipPtiiipi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_tpiibi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "itpiibi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ptippppi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pptippppi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pi33ipi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppi33ipi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pttip);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppttip"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ptipppi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pptipppi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ppP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pppP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_iiil);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "piiil"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppl);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippl"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pip);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpip"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppti"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ptii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pptii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pti"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ptp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pptp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pt33);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipt33"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_c_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "c"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_c_pi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "cpi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_d_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "d"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_d_d);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "dd"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_f_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "f"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_f_ff);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "fff"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_f_is);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "fis"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_b);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ib"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_d);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "id"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_i);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ii4);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iii4"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ii4i);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iii4i"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiiii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iiilsp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiiilsp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iil);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiil"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iili);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiili"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iip);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiip"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iit);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiit"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iiti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiiti"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ilsp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iilsp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiti"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_l);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "il"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_li);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ili"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_lp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ilp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_lsp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ilsp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_p33);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ip33"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_p333);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ip333"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_p333333);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ip333333"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_p4);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ip4"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_p42p);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ip42p"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_p4i);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ip4i"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pb);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipb"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pii4);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipii4"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pii4i);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipii4i"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piiiiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiiiiii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piiilsp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiiilsp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piil);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiil"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piili);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiili"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piit);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiit"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_piiti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipiiti"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pilsp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipilsp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pli);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipli"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pll);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipll"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pllllllll);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipllllllll"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_plp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iplp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_plsp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iplsp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppiiiiiiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippiiiiiiii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pppp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipppp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_psp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipsp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipti"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pitl);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipitl"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_s);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "is"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_s22);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "is22"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_s222);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "is222"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_sp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "isp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_sss);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "isss"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ssss);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "issss"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_t);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "it"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ti);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iti"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_4);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "i4"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_4i);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "i4i"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_42p);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "i42p"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_ii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "lii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_l4);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ll4"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_pi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "lpi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_pii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "lpii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_p33l);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "lp33l"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_l_33l);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "l33l"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "p"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_B);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pB"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_b);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pb"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_Jt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pJt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_i);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_iiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "piiii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_iiiiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "piiiiii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_iiiiiiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "piiiiiiii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_pii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_piiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ppiiii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_t);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_tpp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ptpp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ttttttt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pttttttt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_s_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "s"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "t"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_i);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ti"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_ii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_pi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tpi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_pii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tpii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_t);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_tl4);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ttl4"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_t4);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tt4"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_sc);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "isc"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_s_sc);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ssc"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_c_sc);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "csc"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_iii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iiii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_i3);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ii3"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_b);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tb"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_t_B);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "tB"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_P);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pP);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpP"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ip);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pip"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_33);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "i33"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_pii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vpii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_JO);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vJO"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JO);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJO"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JOi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJOi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_JOt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJOt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_Jt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_Ji);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iJi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_Vi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vVi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ppiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pppiii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_p_ppiiiiiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "pppiiiiiii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippiii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppiiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippiiii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppiiiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippiiiii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppiiiiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippiiiiii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppt);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippt"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pppi);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipppi"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pppii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipppii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pppiiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipppiiii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ppppiiiiii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ippppiiiiii"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_fff);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vfff"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_V);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vV"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_v_VVV);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "vVVV"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_tV);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "itV"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_ptiVp);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "iptiVp"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pid);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipid"), temp_pmc);
+
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    VTABLE_set_pointer(interp, temp_pmc, (void *)pcf_i_pitii);
+    VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "ipitii"), temp_pmc);
+
+}
+
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
+

Copied: branches/tt362/src/nci/extra_thunks.nci (from r44202, trunk/src/nci/extra_thunks.nci)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/tt362/src/nci/extra_thunks.nci	Fri Feb 19 22:23:20 2010	(r44203, copy of r44202, trunk/src/nci/extra_thunks.nci)
@@ -0,0 +1,465 @@
+# Copyright (C) 2002-2010, Parrot Foundation.
+
+# 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
+
+# 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/tt362/src/nci_test.c
==============================================================================
--- branches/tt362/src/nci_test.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/nci_test.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -67,7 +67,7 @@
 /* Function declarations.
 
 *** If you add a new test function here,
-*** please update src/libnci_test.def and src/call_list.txt too. ***
+*** please update src/libnci_test.def and src/nci/extra_thunks.nci too. ***
 
 */
 

Modified: branches/tt362/src/oo.c
==============================================================================
--- branches/tt362/src/oo.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/oo.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -152,35 +152,6 @@
 
 /*
 
-=item C<PMC * Parrot_oo_get_namespace(PARROT_INTERP, const PMC *classobj)>
-
-Lookup a namespace object from a class PMC.
-
-This function is deprecated, see TT #1069.
-Use the inspect interface in the Class PMC instead.
-
-=cut
-
-*/
-
-PARROT_CAN_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-PMC *
-Parrot_oo_get_namespace(SHIM_INTERP, ARGIN(const PMC *classobj))
-{
-    ASSERT_ARGS(Parrot_oo_get_namespace)
-    Parrot_Class_attributes * const _class     = PARROT_CLASS(classobj);
-    PMC          * const _namespace = _class->_namespace;
-
-    if (PMC_IS_NULL(_namespace))
-        return PMCNULL;
-
-    return _namespace;
-}
-
-
-/*
-
 =item C<PMC * Parrot_oo_get_class(PARROT_INTERP, PMC *key)>
 
 Lookup a class object from a namespace, string, or key PMC.
@@ -236,9 +207,9 @@
         if (base_type == enum_class_Key
          || base_type == enum_class_ResizableStringArray
          || base_type == enum_class_String)
-            type = pmc_type_p(interp, key);
+            type = Parrot_pmc_get_type(interp, key);
         else
-            type = pmc_type(interp, VTABLE_get_string(interp, key));
+            type = Parrot_pmc_get_type_str(interp, VTABLE_get_string(interp, key));
 
         classobj = get_pmc_proxy(interp, type);
     }
@@ -280,7 +251,7 @@
     }
     else {
         obj    = PARROT_OBJECT(pmc);
-        cloned = pmc_new_noinit(interp, enum_class_Object);
+        cloned = Parrot_pmc_new_noinit(interp, enum_class_Object);
     }
 
     _class = PARROT_CLASS(obj->_class);
@@ -371,9 +342,9 @@
 
         /* Create proxy if not found */
         if (PMC_IS_NULL(proxy)) {
-            PMC * const type_num = pmc_new(interp, enum_class_Integer);
+            PMC * const type_num = Parrot_pmc_new(interp, enum_class_Integer);
             VTABLE_set_integer_native(interp, type_num, type);
-            proxy = pmc_new_init(interp, enum_class_PMCProxy, type_num);
+            proxy = Parrot_pmc_new_init(interp, enum_class_PMCProxy, type_num);
             Parrot_pcc_invoke_method_from_c_args(interp, pmc_ns, CONST_STRING(interp, "set_class"), "P->", proxy);
         }
         return proxy;
@@ -411,7 +382,7 @@
 
         /* If not found, check for a PMC */
         if (PMC_IS_NULL(_class))
-            return get_pmc_proxy(interp, pmc_type(interp, name));
+            return get_pmc_proxy(interp, Parrot_pmc_get_type_str(interp, name));
         else
             return _class;
     }
@@ -434,14 +405,14 @@
 Parrot_oo_newclass_from_str(PARROT_INTERP, ARGIN(STRING *name))
 {
     ASSERT_ARGS(Parrot_oo_newclass_from_str)
-    PMC * const namearg  = pmc_new(interp, enum_class_String);
-    PMC * const namehash = pmc_new(interp, enum_class_Hash);
+    PMC * const namearg  = Parrot_pmc_new(interp, enum_class_String);
+    PMC * const namehash = Parrot_pmc_new(interp, enum_class_Hash);
     PMC        *classobj;
 
     VTABLE_set_string_native(interp, namearg, name);
     VTABLE_set_pmc_keyed_str(interp, namehash, CONST_STRING(interp, "name"), namearg);
 
-    classobj = pmc_new_init(interp, enum_class_Class, namehash);
+    classobj = Parrot_pmc_new_init(interp, enum_class_Class, namehash);
 
     PARROT_ASSERT(classobj);
     return classobj;
@@ -516,7 +487,7 @@
                 break;
         }
         if (PMC_IS_NULL(result))
-            result = pmc_new(interp, enum_class_Undef);
+            result = Parrot_pmc_new(interp, enum_class_Undef);
         VTABLE_set_pmc_keyed_str(interp, _class->parent_overrides, name, result);
     }
     if (result->vtable->base_type == enum_class_Undef)
@@ -678,12 +649,12 @@
      * pt_shared_fixup() can safely do a type lookup. */
     LOCK_INTERPRETER(interp);
     {
-        type = get_new_vtable_index(interp);
+        type = Parrot_pmc_get_new_vtable_index(interp);
     }
     {
         if (!typeid_exists) {
             PMC * const classname_hash = interp->class_hash;
-            PMC * const item           = pmc_new(interp, enum_class_Integer);
+            PMC * const item           = Parrot_pmc_new(interp, enum_class_Integer);
             /* set entry in name->type hash */
             VTABLE_set_integer_native(interp, item, type);
 
@@ -874,7 +845,7 @@
         return;
     }
 
-    type = pmc_type(interp, _class);
+    type = Parrot_pmc_get_type_str(interp, _class);
 
     if (type == 0)
         invalidate_all_caches(interp);
@@ -1159,7 +1130,7 @@
 
     /* If we never found any candidates, return an empty list. */
     if (cand_count == 0)
-        return pmc_new(interp, enum_class_ResizablePMCArray);
+        return Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
 
     /* If we didn't find anything to accept, error. */
     if (PMC_IS_NULL(accepted))
@@ -1229,7 +1200,7 @@
 
     if (parent_count == 0) {
         /* No parents - MRO just contains this class. */
-        result = pmc_new(interp, enum_class_ResizablePMCArray);
+        result = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
         VTABLE_push_pmc(interp, result, _class);
         return result;
     }
@@ -1246,7 +1217,7 @@
 
         /* instantiated lazily */
         if (PMC_IS_NULL(merge_list))
-            merge_list = pmc_new(interp, enum_class_ResizablePMCArray);
+            merge_list = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
 
         VTABLE_push_pmc(interp, merge_list, lin);
     }
@@ -1318,7 +1289,7 @@
     /* We need to check for conflicts before we do the composition. We
      * put each method that would be OK to add into a proposal list, and
      * bail out right away if we find a problem. */
-    proposed_add_methods = pmc_new(interp, enum_class_Hash);
+    proposed_add_methods = Parrot_pmc_new(interp, enum_class_Hash);
     methods_iter         = VTABLE_get_iter(interp, methods);
 
     while (VTABLE_get_bool(interp, methods_iter)) {

Modified: branches/tt362/src/ops/bit.ops
==============================================================================
--- branches/tt362/src/ops/bit.ops	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/ops/bit.ops	Fri Feb 19 22:23:20 2010	(r44203)
@@ -172,7 +172,7 @@
 
 inline op bnot(out PMC, invar PMC) :base_core {
     const INTVAL a = VTABLE_get_integer(interp, $2);
-    PMC * const b = pmc_new(interp, VTABLE_type(interp, $2));
+    PMC * const b = Parrot_pmc_new(interp, VTABLE_type(interp, $2));
     VTABLE_set_integer_native(interp, b, ~a);
     $1 = b;
 }

Modified: branches/tt362/src/ops/cmp.ops
==============================================================================
--- branches/tt362/src/ops/cmp.ops	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/ops/cmp.ops	Fri Feb 19 22:23:20 2010	(r44203)
@@ -87,15 +87,15 @@
 }
 
 op eq(invar PMC, in INT, inconst LABEL) :base_core {
-    PMC * temp = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, $2);
 
     if (VTABLE_is_equal(interp, $1, temp)) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         goto OFFSET($3);
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 }
 
 op eq(invar PMC, in NUM, inconst LABEL) :base_core {
@@ -193,15 +193,15 @@
 }
 
 op ne(invar PMC, in INT, inconst LABEL) :base_core {
-    PMC * temp = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, $2);
 
     if (!VTABLE_is_equal(interp, $1, temp)) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         goto OFFSET($3);
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 }
 
 op ne(invar PMC, in NUM, inconst LABEL) :base_core {
@@ -289,15 +289,15 @@
 }
 
 op lt(invar PMC, in INT, inconst LABEL) :base_core {
-    PMC * temp  = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp  = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, $2);
 
     if (VTABLE_cmp(interp, $1, temp) < 0) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         goto OFFSET($3);
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 }
 
 op lt(invar PMC, in NUM, inconst LABEL) :base_core {
@@ -373,15 +373,15 @@
 }
 
 op le(invar PMC, in INT, inconst LABEL) :base_core {
-    PMC * temp  = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp  = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, $2);
 
     if (VTABLE_cmp(interp, $1, temp) <= 0) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         goto OFFSET($3);
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 }
 
 op le(invar PMC, in NUM, inconst LABEL) :base_core {
@@ -433,15 +433,15 @@
 }
 
 op gt(invar PMC, in INT, inconst LABEL) :base_core {
-    PMC * temp  = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp  = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, $2);
 
     if (VTABLE_cmp(interp, $1, temp) > 0) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         goto OFFSET($3);
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 }
 
 op gt(invar PMC, in NUM, inconst LABEL) :base_core {
@@ -493,15 +493,15 @@
 }
 
 op ge(invar PMC, in INT, inconst LABEL) :base_core {
-    PMC * temp  = temporary_pmc_new(interp, enum_class_Integer);
+    PMC * temp  = Parrot_pmc_new_temporary(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, temp, $2);
 
     if (VTABLE_cmp(interp, $1, temp) >= 0) {
-        temporary_pmc_free(interp, temp);
+        Parrot_pmc_free_temporary(interp, temp);
         goto OFFSET($3);
     }
 
-    temporary_pmc_free(interp, temp);
+    Parrot_pmc_free_temporary(interp, temp);
 }
 
 op ge(invar PMC, in NUM, inconst LABEL) :base_core {

Modified: branches/tt362/src/ops/core.ops
==============================================================================
--- branches/tt362/src/ops/core.ops	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/ops/core.ops	Fri Feb 19 22:23:20 2010	(r44203)
@@ -606,7 +606,7 @@
 
     /* If no elements, hand back empty array; otherwise PMC. */
     if (!sig)
-        $1 = pmc_new(interp, enum_class_FixedIntegerArray);
+        $1 = Parrot_pmc_new(interp, enum_class_FixedIntegerArray);
     else
         $1 = sig;
 }
@@ -758,7 +758,7 @@
 =cut
 
 inline op push_eh(inconst LABEL) {
-    PMC * const eh = pmc_new(interp, enum_class_ExceptionHandler);
+    PMC * const eh = Parrot_pmc_new(interp, enum_class_ExceptionHandler);
     VTABLE_set_pointer(interp, eh, CUR_OPCODE + $1);
     Parrot_cx_add_handler_local(interp, eh);
 }
@@ -874,7 +874,7 @@
 }
 
 inline op pushmark(in INT) {
-    PMC * const newint = pmc_new(interp, enum_class_Integer);
+    PMC * const newint = Parrot_pmc_new(interp, enum_class_Integer);
     VTABLE_set_integer_native(interp, newint, $1);
     VTABLE_push_pmc(interp, interp->dynamic_env, newint);
 }
@@ -1319,10 +1319,10 @@
         const char * err = Parrot_dlerror();
         Parrot_warn(interp, PARROT_WARNINGS_UNDEF_FLAG,
                 "Symbol '%s' not found: %s\n", name, err ? err : "unknown reason");
-        $1 = pmc_new(interp, enum_class_Undef);
+        $1 = Parrot_pmc_new(interp, enum_class_Undef);
     }
     else {
-        $1 = pmc_new(interp, enum_class_NCI);
+        $1 = Parrot_pmc_new(interp, enum_class_NCI);
         VTABLE_set_pointer_keyed_str(interp, $1, $4, F2DPTR(p));
         PObj_get_FLAGS($1) |= PObj_private1_FLAG;
     }
@@ -1342,12 +1342,12 @@
         const char * const err = Parrot_dlerror();
         Parrot_warn(interp, PARROT_WARNINGS_UNDEF_FLAG,
                 "Symbol '%s' not found: %s\n", name, err ? err : "unknown reason");
-        $1 = pmc_new(interp, enum_class_Undef);
+        $1 = Parrot_pmc_new(interp, enum_class_Undef);
     }
     else {
         /* At this point we have the symbol's address. We just need to build
            a PMC with it so we can get and set the value */
-        $1 = pmc_new(interp, enum_class_UnManagedStruct);
+        $1 = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
         VTABLE_set_pointer(interp, $1, p);
     }
     Parrot_str_free_cstring(name);
@@ -1399,7 +1399,7 @@
                 cur_pos, NULL);
     }
     else {
-        $1 = pmc_new(interp, enum_class_Hash);
+        $1 = Parrot_pmc_new(interp, enum_class_Hash);
     }
     goto NEXT();
 }

Modified: branches/tt362/src/ops/experimental.ops
==============================================================================
--- branches/tt362/src/ops/experimental.ops	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/ops/experimental.ops	Fri Feb 19 22:23:20 2010	(r44203)
@@ -98,7 +98,7 @@
         if (!PMC_IS_NULL(classobj))
             $1 = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, $4);
+            const INTVAL type = Parrot_pmc_get_type(interp, $4);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, expr NEXT(), EXCEPTION_NO_CLASS,
@@ -106,7 +106,7 @@
                 goto ADDRESS(dest);
             }
 
-            $1 = pmc_new(interp, type);
+            $1 = Parrot_pmc_new(interp, type);
         }
     }
 }
@@ -118,7 +118,7 @@
         if (!PMC_IS_NULL(classobj))
             $1 = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, $4);
+            const INTVAL type = Parrot_pmc_get_type(interp, $4);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, expr NEXT(), EXCEPTION_NO_CLASS,
@@ -126,7 +126,7 @@
                 goto ADDRESS(dest);
             }
 
-            $1 = pmc_new(interp, type);
+            $1 = Parrot_pmc_new(interp, type);
         }
     }
 }
@@ -138,7 +138,7 @@
         if (!PMC_IS_NULL(classobj))
             $1 = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, $4);
+            const INTVAL type = Parrot_pmc_get_type(interp, $4);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, expr NEXT(), EXCEPTION_NO_CLASS,
@@ -146,7 +146,7 @@
                 goto ADDRESS(dest);
             }
 
-            $1 = pmc_new(interp, type);
+            $1 = Parrot_pmc_new(interp, type);
         }
     }
 }
@@ -175,7 +175,7 @@
         if (!PMC_IS_NULL(classobj))
             $1 = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, $4);
+            const INTVAL type = Parrot_pmc_get_type(interp, $4);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, expr NEXT(), EXCEPTION_NO_CLASS,
@@ -183,7 +183,7 @@
                 goto ADDRESS(dest);
             }
 
-            $1 = pmc_new(interp, type);
+            $1 = Parrot_pmc_new(interp, type);
         }
         VTABLE_set_pmc_keyed(interp, $2, $3, $1);
     }
@@ -197,7 +197,7 @@
         if (!PMC_IS_NULL(classobj))
             $1 = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, $4);
+            const INTVAL type = Parrot_pmc_get_type(interp, $4);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, expr NEXT(), EXCEPTION_NO_CLASS,
@@ -205,7 +205,7 @@
                 goto ADDRESS(dest);
             }
 
-            $1 = pmc_new(interp, type);
+            $1 = Parrot_pmc_new(interp, type);
         }
 
         VTABLE_set_pmc_keyed_int(interp, $2, $3, $1);
@@ -220,7 +220,7 @@
         if (!PMC_IS_NULL(classobj))
             $1 = VTABLE_instantiate(interp, classobj, PMCNULL);
         else {
-            const INTVAL type = pmc_type_p(interp, $4);
+            const INTVAL type = Parrot_pmc_get_type(interp, $4);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
                     interp, expr NEXT(), EXCEPTION_NO_CLASS,
@@ -228,7 +228,7 @@
                 goto ADDRESS(dest);
             }
 
-            $1 = pmc_new(interp, type);
+            $1 = Parrot_pmc_new(interp, type);
         }
 
         VTABLE_set_pmc_keyed_str(interp, $2, $3, $1);

Modified: branches/tt362/src/ops/io.ops
==============================================================================
--- branches/tt362/src/ops/io.ops	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/ops/io.ops	Fri Feb 19 22:23:20 2010	(r44203)
@@ -54,7 +54,7 @@
 inline op fdopen(out PMC, in INT, in STR) :filesys_open {
     $1 = Parrot_io_fdopen(interp, PMCNULL, (PIOHANDLE)$2, $3);
     if (!$1)
-        $1 = pmc_new(interp, enum_class_Undef);
+        $1 = Parrot_pmc_new(interp, enum_class_Undef);
 }
 
 =item B<getstdin>(out PMC)

Modified: branches/tt362/src/ops/math.ops
==============================================================================
--- branches/tt362/src/ops/math.ops	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/ops/math.ops	Fri Feb 19 22:23:20 2010	(r44203)
@@ -205,7 +205,7 @@
 
     result = VTABLE_get_integer(interp, $2) % $3;
 
-    $1 = pmc_new(interp, VTABLE_type(interp, $2));
+    $1 = Parrot_pmc_new(interp, VTABLE_type(interp, $2));
     VTABLE_set_integer_native(interp, $1, result);
 }
 
@@ -222,7 +222,7 @@
 
     result = VTABLE_get_integer(interp, $2) % value;
 
-    $1 = pmc_new(interp, VTABLE_type(interp, $2));
+    $1 = Parrot_pmc_new(interp, VTABLE_type(interp, $2));
     VTABLE_set_integer_native(interp, $1, result);
 }
 
@@ -283,7 +283,7 @@
 
     result = fmod(VTABLE_get_integer(interp, $2), value);
 
-    $1 = pmc_new(interp, VTABLE_type(interp, $2));
+    $1 = Parrot_pmc_new(interp, VTABLE_type(interp, $2));
     VTABLE_set_integer_native(interp, $1, (INTVAL) result);
 }
 
@@ -816,9 +816,9 @@
     const FLOATVAL b = VTABLE_get_number(interp, $3);
     const FLOATVAL c = pow(a, b);
     if (PMC_IS_NULL($1))
-        $1 = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
+        $1 = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
     else
-        $1 = pmc_new(interp, $1->vtable->base_type);
+        $1 = Parrot_pmc_new(interp, $1->vtable->base_type);
     VTABLE_set_number_native(interp, $1, c);
 }
 
@@ -827,9 +827,9 @@
     const FLOATVAL b = (FLOATVAL)$3;
     const FLOATVAL c = pow(a, b);
     if (PMC_IS_NULL($1))
-        $1 = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
+        $1 = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
     else
-        $1 = pmc_new(interp, $1->vtable->base_type);
+        $1 = Parrot_pmc_new(interp, $1->vtable->base_type);
     VTABLE_set_number_native(interp, $1, c);
 }
 
@@ -837,9 +837,9 @@
     const FLOATVAL a = VTABLE_get_number(interp, $2);
     const FLOATVAL c = pow(a, $3);
     if (PMC_IS_NULL($1))
-        $1 = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
+        $1 = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
     else
-        $1 = pmc_new(interp, $1->vtable->base_type);
+        $1 = Parrot_pmc_new(interp, $1->vtable->base_type);
     VTABLE_set_number_native(interp, $1, c);
 }
 

Modified: branches/tt362/src/ops/object.ops
==============================================================================
--- branches/tt362/src/ops/object.ops	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/ops/object.ops	Fri Feb 19 22:23:20 2010	(r44203)
@@ -236,13 +236,13 @@
 =cut
 
 inline op newclass(out PMC, in STR) :object_classes {
-    PMC * const name = pmc_new(interp, enum_class_String);
+    PMC * const name = Parrot_pmc_new(interp, enum_class_String);
     VTABLE_set_string_native(interp, name, $2);
-    $1 = pmc_new_init(interp, enum_class_Class, name);
+    $1 = Parrot_pmc_new_init(interp, enum_class_Class, name);
 }
 
 inline op newclass(out PMC, in PMC) :object_classes {
-    $1 = pmc_new_init(interp, enum_class_Class, $2);
+    $1 = Parrot_pmc_new_init(interp, enum_class_Class, $2);
 }
 
 =item B<subclass>(out PMC, in PMC)
@@ -267,7 +267,7 @@
             "Class '%Ss' doesn't exist", VTABLE_get_string(interp, $2));
         goto ADDRESS(handler);
     }
-    $1 = pmc_new(interp, enum_class_Class);
+    $1 = Parrot_pmc_new(interp, enum_class_Class);
     VTABLE_add_parent(interp, $1, parent_class);
     goto ADDRESS(next);
 }
@@ -297,7 +297,7 @@
             "Class '%Ss' doesn't exist", VTABLE_get_string(interp, $2));
         goto ADDRESS(handler);
     }
-    $1 = pmc_new_init(interp, enum_class_Class, $3);
+    $1 = Parrot_pmc_new_init(interp, enum_class_Class, $3);
     VTABLE_add_parent(interp, $1, parent_class);
     goto ADDRESS(next);
 }
@@ -326,7 +326,7 @@
         goto ADDRESS(handler);
     }
 
-    $1 = pmc_new(interp, enum_class_Class);
+    $1 = Parrot_pmc_new(interp, enum_class_Class);
     VTABLE_add_parent(interp, $1, parent_class);
     goto ADDRESS(next);
 }
@@ -358,7 +358,7 @@
         goto ADDRESS(handler);
     }
 
-    $1 = pmc_new_init(interp, enum_class_Class, $3);
+    $1 = Parrot_pmc_new_init(interp, enum_class_Class, $3);
     VTABLE_add_parent(interp, $1, parent_class);
     goto ADDRESS(next);
 }

Modified: branches/tt362/src/ops/pmc.ops
==============================================================================
--- branches/tt362/src/ops/pmc.ops	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/ops/pmc.ops	Fri Feb 19 22:23:20 2010	(r44203)
@@ -58,14 +58,14 @@
     if (!PMC_IS_NULL(_class))
         $1 = VTABLE_instantiate(interp, _class, PMCNULL);
     else {
-        const INTVAL type = pmc_type(interp, name);
+        const INTVAL type = Parrot_pmc_get_type_str(interp, name);
         if (type <= 0) {
             opcode_t *dest = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", name);
             goto ADDRESS(dest);
         }
-        $1 = pmc_new(interp, type);
+        $1 = Parrot_pmc_new(interp, type);
     }
 }
 
@@ -78,14 +78,14 @@
     if (!PMC_IS_NULL(_class))
         $1 = VTABLE_instantiate(interp, _class, $3);
     else {
-        const INTVAL type = pmc_type(interp, name);
+        const INTVAL type = Parrot_pmc_get_type_str(interp, name);
         if (type <= 0) {
             opcode_t *dest = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", name);
             goto ADDRESS(dest);
         }
-        $1 = pmc_new_init(interp, type, $3);
+        $1 = Parrot_pmc_new_init(interp, type, $3);
     }
 }
 
@@ -96,14 +96,14 @@
     if (!PMC_IS_NULL(_class))
         $1 = VTABLE_instantiate(interp, _class, PMCNULL);
     else {
-        const INTVAL type = pmc_type_p(interp, name_key);
+        const INTVAL type = Parrot_pmc_get_type(interp, name_key);
         if (type <= 0) {
             opcode_t *dest = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));
             goto ADDRESS(dest);
         }
-        $1 = pmc_new(interp, type);
+        $1 = Parrot_pmc_new(interp, type);
     }
 }
 
@@ -114,14 +114,14 @@
     if (!PMC_IS_NULL(_class))
         $1 = VTABLE_instantiate(interp, _class, $3);
     else {
-        const INTVAL type = pmc_type_p(interp, name_key);
+        const INTVAL type = Parrot_pmc_get_type(interp, name_key);
         if (type <= 0) {
             opcode_t *dest = Parrot_ex_throw_from_op_args(interp, expr NEXT(),
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));
             goto ADDRESS(dest);
         }
-        $1 = pmc_new_init(interp, type, $3);
+        $1 = Parrot_pmc_new_init(interp, type, $3);
     }
 }
 
@@ -627,11 +627,11 @@
 =cut
 
 op register(invar PMC) {
-    gc_register_pmc(interp, $1);
+    Parrot_pmc_gc_register(interp, $1);
 }
 
 op unregister(invar PMC) {
-    gc_unregister_pmc(interp, $1);
+    Parrot_pmc_gc_unregister(interp, $1);
 }
 
 
@@ -648,17 +648,17 @@
 =cut
 
 op box(out PMC, in INT) {
-    $1 = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
+    $1 = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Integer));
     VTABLE_set_integer_native(interp, $1, $2);
 }
 
 op box(out PMC, in NUM) {
-    $1 = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
+    $1 = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_Float));
     VTABLE_set_number_native(interp, $1, $2);
 }
 
 op box(out PMC, in STR) {
-    $1 = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_String));
+    $1 = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_String));
     VTABLE_set_string_native(interp, $1, $2);
 }
 

Modified: branches/tt362/src/packfile.c
==============================================================================
--- branches/tt362/src/packfile.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/packfile.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -4053,11 +4053,11 @@
         opcode_t        op;
 
         if (tail) {
-            SETATTR_Key_next_key(interp, tail, constant_pmc_new(interp, pmc_enum));
+            SETATTR_Key_next_key(interp, tail, Parrot_pmc_new_constant(interp, pmc_enum));
             GETATTR_Key_next_key(interp, tail, tail);
         }
         else
-            head = tail = constant_pmc_new(interp, pmc_enum);
+            head = tail = Parrot_pmc_new_constant(interp, pmc_enum);
 
         op = PF_fetch_opcode(pf, &cursor);
 
@@ -4541,16 +4541,16 @@
 
     switch (type) {
       case PF_ANNOTATION_KEY_TYPE_INT:
-        result = pmc_new(interp, enum_class_Integer);
+        result = Parrot_pmc_new(interp, enum_class_Integer);
         VTABLE_set_integer_native(interp, result, value);
         break;
       case PF_ANNOTATION_KEY_TYPE_NUM:
-        result = pmc_new(interp, enum_class_Float);
+        result = Parrot_pmc_new(interp, enum_class_Float);
         VTABLE_set_number_native(interp, result,
                     PF_CONST(self->code, value)->u.number);
         break;
       default:
-        result = pmc_new(interp, enum_class_String);
+        result = Parrot_pmc_new(interp, enum_class_String);
         VTABLE_set_string_native(interp, result,
                     PF_CONST(self->code, value)->u.string);
     }
@@ -4622,7 +4622,7 @@
         }
 
         /* Create hash of values we have. */
-        result = pmc_new(interp, enum_class_Hash);
+        result = Parrot_pmc_new(interp, enum_class_Hash);
 
         for (i = 0; i < self->num_keys; i++) {
             if (have_values[i]) {

Modified: branches/tt362/src/pmc.c
==============================================================================
--- branches/tt362/src/pmc.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -46,7 +46,7 @@
         __attribute__nonnull__(1);
 
 PARROT_CANNOT_RETURN_NULL
-static PMC* pmc_reuse_no_init(PARROT_INTERP,
+static PMC* Parrot_pmc_reuse_noinit(PARROT_INTERP,
     ARGIN(PMC *pmc),
     INTVAL new_type,
     SHIM(UINTVAL flags))
@@ -59,7 +59,7 @@
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_get_new_pmc_header __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_pmc_reuse_no_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+#define ASSERT_ARGS_Parrot_pmc_reuse_noinit __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(pmc))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
@@ -72,7 +72,7 @@
 
 /*
 
-=item C<INTVAL PMC_is_null(PARROT_INTERP, const PMC *pmc)>
+=item C<INTVAL Parrot_pmc_is_null(PARROT_INTERP, const PMC *pmc)>
 
 Tests if the given pmc is null.
 
@@ -82,9 +82,9 @@
 
 PARROT_EXPORT
 INTVAL
-PMC_is_null(SHIM_INTERP, ARGIN_NULLOK(const PMC *pmc))
+Parrot_pmc_is_null(SHIM_INTERP, ARGIN_NULLOK(const PMC *pmc))
 {
-    ASSERT_ARGS(PMC_is_null)
+    ASSERT_ARGS(Parrot_pmc_is_null)
 #if PARROT_CATCH_NULL
     return pmc == PMCNULL || pmc == NULL;
 #else
@@ -135,7 +135,7 @@
 
 /*
 
-=item C<PMC * pmc_new(PARROT_INTERP, INTVAL base_type)>
+=item C<PMC * Parrot_pmc_new(PARROT_INTERP, INTVAL base_type)>
 
 Creates a new PMC of type C<base_type> (which is an index into the list of PMC
 types declared in C<vtables> in F<include/parrot/pmc.h>). Once the PMC has been
@@ -150,9 +150,9 @@
 PARROT_CANNOT_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
 PMC *
-pmc_new(PARROT_INTERP, INTVAL base_type)
+Parrot_pmc_new(PARROT_INTERP, INTVAL base_type)
 {
-    ASSERT_ARGS(pmc_new)
+    ASSERT_ARGS(Parrot_pmc_new)
     PARROT_ASSERT(interp->vtables[base_type]);
     {
         PMC *const classobj = interp->vtables[base_type]->pmc_class;
@@ -169,7 +169,7 @@
 
 /*
 
-=item C<PMC * pmc_reuse(PARROT_INTERP, PMC *pmc, INTVAL new_type, UINTVAL
+=item C<PMC * Parrot_pmc_reuse(PARROT_INTERP, PMC *pmc, INTVAL new_type, UINTVAL
 flags)>
 
 Reuse an existing PMC, turning it into an empty PMC of the new type. Any
@@ -188,11 +188,11 @@
 PARROT_CANNOT_RETURN_NULL
 PARROT_IGNORABLE_RESULT
 PMC *
-pmc_reuse(PARROT_INTERP, ARGIN(PMC *pmc), INTVAL new_type,
-          UINTVAL flags)
+Parrot_pmc_reuse(PARROT_INTERP, ARGIN(PMC *pmc), INTVAL new_type,
+    UINTVAL flags)
 {
-    ASSERT_ARGS(pmc_reuse)
-    pmc = pmc_reuse_no_init(interp, pmc, new_type, flags);
+    ASSERT_ARGS(Parrot_pmc_reuse)
+    pmc = Parrot_pmc_reuse_noinit(interp, pmc, new_type, flags);
 
     /* Call the base init for the redone pmc. Warning, this should not
        be called on Object PMCs. */
@@ -203,8 +203,8 @@
 
 /*
 
-=item C<PMC * pmc_reuse_init(PARROT_INTERP, PMC *pmc, INTVAL new_type, PMC
-*init, UINTVAL flags)>
+=item C<PMC * Parrot_pmc_reuse_init(PARROT_INTERP, PMC *pmc, INTVAL new_type,
+PMC *init, UINTVAL flags)>
 
 Reuse an existing PMC, turning it into an PMC of the new type. Any
 required internal structure will be put in place (such as the extension area)
@@ -222,11 +222,11 @@
 PARROT_CANNOT_RETURN_NULL
 PARROT_IGNORABLE_RESULT
 PMC *
-pmc_reuse_init(PARROT_INTERP, ARGIN(PMC *pmc), INTVAL new_type, ARGIN(PMC *init),
+Parrot_pmc_reuse_init(PARROT_INTERP, ARGIN(PMC *pmc), INTVAL new_type, ARGIN(PMC *init),
           UINTVAL flags)
 {
-    ASSERT_ARGS(pmc_reuse_init)
-    pmc = pmc_reuse_no_init(interp, pmc, new_type, flags);
+    ASSERT_ARGS(Parrot_pmc_reuse_init)
+    pmc = Parrot_pmc_reuse_noinit(interp, pmc, new_type, flags);
 
     /* Call the base init for the redone pmc. Warning, this should not
        be called on Object PMCs. */
@@ -237,8 +237,8 @@
 
 /*
 
-=item C<static PMC* pmc_reuse_no_init(PARROT_INTERP, PMC *pmc, INTVAL new_type,
-UINTVAL flags)>
+=item C<static PMC* Parrot_pmc_reuse_noinit(PARROT_INTERP, PMC *pmc, INTVAL
+new_type, UINTVAL flags)>
 
 Prepare pmc for reuse. Do all scuffolding except initing.
 
@@ -247,10 +247,10 @@
 */
 PARROT_CANNOT_RETURN_NULL
 static PMC*
-pmc_reuse_no_init(PARROT_INTERP, ARGIN(PMC *pmc), INTVAL new_type,
+Parrot_pmc_reuse_noinit(PARROT_INTERP, ARGIN(PMC *pmc), INTVAL new_type,
     SHIM(UINTVAL flags)) {
 
-    ASSERT_ARGS(pmc_reuse_no_init)
+    ASSERT_ARGS(Parrot_pmc_reuse_noinit)
     VTABLE *new_vtable;
     INTVAL  has_ext, new_flags = 0;
 
@@ -281,8 +281,8 @@
 
 /*
 
-=item C<PMC * pmc_reuse_by_class(PARROT_INTERP, PMC *pmc, PMC *class_, UINTVAL
-flags)>
+=item C<PMC * Parrot_pmc_reuse_by_class(PARROT_INTERP, PMC *pmc, PMC *class_,
+UINTVAL flags)>
 
 Reuse an existing PMC. Convert it to the type specified by the given Class
 PMC. At the moment, this means we can only use this function to reuse PMCs
@@ -297,10 +297,10 @@
 PARROT_CANNOT_RETURN_NULL
 PARROT_IGNORABLE_RESULT
 PMC *
-pmc_reuse_by_class(PARROT_INTERP, ARGMOD(PMC *pmc), ARGIN(PMC *class_),
+Parrot_pmc_reuse_by_class(PARROT_INTERP, ARGMOD(PMC *pmc), ARGIN(PMC *class_),
     UINTVAL flags)
 {
-    ASSERT_ARGS(pmc_reuse_by_class)
+    ASSERT_ARGS(Parrot_pmc_reuse_by_class)
     const INTVAL   new_type   = PARROT_CLASS(class_)->id;
     VTABLE * const new_vtable = interp->vtables[new_type];
     INTVAL         new_flags  = flags;
@@ -466,11 +466,11 @@
 
 /*
 
-=item C<PMC * pmc_new_noinit(PARROT_INTERP, INTVAL base_type)>
+=item C<PMC * Parrot_pmc_new_noinit(PARROT_INTERP, INTVAL base_type)>
 
 Creates a new PMC of type C<base_type> (which is an index into the list of PMC
-types declared in C<vtables> in F<include/parrot/pmc.h>). Unlike C<pmc_new()>,
-C<pmc_new_noinit()> does not call its C<init> method.  This allows separate
+types declared in C<vtables> in F<include/parrot/pmc.h>). Unlike C<Parrot_pmc_new()>,
+C<Parrot_pmc_new_noinit()> does not call its C<init> method.  This allows separate
 allocation and initialization for continuations.
 
 =cut
@@ -480,9 +480,9 @@
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 PMC *
-pmc_new_noinit(PARROT_INTERP, INTVAL base_type)
+Parrot_pmc_new_noinit(PARROT_INTERP, INTVAL base_type)
 {
-    ASSERT_ARGS(pmc_new_noinit)
+    ASSERT_ARGS(Parrot_pmc_new_noinit)
     PMC *const classobj = interp->vtables[base_type]->pmc_class;
 
     if (!PMC_IS_NULL(classobj) && PObj_is_class_TEST(classobj))
@@ -494,7 +494,7 @@
 
 /*
 
-=item C<PMC * constant_pmc_new_noinit(PARROT_INTERP, INTVAL base_type)>
+=item C<PMC * Parrot_pmc_new_constant_noinit(PARROT_INTERP, INTVAL base_type)>
 
 Creates a new constant PMC of type C<base_type>.
 
@@ -505,16 +505,16 @@
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 PMC *
-constant_pmc_new_noinit(PARROT_INTERP, INTVAL base_type)
+Parrot_pmc_new_constant_noinit(PARROT_INTERP, INTVAL base_type)
 {
-    ASSERT_ARGS(constant_pmc_new_noinit)
+    ASSERT_ARGS(Parrot_pmc_new_constant_noinit)
     return get_new_pmc_header(interp, base_type, PObj_constant_FLAG);
 }
 
 
 /*
 
-=item C<PMC * constant_pmc_new(PARROT_INTERP, INTVAL base_type)>
+=item C<PMC * Parrot_pmc_new_constant(PARROT_INTERP, INTVAL base_type)>
 
 Creates a new constant PMC of type C<base_type>, then calls its C<init>.
 
@@ -525,9 +525,9 @@
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 PMC *
-constant_pmc_new(PARROT_INTERP, INTVAL base_type)
+Parrot_pmc_new_constant(PARROT_INTERP, INTVAL base_type)
 {
-    ASSERT_ARGS(constant_pmc_new)
+    ASSERT_ARGS(Parrot_pmc_new_constant)
     PMC * const pmc = get_new_pmc_header(interp, base_type, PObj_constant_FLAG);
     VTABLE_init(interp, pmc);
     return pmc;
@@ -536,9 +536,9 @@
 
 /*
 
-=item C<PMC * pmc_new_init(PARROT_INTERP, INTVAL base_type, PMC *init)>
+=item C<PMC * Parrot_pmc_new_init(PARROT_INTERP, INTVAL base_type, PMC *init)>
 
-As C<pmc_new()>, but passes C<init> to the PMC's C<init_pmc()> vtable entry.
+As C<Parrot_pmc_new()>, but passes C<init> to the PMC's C<init_pmc()> vtable entry.
 
 =cut
 
@@ -547,9 +547,9 @@
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 PMC *
-pmc_new_init(PARROT_INTERP, INTVAL base_type, ARGOUT(PMC *init))
+Parrot_pmc_new_init(PARROT_INTERP, INTVAL base_type, ARGOUT(PMC *init))
 {
-    ASSERT_ARGS(pmc_new_init)
+    ASSERT_ARGS(Parrot_pmc_new_init)
     PMC *const classobj = interp->vtables[base_type]->pmc_class;
 
     if (!PMC_IS_NULL(classobj) && PObj_is_class_TEST(classobj))
@@ -564,9 +564,10 @@
 
 /*
 
-=item C<PMC * constant_pmc_new_init(PARROT_INTERP, INTVAL base_type, PMC *init)>
+=item C<PMC * Parrot_pmc_new_constant_init(PARROT_INTERP, INTVAL base_type, PMC
+*init)>
 
-As C<constant_pmc_new>, but passes C<init> to the PMC's C<init_pmc> vtable
+As C<Parrot_pmc_new_constant>, but passes C<init> to the PMC's C<init_pmc> vtable
 entry.
 
 =cut
@@ -576,9 +577,9 @@
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 PMC *
-constant_pmc_new_init(PARROT_INTERP, INTVAL base_type, ARGIN_NULLOK(PMC *init))
+Parrot_pmc_new_constant_init(PARROT_INTERP, INTVAL base_type, ARGIN_NULLOK(PMC *init))
 {
-    ASSERT_ARGS(constant_pmc_new_init)
+    ASSERT_ARGS(Parrot_pmc_new_constant_init)
     PMC * const pmc = get_new_pmc_header(interp, base_type, PObj_constant_FLAG);
     VTABLE_init_pmc(interp, pmc, init);
     return pmc;
@@ -587,7 +588,7 @@
 
 /*
 
-=item C<PMC * temporary_pmc_new(PARROT_INTERP, INTVAL base_type)>
+=item C<PMC * Parrot_pmc_new_temporary(PARROT_INTERP, INTVAL base_type)>
 
 Creates a new temporary PMC of type C<base_type>, then call C<init>. Cannot
 be used to create PMC Objects which have been defined from PIR.
@@ -602,11 +603,11 @@
 If you don't know what this means means, or you can't tell if either case
 will happen as the result of any call you make on or with this PMC,
 B<DO NOT> use this function, lest you cause weird crashes and memory errors.
-Use C<pmc_new()> instead.
+Use C<Parrot_pmc_new()> instead.
 
 (Why do these functions even exist?  Used judiciously, they can reduce GC
 pressure in hotspots tremendously.  If you haven't audited the code carefully
--- including profiling and benchmarking -- then use C<pmc_new()> instead, and
+-- including profiling and benchmarking -- then use C<Parrot_pmc_new()> instead, and
 never B<ever> add C<PARROT_EXPORT> to either function.)
 
 =cut
@@ -615,9 +616,9 @@
 
 PARROT_CANNOT_RETURN_NULL
 PMC *
-temporary_pmc_new(PARROT_INTERP, INTVAL base_type)
+Parrot_pmc_new_temporary(PARROT_INTERP, INTVAL base_type)
 {
-    ASSERT_ARGS(temporary_pmc_new)
+    ASSERT_ARGS(Parrot_pmc_new_temporary)
     PMC * const pmc = get_new_pmc_header(interp, base_type, PObj_constant_FLAG);
     VTABLE_init(interp, pmc);
     return pmc;
@@ -626,11 +627,11 @@
 
 /*
 
-=item C<void temporary_pmc_free(PARROT_INTERP, PMC *pmc)>
+=item C<void Parrot_pmc_free_temporary(PARROT_INTERP, PMC *pmc)>
 
-Frees a new temporary PMC created by C<temporary_pmc_new()>.  Do not call
+Frees a new temporary PMC created by C<temporary_Parrot_pmc_new()>.  Do not call
 this with any other type of PMC.  Do not forget to call this (or you'll leak
-PMCs). Read and I<understand> the warnings for C<temporary_pmc_new()> before
+PMCs). Read and I<understand> the warnings for C<temporary_Parrot_pmc_new()> before
 you're tempted to use this.
 
 =cut
@@ -638,16 +639,16 @@
 */
 
 void
-temporary_pmc_free(PARROT_INTERP, ARGMOD(PMC *pmc))
+Parrot_pmc_free_temporary(PARROT_INTERP, ARGMOD(PMC *pmc))
 {
-    ASSERT_ARGS(temporary_pmc_free)
+    ASSERT_ARGS(Parrot_pmc_free_temporary)
     Parrot_gc_free_pmc_header(interp, pmc);
 }
 
 
 /*
 
-=item C<INTVAL get_new_vtable_index(PARROT_INTERP)>
+=item C<INTVAL Parrot_pmc_get_new_vtable_index(PARROT_INTERP)>
 
 Get a new unique identifier number and allocate a new vtable structure for a
 new PMC type.
@@ -657,9 +658,9 @@
 */
 
 INTVAL
-get_new_vtable_index(PARROT_INTERP)
+Parrot_pmc_get_new_vtable_index(PARROT_INTERP)
 {
-    ASSERT_ARGS(get_new_vtable_index)
+    ASSERT_ARGS(Parrot_pmc_get_new_vtable_index)
     const INTVAL type_id = interp->n_vtable_max++;
 
     /* Have we overflowed the table? */
@@ -671,7 +672,7 @@
 
 /*
 
-=item C<INTVAL pmc_register(PARROT_INTERP, STRING *name)>
+=item C<INTVAL Parrot_pmc_register_new_type(PARROT_INTERP, STRING *name)>
 
 Registers the name of a new PMC type with Parrot, returning the INTVAL
 representing that type.
@@ -682,12 +683,12 @@
 
 PARROT_EXPORT
 INTVAL
-pmc_register(PARROT_INTERP, ARGIN(STRING *name))
+Parrot_pmc_register_new_type(PARROT_INTERP, ARGIN(STRING *name))
 {
-    ASSERT_ARGS(pmc_register)
+    ASSERT_ARGS(Parrot_pmc_register_new_type)
     /* If they're looking to register an existing class, return that
        class' type number */
-    INTVAL type = pmc_type(interp, name);
+    INTVAL type = Parrot_pmc_get_type_str(interp, name);
 
     if (type > enum_type_undef)
         return type;
@@ -696,7 +697,7 @@
         Parrot_ex_throw_from_c_args(interp, NULL, 1,
             "undefined type already exists - can't register PMC");
 
-    type = get_new_vtable_index(interp);
+    type = Parrot_pmc_get_new_vtable_index(interp);
 
     /* set entry in name->type hash */
     VTABLE_set_integer_keyed_str(interp, interp->class_hash, name, type);
@@ -707,7 +708,7 @@
 
 /*
 
-=item C<INTVAL pmc_type(PARROT_INTERP, STRING *name)>
+=item C<INTVAL Parrot_pmc_get_type_str(PARROT_INTERP, STRING *name)>
 
 Returns the PMC type for C<name>.
 
@@ -718,9 +719,9 @@
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
 INTVAL
-pmc_type(PARROT_INTERP, ARGIN_NULLOK(STRING *name))
+Parrot_pmc_get_type_str(PARROT_INTERP, ARGIN_NULLOK(STRING *name))
 {
-    ASSERT_ARGS(pmc_type)
+    ASSERT_ARGS(Parrot_pmc_get_type_str)
     if (!name)
         return enum_type_undef;
     else {
@@ -743,7 +744,7 @@
 
 /*
 
-=item C<INTVAL pmc_type_p(PARROT_INTERP, PMC *name)>
+=item C<INTVAL Parrot_pmc_get_type(PARROT_INTERP, PMC *name)>
 
 Returns the PMC type for C<name>.
 
@@ -753,9 +754,9 @@
 
 PARROT_EXPORT
 INTVAL
-pmc_type_p(PARROT_INTERP, ARGIN(PMC *name))
+Parrot_pmc_get_type(PARROT_INTERP, ARGIN(PMC *name))
 {
-    ASSERT_ARGS(pmc_type_p)
+    ASSERT_ARGS(Parrot_pmc_get_type)
     PMC * const classname_hash = interp->class_hash;
     PMC * item;
 
@@ -813,7 +814,7 @@
 
 /*
 
-=item C<void Parrot_create_mro(PARROT_INTERP, INTVAL type)>
+=item C<void Parrot_pmc_create_mro(PARROT_INTERP, INTVAL type)>
 
 Create the MRO (method resolution order) array for this type.
 
@@ -823,9 +824,9 @@
 
 PARROT_EXPORT
 void
-Parrot_create_mro(PARROT_INTERP, INTVAL type)
+Parrot_pmc_create_mro(PARROT_INTERP, INTVAL type)
 {
-    ASSERT_ARGS(Parrot_create_mro)
+    ASSERT_ARGS(Parrot_pmc_create_mro)
     PMC    *_class, *mro;
     VTABLE *vtable   = interp->vtables[type];
     PMC    *mro_list = vtable->mro;
@@ -838,7 +839,7 @@
     if (mro_list->vtable->base_type != enum_class_ResizableStringArray)
         return;
 
-    mro         = pmc_new(interp, enum_class_ResizablePMCArray);
+    mro         = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
     vtable->mro = mro;
 
     if (vtable->ro_variant_vtable)
@@ -848,7 +849,7 @@
 
     for (i = 0; i < count; ++i) {
         STRING *class_name  = VTABLE_get_string_keyed_int(interp, mro_list, i);
-        INTVAL  parent_type = pmc_type(interp, class_name);
+        INTVAL  parent_type = Parrot_pmc_get_type_str(interp, class_name);
 
         /* abstract classes don't have a vtable */
         if (!parent_type)
@@ -858,7 +859,7 @@
 
         if (!vtable->_namespace) {
             /* need a namespace Hash, anchor at parent, name it */
-            PMC * const ns     = pmc_new(interp,
+            PMC * const ns     = Parrot_pmc_new(interp,
                     Parrot_get_ctx_HLL_type(interp, enum_class_NameSpace));
             vtable->_namespace = ns;
 
@@ -884,7 +885,7 @@
 
 =over 4
 
-=item C<void gc_register_pmc(PARROT_INTERP, PMC *pmc)>
+=item C<void Parrot_pmc_gc_register(PARROT_INTERP, PMC *pmc)>
 
 Registers the PMC with the interpreter's GC registry.
 
@@ -894,9 +895,9 @@
 
 PARROT_EXPORT
 void
-gc_register_pmc(PARROT_INTERP, ARGIN(PMC *pmc))
+Parrot_pmc_gc_register(PARROT_INTERP, ARGIN(PMC *pmc))
 {
-    ASSERT_ARGS(gc_register_pmc)
+    ASSERT_ARGS(Parrot_pmc_gc_register)
     /* Better not trigger a GC run with a potentially unanchored PMC */
     Parrot_block_GC_mark(interp);
 
@@ -906,10 +907,9 @@
     Parrot_unblock_GC_mark(interp);
 }
 
-
 /*
 
-=item C<void gc_unregister_pmc(PARROT_INTERP, PMC *pmc)>
+=item C<void Parrot_pmc_gc_unregister(PARROT_INTERP, PMC *pmc)>
 
 Unregisters the PMC from the interpreter's GC registry.
 
@@ -919,15 +919,14 @@
 
 PARROT_EXPORT
 void
-gc_unregister_pmc(PARROT_INTERP, ARGIN(PMC *pmc))
+Parrot_pmc_gc_unregister(PARROT_INTERP, ARGIN(PMC *pmc))
 {
-    ASSERT_ARGS(gc_unregister_pmc)
+    ASSERT_ARGS(Parrot_pmc_gc_unregister)
     PARROT_ASSERT(interp->gc_registry);
 
     VTABLE_delete_keyed(interp, interp->gc_registry, pmc);
 }
 
-
 /*
 
 =back
@@ -947,7 +946,6 @@
 
 */
 
-
 /*
  * Local variables:
  *   c-file-style: "parrot"

Modified: branches/tt362/src/pmc/arrayiterator.pmc
==============================================================================
--- branches/tt362/src/pmc/arrayiterator.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/arrayiterator.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -128,7 +128,7 @@
         GET_ATTR_pos(interp, SELF, pos);
         GET_ATTR_reverse(interp, SELF, reverse);
 
-        clone = pmc_new_init(INTERP, enum_class_ArrayIterator, array);
+        clone = Parrot_pmc_new_init(INTERP, enum_class_ArrayIterator, array);
 
         SET_ATTR_pos(interp, clone, pos);
         SET_ATTR_reverse(interp, clone, reverse);

Modified: branches/tt362/src/pmc/bigint.pmc
==============================================================================
--- branches/tt362/src/pmc/bigint.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/bigint.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -540,7 +540,7 @@
     }
 
     VTABLE PMC *clone() {
-        PMC *res = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC *res = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         bigint_set(INTERP, res, SELF);
         return res;
     }
@@ -723,14 +723,14 @@
     }
 
     MULTI PMC *add(BigInt value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_add_bigint(INTERP, SELF, value, dest);
         return dest;
     }
 
     MULTI PMC *add(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_add_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -745,7 +745,7 @@
     }
 
     VTABLE PMC *add_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_add_bigint_int(INTERP, SELF, value, dest);
         return dest;
@@ -779,14 +779,14 @@
 
 
     MULTI PMC *subtract(BigInt value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_sub_bigint(INTERP, SELF, value, dest);
         return dest;
     }
 
     MULTI PMC *subtract(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_sub_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -801,7 +801,7 @@
     }
 
     VTABLE PMC *subtract_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_sub_bigint_int(INTERP, SELF, value, dest);
         return dest;
@@ -835,14 +835,14 @@
 
 
     MULTI PMC *multiply(BigInt value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_mul_bigint(INTERP, SELF, value, dest);
         return dest;
     }
 
     MULTI PMC *multiply(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_mul_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -857,7 +857,7 @@
     }
 
     VTABLE PMC *multiply_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_mul_bigint_int(INTERP, SELF, value, dest);
         return dest;
@@ -890,7 +890,7 @@
     METHOD PMC *pow(PMC *value) {
         /* XXX only Integer RHS currently */
         const INTVAL r = VTABLE_get_integer(INTERP, value);
-        PMC *dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC *dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_pow_bigint_int(INTERP, SELF, r, dest);
         RETURN(PMC *dest);
@@ -898,7 +898,7 @@
 
     MULTI PMC *divide(BigInt value, PMC *dest) {
         BIGINT *bi;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_div_bigint(INTERP, SELF, value, dest);
 #if 0
@@ -914,7 +914,7 @@
     }
 
     MULTI PMC *divide(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_div_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -929,7 +929,7 @@
     }
 
     VTABLE PMC *divide_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_div_bigint_int(INTERP, SELF, value, dest);
         return dest;
@@ -953,14 +953,14 @@
     }
 
     MULTI PMC *floor_divide(BigInt value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_fdiv_bigint(INTERP, SELF, value, dest);
         return dest;
     }
 
     MULTI PMC *floor_divide(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_fdiv_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -975,7 +975,7 @@
     }
 
     VTABLE PMC *floor_divide_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_fdiv_bigint_int(INTERP, SELF, value, dest);
         return dest;
@@ -1001,14 +1001,14 @@
     }
 
     MULTI PMC *modulus(BigInt value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_mod_bigint(INTERP, SELF, value, dest);
         return dest;
     }
 
     MULTI PMC *modulus(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_mod_bigint_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -1078,7 +1078,7 @@
 */
 
     VTABLE PMC *absolute(PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_abs(INTERP, SELF, dest);
         return dest;
@@ -1102,7 +1102,7 @@
 */
 
     VTABLE PMC *neg(PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bigint_neg(INTERP, SELF, dest);
         return dest;

Modified: branches/tt362/src/pmc/bignum.pmc
==============================================================================
--- branches/tt362/src/pmc/bignum.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/bignum.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -810,7 +810,7 @@
     }
 
     VTABLE PMC *clone() {
-        PMC *res = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC *res = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         bignum_set(INTERP, res, SELF);
         return res;
     }
@@ -1046,14 +1046,14 @@
 */
 
     MULTI PMC *add(BigNum value, PMC *dest) {
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         bignum_add_bignum(INTERP, SELF, value, dest);
         return dest;
     }
 
     MULTI PMC *add(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         bignum_add_bignum_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -1067,7 +1067,7 @@
     }
 
     VTABLE PMC *add_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         bignum_add_bignum_int(INTERP, SELF, value, dest);
         return dest;
@@ -1109,14 +1109,14 @@
 */
 
     MULTI PMC *subtract(BigNum value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bignum_sub_bignum(INTERP, SELF, value, dest);
         return dest;
     }
 
     MULTI PMC *subtract(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bignum_sub_bignum_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -1130,7 +1130,7 @@
     }
 
     VTABLE PMC *subtract_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bignum_sub_bignum_int(INTERP, SELF, value, dest);
         return dest;
@@ -1172,14 +1172,14 @@
 */
 
     MULTI PMC *multiply(BigNum value, PMC *dest) {
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         bignum_mul_bignum(INTERP, SELF, value, dest);
         return dest;
     }
 
     MULTI PMC *multiply(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         bignum_mul_bignum_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -1193,7 +1193,7 @@
     }
 
     VTABLE PMC *multiply_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         bignum_mul_bignum_int(INTERP, SELF, value, dest);
         return dest;
@@ -1243,7 +1243,7 @@
     METHOD PMC *pow(PMC *value) {
         /* only Integer RHS currently. TODO: check number and bignum types */
         INTVAL r = VTABLE_get_integer(INTERP, value);
-        PMC *dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC *dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         bignum_pow_bignum_int(INTERP, SELF, r, dest);
         RETURN(PMC *dest);
@@ -1259,7 +1259,7 @@
 
     MULTI PMC *divide(BigNum value, PMC *dest) {
         BIGNUM *bn;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bignum_div_bignum(INTERP, SELF, value, dest);
 #if 0
@@ -1275,7 +1275,7 @@
     }
 
     MULTI PMC *divide(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bignum_div_bignum_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -1289,14 +1289,14 @@
     }
 
     VTABLE PMC *divide_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bignum_div_bignum_int(INTERP, SELF, value, dest);
         return dest;
     }
 
     VTABLE PMC *divide_float(FLOATVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bignum_div_bignum_float(INTERP, SELF, value, dest);
         return dest;
@@ -1331,14 +1331,14 @@
 */
 
     MULTI PMC *floor_divide(BigNum value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bignum_fdiv_bignum(INTERP, SELF, value, dest);
         return dest;
     }
 
     MULTI PMC *floor_divide(Integer value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bignum_fdiv_bignum_int(INTERP, SELF, VTABLE_get_integer(interp, value), dest);
         return dest;
@@ -1352,7 +1352,7 @@
     }
 
     VTABLE PMC *floor_divide_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         bignum_fdiv_bignum_int(INTERP, SELF, value, dest);
         return dest;
@@ -1436,7 +1436,7 @@
 */
 
     VTABLE PMC *absolute(PMC *dest) {
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         bignum_abs(INTERP, SELF, dest);
         return dest;
@@ -1460,7 +1460,7 @@
 */
 
     VTABLE PMC *neg(PMC *dest) {
-        dest = pmc_new(INTERP, SELF->vtable->base_type);
+        dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         bignum_neg(INTERP, SELF, dest);
         return dest;

Modified: branches/tt362/src/pmc/callcontext.pmc
==============================================================================
--- branches/tt362/src/pmc/callcontext.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/callcontext.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -269,15 +269,15 @@
 
     switch (CELL_TYPE_MASK(cell)) {
       case INTCELL:
-        result = pmc_new(interp, HLL_TYPE(enum_class_Integer));
+        result = Parrot_pmc_new(interp, HLL_TYPE(enum_class_Integer));
         VTABLE_set_integer_native(interp, result, CELL_INT(cell));
         break;
       case FLOATCELL:
-        result = pmc_new(interp, HLL_TYPE(enum_class_Float));
+        result = Parrot_pmc_new(interp, HLL_TYPE(enum_class_Float));
         VTABLE_set_number_native(interp, result, CELL_FLOAT(cell));
         break;
       case STRINGCELL:
-        result = pmc_new(interp, HLL_TYPE(enum_class_String));
+        result = Parrot_pmc_new(interp, HLL_TYPE(enum_class_String));
         VTABLE_set_string_native(interp, result, CELL_STRING(cell));
         break;
       case PMCCELL:
@@ -363,7 +363,7 @@
     /* yes, this *looks* risky, but it's a Parrot STRING hash internally */
     if (hash && hash->entries) {
         UINTVAL i, j = 0;
-        result  = pmc_new(interp, enum_class_FixedStringArray);
+        result  = Parrot_pmc_new(interp, enum_class_FixedStringArray);
         VTABLE_set_integer_native(interp, result, hash->entries);
 
         for (i = 0; i <= hash->mask; i++) {
@@ -1407,7 +1407,7 @@
         Pcc_cell    *cell;
         STRING      *short_sig;
         PMC         *type_tuple, *arg_flags, *return_flags;
-        PMC * const dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         GET_ATTR_positionals(INTERP, SELF, cell);
 
@@ -1489,13 +1489,13 @@
 */
 
     METHOD backtrace(PMC *resume :optional, INTVAL has_resume :opt_flag) {
-        PMC *result  = pmc_new(interp, enum_class_ResizablePMCArray);
+        PMC *result  = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
         PMC *cur_ctx = SELF;
         Parrot_Continuation_attributes *cont = has_resume ? PMC_cont(resume) : NULL;
 
         /* Get starting context, then loop over them. */
         while (cur_ctx) {
-            PMC        *frame       = pmc_new(interp, enum_class_Hash);
+            PMC        *frame       = Parrot_pmc_new(interp, enum_class_Hash);
             PMC        *annotations = NULL;
             Parrot_Sub_attributes *sub;
 
@@ -1524,7 +1524,7 @@
             }
 
             if (!annotations)
-                annotations = pmc_new(interp, enum_class_Hash);
+                annotations = Parrot_pmc_new(interp, enum_class_Hash);
 
             VTABLE_set_pmc_keyed_str(interp, frame, CONST_STRING(interp, "annotations"), annotations);
 

Modified: branches/tt362/src/pmc/capture.pmc
==============================================================================
--- branches/tt362/src/pmc/capture.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/capture.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -22,13 +22,13 @@
     do { \
         GETATTR_Capture_array((i), (obj), array); \
         if (!array) \
-            SETATTR_Capture_array((i), (obj), pmc_new((i), enum_class_ResizablePMCArray)); \
+            SETATTR_Capture_array((i), (obj), Parrot_pmc_new((i), enum_class_ResizablePMCArray)); \
     } while (0)
 #define CAPTURE_hash_CREATE(i, obj) \
     do { \
         GETATTR_Capture_hash((i), (obj), hash); \
         if (!hash) \
-            SETATTR_Capture_hash((i), (obj),  pmc_new((i), enum_class_Hash)); \
+            SETATTR_Capture_hash((i), (obj),  Parrot_pmc_new((i), enum_class_Hash)); \
     } while (0)
 
 pmclass Capture auto_attrs {
@@ -61,7 +61,7 @@
 
     VTABLE PMC *clone() {
         PMC *array, *hash;
-        PMC *dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC *dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         GET_ATTR_array(INTERP, SELF, array);
         GET_ATTR_hash(INTERP, SELF, hash);
         if (array)

Modified: branches/tt362/src/pmc/class.pmc
==============================================================================
--- branches/tt362/src/pmc/class.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/class.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -106,7 +106,7 @@
     /* Build a string representing the fully qualified class name. */
     /* Retrieve the fully qualified class name for the class. */
     STRING       * const fq_class    = VTABLE_get_string(interp, cur_class);
-    PMC          * const class_cache = pmc_new(interp, enum_class_Hash);
+    PMC          * const class_cache = Parrot_pmc_new(interp, enum_class_Hash);
     VTABLE_set_pmc_keyed_str(interp, cache, fq_class, class_cache);
 
     /* Iterate over the attributes. */
@@ -138,8 +138,8 @@
 {
     Parrot_Class_attributes * const _class      = PARROT_CLASS(self);
     int                  cur_index    = 0;
-    PMC * const          attrib_index = pmc_new(interp, enum_class_Hash);
-    PMC * const          cache        = pmc_new(interp, enum_class_Hash);
+    PMC * const          attrib_index = Parrot_pmc_new(interp, enum_class_Hash);
+    PMC * const          cache        = Parrot_pmc_new(interp, enum_class_Hash);
     const int            num_classes  = VTABLE_elements(interp, _class->all_parents);
     int                  i;
 
@@ -344,7 +344,7 @@
 
         if (!PMC_IS_NULL(meth)) {
             /* build an empty signature; it has an invocant but no args/retvals */
-            PMC * const sig_obj = pmc_new(interp, enum_class_CallContext);
+            PMC * const sig_obj = Parrot_pmc_new(interp, enum_class_CallContext);
             /* preserve current_object */
             PMC * const old_object = interp->current_object;
             VTABLE_set_string_native(interp, sig_obj, CONST_STRING(interp, "Pi->"));
@@ -504,18 +504,18 @@
         /* Set up the object. */
         _class->name            = CONST_STRING(interp, "");
         _class->_namespace      = PMCNULL;
-        _class->parents         = pmc_new(interp, enum_class_ResizablePMCArray);
-        _class->all_parents     = pmc_new(interp, enum_class_ResizablePMCArray);
-        _class->roles           = pmc_new(interp, enum_class_ResizablePMCArray);
-        _class->methods         = pmc_new(interp, enum_class_Hash);
-        _class->attrib_metadata = pmc_new(interp, enum_class_Hash);
+        _class->parents         = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+        _class->all_parents     = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+        _class->roles           = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+        _class->methods         = Parrot_pmc_new(interp, enum_class_Hash);
+        _class->attrib_metadata = Parrot_pmc_new(interp, enum_class_Hash);
         _class->attrib_index    = PMCNULL;
         _class->attrib_cache    = PMCNULL;
         _class->meth_cache      = PMCNULL;
-        _class->resolve_method  = pmc_new(interp, enum_class_ResizablePMCArray);
+        _class->resolve_method  = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
 
-        _class->vtable_overrides = pmc_new(interp, enum_class_Hash);
-        _class->parent_overrides = pmc_new(interp, enum_class_Hash);
+        _class->vtable_overrides = Parrot_pmc_new(interp, enum_class_Hash);
+        _class->parent_overrides = Parrot_pmc_new(interp, enum_class_Hash);
 
         /* We put ourself on the all parents list. */
         VTABLE_push_pmc(interp, _class->all_parents, SELF);
@@ -542,7 +542,7 @@
           case enum_class_ResizableStringArray:
           case enum_class_NameSpace:
             /* set only the name property */
-            arg = pmc_new(interp, enum_class_Hash);
+            arg = Parrot_pmc_new(interp, enum_class_Hash);
             VTABLE_set_pmc_keyed_str(interp, arg, name_str, init_data);
             break;
 
@@ -556,7 +556,7 @@
              || VTABLE_isa(interp, init_data, CONST_STRING(interp, "Key"))
              || VTABLE_isa(interp, init_data, CONST_STRING(interp, "ResizableStringArray"))) {
                 /* set only the name property */
-                arg = pmc_new(interp, enum_class_Hash);
+                arg = Parrot_pmc_new(interp, enum_class_Hash);
                 VTABLE_set_pmc_keyed_str(interp, arg, name_str, init_data);
             }
 
@@ -631,7 +631,7 @@
 
     VTABLE void add_attribute(STRING *name, PMC *type) {
         Parrot_Class_attributes * const _class        = PARROT_CLASS(SELF);
-        PMC          * const new_attribute = pmc_new(interp, enum_class_Hash);
+        PMC          * const new_attribute = Parrot_pmc_new(interp, enum_class_Hash);
 
         /* If we've been instantiated already, not allowed. */
         if (_class->instantiated)
@@ -960,11 +960,11 @@
             found = _class->parents;
         }
         else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "name"))) {
-            found = pmc_new(interp, enum_class_String);
+            found = Parrot_pmc_new(interp, enum_class_String);
             VTABLE_set_string_native(interp, found, _class->name);
         }
         else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "id"))) {
-            found = pmc_new(interp, enum_class_Integer);
+            found = Parrot_pmc_new(interp, enum_class_Integer);
             VTABLE_set_integer_native(interp, found, _class->id);
         }
         else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "namespace"))) {
@@ -987,7 +987,7 @@
             found = _class->roles;
         }
         else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "flags"))) {
-            found = pmc_new(interp, enum_class_Integer);
+            found = Parrot_pmc_new(interp, enum_class_Integer);
             VTABLE_set_integer_native(interp, found,
                 (INTVAL)PObj_get_FLAGS(SELF));
         }
@@ -1002,7 +1002,7 @@
         if (found->vtable->base_type == enum_class_Hash) {
             /* for Hash return values, create and return a shallow
              * clone because the VTABLE_clone does a deep clone */
-            PMC * const hash  = pmc_new(interp, enum_class_Hash);
+            PMC * const hash  = Parrot_pmc_new(interp, enum_class_Hash);
             PMC * const iter  = VTABLE_get_iter(interp, found);
             while (VTABLE_get_bool(interp, iter)) {
                 STRING * const key   = VTABLE_shift_string(interp, iter);
@@ -1029,7 +1029,7 @@
     VTABLE PMC *inspect() {
         /* Create a hash, then use inspect_str to get all of the data to
          * fill it up with. */
-        PMC    * const metadata    = pmc_new(interp, enum_class_Hash);
+        PMC    * const metadata    = Parrot_pmc_new(interp, enum_class_Hash);
         STRING * const name_str    = CONST_STRING(interp, "name");
         STRING * const ns_str      = CONST_STRING(interp, "namespace");
         STRING * const attrs_str   = CONST_STRING(interp, "attributes");
@@ -1191,7 +1191,7 @@
         _class->instantiated = 1;
 
         /* Create object. */
-        object = pmc_new_noinit(interp, enum_class_Object);
+        object = Parrot_pmc_new_noinit(interp, enum_class_Object);
 
         /* Set custom GC mark and destroy on the object. */
         PObj_custom_mark_destroy_SETALL(object);
@@ -1207,7 +1207,7 @@
             Parrot_Object_attributes * const objattr =
                 PMC_data_typed(object, Parrot_Object_attributes *);
             objattr->_class       = SELF;
-            objattr->attrib_store = pmc_new(interp, enum_class_ResizablePMCArray);
+            objattr->attrib_store = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
         }
 
         if (!PMC_IS_NULL(init)) {
@@ -1537,7 +1537,7 @@
 
 This is just a temporary hack. Type ID numbers shouldn't be externally
 visible to the average PIR user. However, we need this for now to interface
-with functions like pmc_new and pmc_reuse, which take type ID numbers still.
+with functions like Parrot_pmc_new and pmc_reuse, which take type ID numbers still.
 
 =cut
 
@@ -1563,7 +1563,7 @@
 
         /* Recalculate full MRO from thawed parents */
         _class->all_parents         = Parrot_ComputeMRO_C3(interp, SELF);
-        _class->parent_overrides    = pmc_new(interp, enum_class_Hash);
+        _class->parent_overrides    = Parrot_pmc_new(interp, enum_class_Hash);
 
         /* Rebuild attribute index from thawed attribute metadata */
         build_attrib_index(interp, SELF);
@@ -1591,7 +1591,7 @@
         if (has_name) {
             /* We'll build a hash just containing the name, then give this to
              * init_class_from_hash - saves some code duplication. */
-            PMC    * const naming_hash = pmc_new(interp, enum_class_Hash);
+            PMC    * const naming_hash = Parrot_pmc_new(interp, enum_class_Hash);
             STRING * const name_str    = CONST_STRING(interp, "name");
 
             VTABLE_set_string_keyed_str(interp, naming_hash, name_str, name);

Modified: branches/tt362/src/pmc/codestring.pmc
==============================================================================
--- branches/tt362/src/pmc/codestring.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/codestring.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -189,7 +189,7 @@
         INTVAL  eos;
         INTVAL  jpos;
 
-        linepos = pmc_new(INTERP, enum_class_ResizableIntegerArray);
+        linepos = Parrot_pmc_new(INTERP, enum_class_ResizableIntegerArray);
         /* get the string itself */
         GET_ATTR_str_val(INTERP, SELF, str);
         eos  = Parrot_str_byte_length(INTERP, str);

Modified: branches/tt362/src/pmc/complex.pmc
==============================================================================
--- branches/tt362/src/pmc/complex.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/complex.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -234,7 +234,7 @@
 */
     VTABLE opcode_t *invoke(void *next) {
         const int   argcP = REG_INT(interp, 3);
-        PMC * const res   = pmc_new(INTERP, enum_class_Complex);
+        PMC * const res   = Parrot_pmc_new(INTERP, enum_class_Complex);
 
         if (argcP == 1) {
             PMC * const arg = REG_PMC(interp, 5);
@@ -316,7 +316,7 @@
     }
 
     VTABLE PMC *clone() {
-        PMC * const dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         FLOATVAL re, im;
 
         GET_ATTR_re(INTERP, SELF, re);
@@ -436,7 +436,7 @@
     }
 
     VTABLE PMC *get_pmc_keyed_str(STRING *key) {
-        PMC * const    ret = pmc_new(INTERP, enum_class_Float);
+        PMC * const    ret = Parrot_pmc_new(INTERP, enum_class_Float);
         const FLOATVAL val = SELF.get_number_keyed_str(key);
         VTABLE_set_number_native(INTERP, ret, val);
         return ret;
@@ -453,7 +453,7 @@
 */
 
     VTABLE PMC *get_pmc_keyed_int(INTVAL key) {
-        PMC * const    ret = pmc_new(INTERP, enum_class_Float);
+        PMC * const    ret = Parrot_pmc_new(INTERP, enum_class_Float);
         const FLOATVAL val = SELF.get_number_keyed_int(key);
         VTABLE_set_number_native(INTERP, ret, val);
         return ret;
@@ -635,7 +635,7 @@
 
     MULTI PMC *add(Complex value, PMC *dest) {
         FLOATVAL self_re, self_im, val_re, val_im;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, self_re);
         GET_ATTR_im(INTERP, SELF, self_im);
@@ -651,7 +651,7 @@
 
     MULTI PMC *add(DEFAULT value, PMC *dest) {
         FLOATVAL re, im;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -667,7 +667,7 @@
 
     VTABLE PMC *add_float(FLOATVAL value, PMC *dest) {
         FLOATVAL re, im;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -724,7 +724,7 @@
 
     MULTI PMC *subtract(Complex value, PMC *dest) {
         FLOATVAL self_re, self_im, val_re, val_im;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, self_re);
         GET_ATTR_im(INTERP, SELF, self_im);
@@ -740,7 +740,7 @@
 
     MULTI PMC *subtract(DEFAULT value, PMC *dest) {
         FLOATVAL re, im;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -756,7 +756,7 @@
 
     VTABLE PMC *subtract_float(FLOATVAL value, PMC *dest) {
         FLOATVAL re, im;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -827,7 +827,7 @@
     MULTI PMC *multiply(Complex value, PMC *dest) {
         FLOATVAL a, b, c, d;
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, a);
         GET_ATTR_im(INTERP, SELF, b);
@@ -841,7 +841,7 @@
 
     MULTI PMC *multiply(DEFAULT value, PMC *dest) {
         FLOATVAL re, im;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -857,7 +857,7 @@
 
     VTABLE PMC *multiply_float(FLOATVAL value, PMC *dest) {
         FLOATVAL re, im;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -940,7 +940,7 @@
         FLOATVAL self_re, self_im, val_re, val_im;
 
         complex_check_divide_zero(INTERP, value);
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, self_re);
         GET_ATTR_im(INTERP, SELF, self_im);
@@ -970,7 +970,7 @@
         FLOATVAL re, im;
         const FLOATVAL d = VTABLE_get_number(INTERP, value);
         float_check_divide_zero(INTERP, d);
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -984,7 +984,7 @@
     VTABLE PMC *divide_int(INTVAL value, PMC *dest) {
         FLOATVAL re, im;
         int_check_divide_zero(INTERP, value);
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -998,7 +998,7 @@
     VTABLE PMC *divide_float(FLOATVAL value, PMC *dest) {
         FLOATVAL re, im;
         float_check_divide_zero(INTERP, value);
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1085,7 +1085,7 @@
 
     VTABLE PMC *neg(PMC *dest) {
         FLOATVAL re, im;
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1164,7 +1164,7 @@
         GET_ATTR_im(INTERP, SELF, im);
         d = sqrt(re*re + im*im);
 
-        dest = pmc_new(INTERP,
+        dest = Parrot_pmc_new(INTERP,
             Parrot_get_ctx_HLL_type(INTERP, enum_class_Float));
 
         VTABLE_set_number_native(INTERP, dest, d);
@@ -1176,7 +1176,7 @@
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
         d = sqrt(re*re + im*im);
-        pmc_reuse(INTERP, SELF, enum_class_Float, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_Float, 0);
         VTABLE_set_number_native(INTERP, SELF, d);
     }
 
@@ -1202,7 +1202,7 @@
 */
 
     METHOD ln() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         FLOATVAL re, im, result_re, result_im;
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1236,7 +1236,7 @@
 */
 
     METHOD exp() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         FLOATVAL re, im, f;
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1290,7 +1290,7 @@
 */
 
     METHOD sin() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         FLOATVAL re, im, result_re, result_im;
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1320,7 +1320,7 @@
     }
 
     METHOD cos() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         FLOATVAL re, im, result_re, result_im;
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1345,8 +1345,8 @@
     }
 
     METHOD tan() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC * const e = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const e = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         (PMC *d) = PCCINVOKE(INTERP, SELF, "sin");
         (PMC *e) = PCCINVOKE(INTERP, SELF, "cos");
@@ -1357,8 +1357,8 @@
     }
 
     METHOD cot() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC * const e = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const e = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         (PMC *d) = PCCINVOKE(INTERP, SELF, "cos");
         (PMC *e) = PCCINVOKE(INTERP, SELF, "sin");
 
@@ -1368,8 +1368,8 @@
     }
 
     METHOD sec() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC * const e = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const e = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         SET_ATTR_re(INTERP, d, 1.0);
         SET_ATTR_im(INTERP, d, 0.0);
         (PMC *e) = PCCINVOKE(INTERP, SELF, "cos");
@@ -1380,8 +1380,8 @@
     }
 
     METHOD csc() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC * const e = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const e = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         SET_ATTR_re(INTERP, d, 1.0);
         SET_ATTR_im(INTERP, d, 0.0);
@@ -1428,8 +1428,8 @@
 
     METHOD asin() {
         FLOATVAL d_re, d_im, e_re, e_im, self_re, self_im;
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC *       e = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC *       e = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         GET_ATTR_re(INTERP, SELF, self_re);
         GET_ATTR_im(INTERP, SELF, self_im);
 
@@ -1456,8 +1456,8 @@
 
     METHOD acos() {
         FLOATVAL d_re, d_im, e_re, e_im, self_re, self_im;
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC *       e = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC *       e = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         GET_ATTR_re(INTERP, SELF, self_re);
         GET_ATTR_im(INTERP, SELF, self_im);
 
@@ -1483,8 +1483,8 @@
     }
 
     METHOD atan() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC * const e  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const e  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         FLOATVAL re, im, d_re, d_im;
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1507,7 +1507,7 @@
     }
 
     METHOD acot() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         PMC     *e;
         FLOATVAL re, im;
         GET_ATTR_re(INTERP, SELF, re);
@@ -1521,7 +1521,7 @@
     }
 
     METHOD acsc() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         PMC     *e;
         FLOATVAL re, im;
         GET_ATTR_re(INTERP, SELF, re);
@@ -1535,7 +1535,7 @@
     }
 
     METHOD asec() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         PMC     *e;
         FLOATVAL re, im;
         GET_ATTR_re(INTERP, SELF, re);
@@ -1569,7 +1569,7 @@
 */
 
     METHOD sinh() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         FLOATVAL re, im;
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1581,7 +1581,7 @@
     }
 
     METHOD cosh() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         FLOATVAL re, im;
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1598,8 +1598,8 @@
     }
 
     METHOD tanh() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC * const e = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const e = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         (PMC *d) = PCCINVOKE(INTERP, SELF, "sinh");
         (PMC *e) = PCCINVOKE(INTERP, SELF, "cosh");
@@ -1611,7 +1611,7 @@
 
     METHOD coth() {
         FLOATVAL re, im;
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         (PMC *d) = PCCINVOKE(INTERP, SELF, "tanh");
         GET_ATTR_re(INTERP, d, re);
@@ -1625,7 +1625,7 @@
 
     METHOD csch() {
         FLOATVAL re, im;
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         (PMC *d) = PCCINVOKE(INTERP, SELF, "sinh");
         GET_ATTR_re(INTERP, d, re);
@@ -1639,7 +1639,7 @@
 
     METHOD sech() {
         FLOATVAL re, im;
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         (PMC *d) = PCCINVOKE(INTERP, SELF, "cosh");
         GET_ATTR_re(INTERP, d, re);
@@ -1681,8 +1681,8 @@
 
     METHOD asinh() {
         FLOATVAL re, im;
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC * const e = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const e = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1700,8 +1700,8 @@
 
     METHOD acosh() {
         FLOATVAL re, im;
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC * const e = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const e = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         (PMC *d) = PCCINVOKE(INTERP, SELF, "acos");
         GET_ATTR_re(INTERP, d, re);
@@ -1714,8 +1714,8 @@
 
     METHOD atanh() {
         FLOATVAL re, im;
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
-        PMC * const e = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const e = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         GET_ATTR_re(INTERP, SELF, re);
         GET_ATTR_im(INTERP, SELF, im);
@@ -1732,7 +1732,7 @@
     }
 
     METHOD acoth() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         PMC     *e;
         FLOATVAL re, im;
         GET_ATTR_re(INTERP, SELF, re);
@@ -1746,7 +1746,7 @@
     }
 
     METHOD acsch() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         PMC     *e;
         FLOATVAL re, im;
         GET_ATTR_re(INTERP, SELF, re);
@@ -1760,7 +1760,7 @@
     }
 
     METHOD asech() {
-        PMC * const d = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         PMC     *e;
         FLOATVAL re, im;
         GET_ATTR_re(INTERP, SELF, re);
@@ -1796,9 +1796,9 @@
 */
 
     METHOD pow(PMC * value) {
-        PMC *l = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC *l = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         PMC *log;
-        PMC *dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC *dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         Parrot_pcc_invoke_method_from_c_args(interp, SELF, CONST_STRING(interp, "ln"),
                     "->P", &log);
@@ -1811,7 +1811,7 @@
     }
 
     METHOD sqrt() {
-        PMC * const result = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const result = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         const FLOATVAL absval = SELF.get_number();
         FLOATVAL sx, sy, rx, ry;
         GET_ATTR_re(INTERP, SELF, sx);

Modified: branches/tt362/src/pmc/continuation.pmc
==============================================================================
--- branches/tt362/src/pmc/continuation.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/continuation.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -157,7 +157,7 @@
 
     VTABLE PMC *clone() {
         /* Start to prepare for subclassable continuations */
-        return pmc_new_init(INTERP, SELF->vtable->base_type, SELF);
+        return Parrot_pmc_new_init(INTERP, SELF->vtable->base_type, SELF);
     }
 
 /*

Modified: branches/tt362/src/pmc/coroutine.pmc
==============================================================================
--- branches/tt362/src/pmc/coroutine.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/coroutine.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -97,7 +97,7 @@
 
     VTABLE PMC *clone() {
         STRING     *name;
-        PMC * const ret = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const ret = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         PObj_custom_mark_destroy_SETALL(ret);
 
@@ -164,7 +164,7 @@
 
             /* first time set current sub, cont, object */
             if (PMC_IS_NULL(ctx))
-                ctx = pmc_new(INTERP, enum_class_CallContext);
+                ctx = Parrot_pmc_new(INTERP, enum_class_CallContext);
 
             CURRENT_CONTEXT(INTERP) = ctx;
 
@@ -189,7 +189,7 @@
             /* create pad if needed */
             if (!PMC_IS_NULL(lex_info)) {
                 const INTVAL hlltype = Parrot_get_ctx_HLL_type(INTERP, enum_class_LexPad);
-                PMC * const lexpad = pmc_new_init(INTERP, hlltype, lex_info);
+                PMC * const lexpad = Parrot_pmc_new_init(INTERP, hlltype, lex_info);
                 Parrot_pcc_set_lex_pad(INTERP, ctx, lexpad);
                 VTABLE_set_pointer(INTERP, lexpad, ctx);
             }

Modified: branches/tt362/src/pmc/cpointer.pmc
==============================================================================
--- branches/tt362/src/pmc/cpointer.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/cpointer.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -99,7 +99,7 @@
 */
 
     VTABLE PMC *clone() {
-        PMC * const dest = pmc_new_noinit(INTERP, SELF->vtable->base_type);
+        PMC * const dest = Parrot_pmc_new_noinit(INTERP, SELF->vtable->base_type);
         void       *ptr;
         STRING     *sig;
 

Modified: branches/tt362/src/pmc/default.pmc
==============================================================================
--- branches/tt362/src/pmc/default.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/default.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -148,7 +148,7 @@
 static void
 propagate_std_props(PARROT_INTERP, PMC *self, PMC *prop_hash) {
     if (self->vtable->flags & (VTABLE_IS_CONST_FLAG | VTABLE_IS_READONLY_FLAG)){
-        PMC * const pmc_true  = pmc_new(interp, enum_class_Integer);
+        PMC * const pmc_true  = Parrot_pmc_new(interp, enum_class_Integer);
         VTABLE_set_integer_native(interp, pmc_true, 1);
         VTABLE_set_pmc_keyed_str(interp, prop_hash, CONST_STRING(interp, "_ro"), pmc_true);
     }
@@ -189,7 +189,7 @@
 check_get_std_props(PARROT_INTERP, PMC *self, STRING *key) {
     if ((self->vtable->flags & (VTABLE_IS_CONST_FLAG | VTABLE_IS_READONLY_FLAG))
        && Parrot_str_equal(interp, key, CONST_STRING(interp, "_ro"))) {
-        PMC * const ret_val  = pmc_new(interp, enum_class_Integer);
+        PMC * const ret_val  = Parrot_pmc_new(interp, enum_class_Integer);
         VTABLE_set_integer_native(interp, ret_val, 1);
         return ret_val;
     }
@@ -214,7 +214,7 @@
 make_prop_hash(PARROT_INTERP, PMC *self) {
     PMC *prop;
 
-    PMC_metadata(self) = prop = pmc_new(interp, enum_class_Hash);
+    PMC_metadata(self) = prop = Parrot_pmc_new(interp, enum_class_Hash);
     propagate_std_props(interp, self, prop);
     return prop;
 }
@@ -332,16 +332,16 @@
     VTABLE PMC *instantiate(PMC *init) {
         const INTVAL type = VTABLE_type(INTERP, SELF);
 
-        /* Ensure no looping, as pmc_new calls the instantiate vtable entry for
+        /* Ensure no looping, as Parrot_pmc_new calls the instantiate vtable entry for
          * classes. */
         if (PObj_is_class_TEST(SELF))
             Parrot_ex_throw_from_c_args(interp, NULL, 1,
                     "All high-level classes should override instantiate");
 
         if (!PMC_IS_NULL(init))
-            return pmc_new_init(INTERP, type, init);
+            return Parrot_pmc_new_init(INTERP, type, init);
 
-        return pmc_new(INTERP, type);
+        return Parrot_pmc_new(INTERP, type);
     }
 
 /*
@@ -612,7 +612,7 @@
         STRING * const undef = CONST_STRING(INTERP, "Undef");
 
         if (VTABLE_isa(INTERP, value, undef))
-            pmc_reuse(INTERP, SELF, value->vtable->base_type, 0);
+            Parrot_pmc_reuse(INTERP, SELF, value->vtable->base_type, 0);
         else
             SELF.set_pmc(value);
     }
@@ -632,7 +632,7 @@
 */
 
     VTABLE void morph(PMC* type) {
-        pmc_reuse(INTERP, SELF, VTABLE_get_integer(interp, type), 0);
+        Parrot_pmc_reuse(INTERP, SELF, VTABLE_get_integer(interp, type), 0);
     }
 
 /*
@@ -936,7 +936,7 @@
 
     VTABLE PMC *inspect_str(STRING *name) {
         if (Parrot_str_equal(interp, name, CONST_STRING(interp, "flags"))) {
-            PMC *found = pmc_new(interp, enum_class_Integer);
+            PMC *found = Parrot_pmc_new(interp, enum_class_Integer);
             VTABLE_set_integer_native(interp, found,
                     (INTVAL)PObj_get_FLAGS(SELF));
             return found;
@@ -960,7 +960,7 @@
 
 */
     VTABLE PMC *inspect() {
-        PMC    *metadata           = pmc_new(interp, enum_class_Hash);
+        PMC    *metadata           = Parrot_pmc_new(interp, enum_class_Hash);
         STRING * const flags_str   = CONST_STRING(interp, "flags");
 
         VTABLE_set_pmc_keyed_str(interp, metadata, flags_str,
@@ -987,9 +987,9 @@
 
         if (PMC_IS_NULL(_class)) {
             INTVAL type      = VTABLE_type(interp, SELF);
-            PMC   *type_num  = pmc_new(interp, enum_class_Integer);
+            PMC   *type_num  = Parrot_pmc_new(interp, enum_class_Integer);
             VTABLE_set_integer_native(interp, type_num, type);
-            return pmc_new_init(interp, enum_class_PMCProxy, type_num);
+            return Parrot_pmc_new_init(interp, enum_class_PMCProxy, type_num);
         }
 
         return _class;
@@ -1158,7 +1158,7 @@
 */
 
     VTABLE PMC *add_float(FLOATVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 SELF.get_number() + value);

Modified: branches/tt362/src/pmc/env.pmc
==============================================================================
--- branches/tt362/src/pmc/env.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/env.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -74,7 +74,7 @@
 */
 
     VTABLE PMC *get_iter() {
-        return pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
+        return Parrot_pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
     }
 
 /*
@@ -215,7 +215,7 @@
         if (!retval)
             retval = string_from_literal(INTERP, "");
 
-        return_pmc = pmc_new(INTERP, enum_class_String);
+        return_pmc = Parrot_pmc_new(INTERP, enum_class_String);
 
         VTABLE_set_string_native(INTERP, return_pmc, retval);
         return return_pmc;

Modified: branches/tt362/src/pmc/exception.pmc
==============================================================================
--- branches/tt362/src/pmc/exception.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/exception.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -541,30 +541,30 @@
         if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "type"))) {
                 INTVAL type;
                 GET_ATTR_type(interp, SELF, type);
-                value = pmc_new(interp, enum_class_Integer);
+                value = Parrot_pmc_new(interp, enum_class_Integer);
                 VTABLE_set_integer_native(interp, value, type);
         }
         else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "severity"))) {
                 INTVAL severity;
                 GET_ATTR_severity(interp, SELF, severity);
-                value = pmc_new(interp, enum_class_Integer);
+                value = Parrot_pmc_new(interp, enum_class_Integer);
                 VTABLE_set_integer_native(interp, value, severity);
         }
         else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "exit_code"))) {
                 INTVAL exit_code;
                 GET_ATTR_exit_code(interp, SELF, exit_code);
-                value = pmc_new(interp, enum_class_Integer);
+                value = Parrot_pmc_new(interp, enum_class_Integer);
                 VTABLE_set_integer_native(interp, value, exit_code);
         }
         else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "handled"))) {
                 INTVAL handled;
                 GET_ATTR_handled(interp, SELF, handled);
-                value = pmc_new(interp, enum_class_Integer);
+                value = Parrot_pmc_new(interp, enum_class_Integer);
                 VTABLE_set_integer_native(interp, value, handled);
         }
         else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "message"))) {
                 STRING *message = SELF.get_string();
-                value = pmc_new(interp, enum_class_String);
+                value = Parrot_pmc_new(interp, enum_class_String);
                 VTABLE_set_string_native(interp, value, message);
         }
         else if (Parrot_str_equal(INTERP, name, CONST_STRING(INTERP, "payload"))) {
@@ -709,7 +709,7 @@
         /* If we didn't have a key specified and we found no annotations to
          * return, should return an empty hash. */
         if (!have_name && PMC_IS_NULL(result))
-            result = pmc_new(interp, enum_class_Hash);
+            result = Parrot_pmc_new(interp, enum_class_Hash);
 
         RETURN(PMC *result);
     }

Modified: branches/tt362/src/pmc/exporter.pmc
==============================================================================
--- branches/tt362/src/pmc/exporter.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/exporter.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -231,7 +231,7 @@
 
         if (got_glb) {
             STRING * const s_empty      = CONST_STRING(interp, "");
-            PMC           *temp_globals = pmc_new(interp, enum_class_Hash);
+            PMC           *temp_globals = Parrot_pmc_new(interp, enum_class_Hash);
 
             if (PMC_IS_NULL(glb)) {
                 temp_globals = PMCNULL;

Modified: branches/tt362/src/pmc/fixedbooleanarray.pmc
==============================================================================
--- branches/tt362/src/pmc/fixedbooleanarray.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/fixedbooleanarray.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -90,7 +90,7 @@
     VTABLE PMC *clone() {
         unsigned char * my_bit_array, * clone_bit_array;
         UINTVAL         resize_threshold, size;
-        PMC *   const   dest   = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC *   const   dest   = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         GET_ATTR_bit_array(INTERP, SELF, my_bit_array);
         GET_ATTR_size(INTERP, SELF, size);
@@ -296,7 +296,7 @@
 */
 
     VTABLE PMC *get_pmc_keyed_int(INTVAL key) {
-        PMC  * const ret = pmc_new(INTERP, enum_class_Boolean);
+        PMC  * const ret = Parrot_pmc_new(INTERP, enum_class_Boolean);
         const INTVAL val = SELF.get_integer_keyed_int(key);
         VTABLE_set_integer_native(INTERP, ret, val);
         return ret;
@@ -427,7 +427,7 @@
 
     VTABLE void set_string_keyed_int(INTVAL key, STRING *value) {
         INTVAL tempInt;
-        PMC * const tempPMC = pmc_new(INTERP, enum_class_Boolean);
+        PMC * const tempPMC = Parrot_pmc_new(INTERP, enum_class_Boolean);
 
         VTABLE_set_string_native(INTERP, tempPMC, value);
         tempInt = VTABLE_get_integer(INTERP, tempPMC);
@@ -493,7 +493,7 @@
 */
 
     VTABLE PMC *get_iter() {
-        return pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
+        return Parrot_pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
     }
 
 

Modified: branches/tt362/src/pmc/fixedfloatarray.pmc
==============================================================================
--- branches/tt362/src/pmc/fixedfloatarray.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/fixedfloatarray.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -60,7 +60,7 @@
         INTVAL    size;
         FLOATVAL *self_float_array, *dest_float_array;
         size_t mem_size;
-        PMC   * const dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC   * const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         GET_ATTR_float_array(INTERP, SELF, self_float_array);
 
         if (!self_float_array)
@@ -89,7 +89,7 @@
 */
 
     VTABLE PMC *get_iter() {
-        return pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
+        return Parrot_pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
     }
 
 /*
@@ -248,7 +248,7 @@
 */
 
     VTABLE PMC *get_pmc_keyed_int(INTVAL key) {
-        PMC    * const ret = pmc_new(INTERP, enum_class_Float);
+        PMC    * const ret = Parrot_pmc_new(INTERP, enum_class_Float);
         const FLOATVAL val = SELF.get_number_keyed_int(key);
 
         VTABLE_set_number_native(INTERP, ret, val);
@@ -374,7 +374,7 @@
 
     VTABLE void set_string_keyed_int(INTVAL key, STRING *value) {
         FLOATVAL tempNum;
-        PMC * const tempPMC = pmc_new(INTERP, enum_class_Float);
+        PMC * const tempPMC = Parrot_pmc_new(INTERP, enum_class_Float);
 
         VTABLE_set_string_native(INTERP, tempPMC, value);
         tempNum = VTABLE_get_number(INTERP, tempPMC);

Modified: branches/tt362/src/pmc/fixedintegerarray.pmc
==============================================================================
--- branches/tt362/src/pmc/fixedintegerarray.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/fixedintegerarray.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -81,8 +81,8 @@
         INTVAL * int_array;
         PMC    * const dest =
             PObj_constant_TEST(SELF)
-                ? constant_pmc_new(INTERP, SELF->vtable->base_type)
-                : pmc_new(INTERP, SELF->vtable->base_type);
+                ? Parrot_pmc_new_constant(INTERP, SELF->vtable->base_type)
+                : Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         GET_ATTR_int_array(INTERP, SELF, int_array);
 
@@ -294,7 +294,7 @@
 */
 
     VTABLE PMC *get_pmc_keyed_int(INTVAL key) {
-        PMC  * const ret = pmc_new(INTERP, enum_class_Integer);
+        PMC  * const ret = Parrot_pmc_new(INTERP, enum_class_Integer);
         const INTVAL val = SELF.get_integer_keyed_int(key);
         VTABLE_set_integer_native(INTERP, ret, val);
         return ret;
@@ -422,10 +422,10 @@
 
     VTABLE void set_string_keyed_int(INTVAL key, STRING *value) {
         INTVAL tempInt;
-        PMC  * const tempPMC = temporary_pmc_new(INTERP, enum_class_Integer);
+        PMC  * const tempPMC = Parrot_pmc_new_temporary(INTERP, enum_class_Integer);
         VTABLE_set_string_native(INTERP, tempPMC, value);
         tempInt        = VTABLE_get_integer(INTERP, tempPMC);
-        temporary_pmc_free(interp, tempPMC);
+        Parrot_pmc_free_temporary(interp, tempPMC);
         SELF.set_integer_keyed_int(key, tempInt);
     }
 
@@ -532,7 +532,7 @@
 */
 
     VTABLE PMC *get_iter() {
-        return pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
+        return Parrot_pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
     }
 
 /*

Modified: branches/tt362/src/pmc/fixedpmcarray.pmc
==============================================================================
--- branches/tt362/src/pmc/fixedpmcarray.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/fixedpmcarray.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -102,7 +102,7 @@
 */
 
     VTABLE PMC *clone() {
-        PMC * const dest  = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const dest  = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         const INTVAL size = PMC_size(SELF);
 
         if (size) {
@@ -346,7 +346,7 @@
         box = SELF.get_pmc_keyed_int(k);
 
         if (box == NULL)
-            box = pmc_new(INTERP, enum_class_Undef);
+            box = Parrot_pmc_new(INTERP, enum_class_Undef);
 
         return VTABLE_get_pmc_keyed(INTERP, box, nextkey);
     }
@@ -418,7 +418,7 @@
 */
 
     VTABLE void set_integer_keyed_int(INTVAL key, INTVAL value) {
-        PMC * const val = pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
+        PMC * const val = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
                     enum_class_Integer));
 
         VTABLE_set_integer_native(INTERP, val, value);
@@ -436,7 +436,7 @@
 */
 
     VTABLE void set_integer_keyed(PMC *key, INTVAL value) {
-        PMC * const val = pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
+        PMC * const val = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
                     enum_class_Integer));
 
         VTABLE_set_integer_native(INTERP, val, value);
@@ -457,7 +457,7 @@
 */
 
     VTABLE void set_number_keyed_int(INTVAL key, FLOATVAL value) {
-        PMC * const val = pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
+        PMC * const val = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
                     enum_class_Float));
 
         VTABLE_set_number_native(INTERP, val, value);
@@ -487,7 +487,7 @@
 
             /* TT #1295: autovivify an Array and insert it in SELF */
             if (!box)
-                box = pmc_new(INTERP, SELF.type());
+                box = Parrot_pmc_new(INTERP, SELF.type());
 
             VTABLE_set_number_keyed(INTERP, box, nextkey, value);
         }
@@ -504,7 +504,7 @@
 */
 
     VTABLE void set_string_keyed_int(INTVAL key, STRING *value) {
-        PMC * const val = pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
+        PMC * const val = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
                     enum_class_String));
 
         VTABLE_set_string_native(INTERP, val, value);
@@ -523,7 +523,7 @@
 */
 
     VTABLE void set_string_keyed(PMC *key, STRING *value) {
-        PMC * const val = pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
+        PMC * const val = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
                     enum_class_String));
 
         VTABLE_set_string_native(INTERP, val, value);
@@ -575,7 +575,7 @@
 
             /* TT #1295: autovivify an Array and insert it in SELF */
             if (!box)
-                box = pmc_new(INTERP, SELF.type());
+                box = Parrot_pmc_new(INTERP, SELF.type());
 
             VTABLE_set_pmc_keyed(INTERP, box, nextkey, value);
         }
@@ -632,7 +632,7 @@
 */
 
     VTABLE PMC *get_iter() {
-        return pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
+        return Parrot_pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
     }
 
 /*

Modified: branches/tt362/src/pmc/fixedstringarray.pmc
==============================================================================
--- branches/tt362/src/pmc/fixedstringarray.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/fixedstringarray.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -76,7 +76,7 @@
     VTABLE PMC *clone() {
 
         STRING    **my_str_array, **dest_str_array;
-        PMC        *const dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC        *const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         GET_ATTR_str_array(INTERP, SELF, my_str_array);
 
@@ -150,7 +150,7 @@
 
 */
     VTABLE PMC *get_iter() {
-        return pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
+        return Parrot_pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
     }
 
 /*
@@ -296,7 +296,7 @@
 */
 
     VTABLE PMC *get_pmc_keyed_int(INTVAL key) {
-        PMC    * const ret = pmc_new(INTERP, enum_class_String);
+        PMC    * const ret = Parrot_pmc_new(INTERP, enum_class_String);
         STRING * const val = SELF.get_string_keyed_int(key);
 
         VTABLE_set_string_native(INTERP, ret, val);

Modified: branches/tt362/src/pmc/float.pmc
==============================================================================
--- branches/tt362/src/pmc/float.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/float.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -47,7 +47,7 @@
 
     VTABLE PMC *clone() {
         FLOATVAL fv;
-        PMC * const dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         GET_ATTR_fv(INTERP, SELF, fv);
         SET_ATTR_fv(INTERP, dest, fv);
         return dest;
@@ -134,12 +134,12 @@
 */
 
     VTABLE void set_integer_native(INTVAL value) {
-        pmc_reuse(INTERP, SELF, enum_class_Integer, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_Integer, 0);
         SELF.set_integer_native(value);
     }
 
     VTABLE void set_bool(INTVAL value) {
-        pmc_reuse(INTERP, SELF, enum_class_Boolean, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_Boolean, 0);
         SELF.set_bool(value);
     }
 
@@ -170,7 +170,7 @@
 */
 
     VTABLE void set_string_native(STRING *value) {
-        pmc_reuse(INTERP, SELF, enum_class_String, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_String, 0);
         SELF.set_string_native(value);
     }
 
@@ -204,7 +204,7 @@
     VTABLE PMC *neg(PMC *dest) {
         const FLOATVAL a = -SELF.get_number();
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest, a);
         return dest;
@@ -331,7 +331,7 @@
     VTABLE PMC *absolute(PMC *dest) {
         const FLOATVAL a = fabs(SELF.get_number());
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest, a);
         return dest;
@@ -416,110 +416,110 @@
 */
 
     METHOD acos() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         SET_ATTR_fv(INTERP, d, acos(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD cos() {
-        PMC * const d  = pmc_new(INTERP,
+        PMC * const d  = Parrot_pmc_new(INTERP,
                 Parrot_get_ctx_HLL_type(INTERP, enum_class_Float));
         SET_ATTR_fv(INTERP, d, cos(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD asec() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         SET_ATTR_fv(INTERP, d, acos(1.0 / SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD asin() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         SET_ATTR_fv(INTERP, d, asin(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD atan() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         SET_ATTR_fv(INTERP, d, atan(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD atan2(PMC *val) {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         SET_ATTR_fv(INTERP, d, atan2(SELF.get_number(), VTABLE_get_number(INTERP, val)));
         RETURN(PMC *d);
     }
 
     METHOD cosh() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         SET_ATTR_fv(INTERP, d, cosh(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD exp() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         SET_ATTR_fv(INTERP, d, exp(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD ln() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         SET_ATTR_fv(INTERP, d, log(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD log10() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         SET_ATTR_fv(INTERP, d, log10(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD log2() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         SET_ATTR_fv(INTERP, d, log(SELF.get_number()) / log(2.0));
         RETURN(PMC *d);
     }
 
     METHOD sec() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         SET_ATTR_fv(INTERP, d, 1.0 / cos(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD sech() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         SET_ATTR_fv(INTERP, d, 1.0 / cosh(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD sin() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         SET_ATTR_fv(INTERP, d, sin(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD sinh() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         SET_ATTR_fv(INTERP, d, sinh(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD tan() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         SET_ATTR_fv(INTERP, d, tan(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD tanh() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         SET_ATTR_fv(INTERP, d, tanh(SELF.get_number()));
         RETURN(PMC *d);
     }
 
     METHOD sqrt() {
-        PMC * const d  = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        PMC * const d  = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         SET_ATTR_fv(INTERP, d, sqrt(SELF.get_number()));
         RETURN(PMC *d);
     }

Modified: branches/tt362/src/pmc/hash.pmc
==============================================================================
--- branches/tt362/src/pmc/hash.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/hash.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -106,7 +106,7 @@
 */
 
     VTABLE PMC *clone() {
-        PMC * const dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         parrot_hash_clone(INTERP, (Hash *)SELF.get_pointer(),
                    (Hash *)VTABLE_get_pointer(INTERP, dest));
@@ -445,7 +445,7 @@
             box = hash_value_to_pmc(INTERP, hash, b->value);
         else {
             /* autovivify an Hash */
-            box = pmc_new(INTERP, SELF.type());
+            box = Parrot_pmc_new(INTERP, SELF.type());
             parrot_hash_put(INTERP, hash, keystr,
                     hash_value_from_pmc(INTERP, hash, box));
         }
@@ -625,7 +625,7 @@
             box = hash_value_to_pmc(INTERP, hash, b->value);
         else {
             /* autovivify an Hash */
-            box = pmc_new(INTERP, SELF.type());
+            box = Parrot_pmc_new(INTERP, SELF.type());
             parrot_hash_put(INTERP, hash, keystr,
                     hash_value_from_pmc(INTERP, hash, box));
         }
@@ -753,7 +753,7 @@
 
         /* autovivify an Hash */
         if (PMC_IS_NULL(box))
-            box = pmc_new(INTERP, SELF.type());
+            box = Parrot_pmc_new(INTERP, SELF.type());
 
         VTABLE_set_number_keyed(INTERP, box, nextkey, value);
     }
@@ -799,7 +799,7 @@
             box = hash_value_to_pmc(INTERP, hash, b->value);
         else {
             /* autovivify an Hash */
-            box = pmc_new(INTERP, SELF.type());
+            box = Parrot_pmc_new(INTERP, SELF.type());
             parrot_hash_put(INTERP, hash, keystr,
                     hash_value_from_pmc(INTERP, hash, box));
         }
@@ -994,7 +994,7 @@
 */
 
     VTABLE PMC *get_iter() {
-        return pmc_new_init(INTERP, enum_class_HashIterator, SELF);
+        return Parrot_pmc_new_init(INTERP, enum_class_HashIterator, SELF);
     }
 
 /*

Modified: branches/tt362/src/pmc/hashiterator.pmc
==============================================================================
--- branches/tt362/src/pmc/hashiterator.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/hashiterator.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -229,7 +229,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
                 "StopIteration");
 
-        ret = pmc_new(INTERP, enum_class_HashIteratorKey);
+        ret = Parrot_pmc_new(INTERP, enum_class_HashIteratorKey);
         VTABLE_set_pointer_keyed_int(INTERP, ret, 0, attrs->parrot_hash);
         VTABLE_set_pointer_keyed_int(INTERP, ret, 1, attrs->bucket);
 
@@ -246,7 +246,7 @@
     VTABLE STRING* shift_string() {
         PMC    * const key = SELF.shift_pmc();
         STRING * const ret = VTABLE_get_string(INTERP, key);
-        temporary_pmc_free(INTERP, key);
+        Parrot_pmc_free_temporary(INTERP, key);
         return ret;
     }
 

Modified: branches/tt362/src/pmc/imageio.pmc
==============================================================================
--- branches/tt362/src/pmc/imageio.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/imageio.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -150,7 +150,7 @@
             if (type <= 0 || type > interp->n_vtable_max)
                 Parrot_ex_throw_from_c_args(interp, NULL, 1, "Unknown PMC type to thaw %d", type);
 
-            pmc = pmc_new_noinit(interp, type);
+            pmc = Parrot_pmc_new_noinit(interp, type);
             VTABLE_thaw(interp, pmc, info);
 
             {
@@ -237,7 +237,7 @@
 */
     VTABLE void init() {
         PARROT_IMAGEIO(SELF)->buffer      = NULL;
-        PARROT_IMAGEIO(SELF)->todo        = pmc_new(INTERP, enum_class_ResizablePMCArray);
+        PARROT_IMAGEIO(SELF)->todo        = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
         PARROT_IMAGEIO(SELF)->seen        = PMCNULL;
         PARROT_IMAGEIO(SELF)->id          = 0;
         PARROT_IMAGEIO(SELF)->pf          = PackFile_new(INTERP, 0);
@@ -485,7 +485,7 @@
             PARROT_IMAGEIO(SELF)->pf->header, PACKFILE_HEADER_BYTES);
         INC_VISIT_CURSOR(SELF, header_length);
 
-        PARROT_IMAGEIO(SELF)->seen = pmc_new(INTERP, enum_class_Hash);
+        PARROT_IMAGEIO(SELF)->seen = Parrot_pmc_new(INTERP, enum_class_Hash);
         VTABLE_set_pointer(INTERP, PARROT_IMAGEIO(SELF)->seen,
             parrot_new_intval_hash(INTERP));
 

Modified: branches/tt362/src/pmc/imageiosize.pmc
==============================================================================
--- branches/tt362/src/pmc/imageiosize.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/imageiosize.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -18,19 +18,19 @@
 
 static void
 visit_todo_list_freeze(PARROT_INTERP, PMC* pmc, PMC* info) {
-    int new = 0;
+    int is_new = 0;
 
     if (!PMC_IS_NULL(pmc)) {
         Hash *hash = (Hash *)VTABLE_get_pointer(interp, PARROT_IMAGEIOSIZE(info)->seen);
         HashBucket * const b = parrot_hash_get_bucket(interp, hash, pmc);
-        seen = !b;
+        is_new = !b;
     }
 
     VTABLE_push_integer(interp, info, 0);
 
-    if (new) {
+    if (is_new) {
         Hash *hash = (Hash *)VTABLE_get_pointer(interp, PARROT_IMAGEIOSIZE(info)->seen);
-        parrot_hash_put(interp, hash, pmc, 1);
+        parrot_hash_put(interp, hash, pmc, pmc);
         VTABLE_push_integer(interp, info, pmc->vtable->base_type);
         VTABLE_push_pmc(interp, PARROT_IMAGEIOSIZE(info)->todo, pmc);
         VTABLE_freeze(interp, pmc, info);
@@ -63,11 +63,11 @@
 
 */
     VTABLE void init() {
-        PARROT_IMAGEIOSIZE(SELF)->todo = pmc_new(INTERP, enum_class_ResizablePMCArray);
+        PARROT_IMAGEIOSIZE(SELF)->todo = Parrot_pmc_new(INTERP, enum_class_ResizablePMCArray);
         PARROT_IMAGEIOSIZE(SELF)->pf   = PackFile_new(INTERP, 0);
         PARROT_IMAGEIOSIZE(SELF)->size = 0;
 
-        PARROT_IMAGEIOSIZE(SELF)->seen = pmc_new(INTERP, enum_class_Hash);
+        PARROT_IMAGEIOSIZE(SELF)->seen = Parrot_pmc_new(INTERP, enum_class_Hash);
         VTABLE_set_pointer(INTERP, PARROT_IMAGEIOSIZE(SELF)->seen,
             parrot_new_intval_hash(INTERP));
 
@@ -113,7 +113,7 @@
 */
 
     VTABLE PMC *get_pmc() {
-        PMC *ret = pmc_new(INTERP, enum_class_Integer);
+        PMC *ret = Parrot_pmc_new(INTERP, enum_class_Integer);
         VTABLE_set_integer_native(INTERP, ret, PARROT_IMAGEIOSIZE(SELF)->size);
         return ret;
     }

Modified: branches/tt362/src/pmc/integer.pmc
==============================================================================
--- branches/tt362/src/pmc/integer.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/integer.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -38,7 +38,7 @@
     /* Do an in-place upgrade to a Bignum of SELF and return a pointer
        to it (which is probably redundant, but whatever). */
     const INTVAL a = VTABLE_get_integer(interp, self);
-    pmc_reuse(interp, self, enum_class_BigInt, 0);
+    Parrot_pmc_reuse(interp, self, enum_class_BigInt, 0);
     VTABLE_set_integer_native(interp, self, a);
     return self;
 }
@@ -84,7 +84,7 @@
 
 */
     VTABLE PMC *clone() {
-        PMC * const clone = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const clone = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         VTABLE_set_integer_native(INTERP, clone, SELF.get_integer());
         return clone;
     }
@@ -230,20 +230,20 @@
 */
 
     VTABLE void set_number_native(FLOATVAL value) {
-        pmc_reuse(INTERP, SELF, enum_class_Float, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_Float, 0);
         SELF.set_number_native(value);
     }
 
 
     VTABLE void set_bool(INTVAL value) {
-        pmc_reuse(INTERP, SELF, enum_class_Boolean, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_Boolean, 0);
         SELF.set_bool(value);
     }
 
 
 
     VTABLE void set_string_native(STRING *value) {
-        pmc_reuse(INTERP, SELF, enum_class_String, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_String, 0);
         SELF.set_string_native(value);
     }
 
@@ -265,7 +265,7 @@
         const INTVAL c = a + b;
 
         if ((c^a) >= 0 || (c^b) >= 0) {
-            dest = pmc_new(INTERP, VTABLE_type(interp, SELF));
+            dest = Parrot_pmc_new(INTERP, VTABLE_type(interp, SELF));
 
             /* need this for e.g. Undef PMC */
             VTABLE_set_integer_native(INTERP, dest, c);
@@ -274,7 +274,7 @@
         else {
             PMC * temp;
             maybe_throw_overflow_error(interp);
-            temp = pmc_new(interp, enum_class_BigInt);
+            temp = Parrot_pmc_new(interp, enum_class_BigInt);
             VTABLE_set_integer_native(interp, temp, a);
             return VTABLE_add(interp, temp, value, dest);
         }
@@ -283,7 +283,7 @@
 
     MULTI PMC *add(Complex value, PMC *dest) {
         const INTVAL a = SELF.get_integer();
-        dest           = pmc_new(INTERP, VTABLE_type(INTERP, value));
+        dest           = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, value));
 
         VTABLE_set_number_native(INTERP, dest,
                 a + VTABLE_get_number_keyed_int(INTERP, value, 0));
@@ -297,14 +297,14 @@
     MULTI PMC *add(BigInt value, PMC *dest) {
         PMC *temp;
         maybe_throw_overflow_error(interp);
-        temp = pmc_new(interp, enum_class_BigInt);
+        temp = Parrot_pmc_new(interp, enum_class_BigInt);
         VTABLE_set_integer_native(interp, temp, SELF.get_integer());
         return VTABLE_add(interp, temp, value, dest);
     }
 
 
     MULTI PMC *add(DEFAULT value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(interp, value));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(interp, value));
 
         VTABLE_set_number_native(INTERP, dest,
                 SELF.get_integer() + VTABLE_get_number(INTERP, value));
@@ -317,7 +317,7 @@
         const INTVAL c = a + b;
 
         if ((c^a) >= 0 || (c^b) >= 0) {
-            dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+            dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
             VTABLE_set_integer_native(INTERP, dest, c);
             return dest;
@@ -325,7 +325,7 @@
         else {
             PMC *temp;
             maybe_throw_overflow_error(interp);
-            temp = pmc_new(interp, enum_class_BigInt);
+            temp = Parrot_pmc_new(interp, enum_class_BigInt);
             VTABLE_set_integer_native(interp, temp, a);
             return VTABLE_add_int(interp, temp, b, dest);
         }
@@ -354,7 +354,7 @@
     MULTI void i_add(Complex value) {
         const INTVAL a = SELF.get_integer();
 
-        pmc_reuse(INTERP, SELF, enum_class_Complex, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_Complex, 0);
         VTABLE_set_number_native(INTERP, SELF,
                 SELF.get_integer() + VTABLE_get_number(INTERP, value));
     }
@@ -407,7 +407,7 @@
         const INTVAL c = a - b;
 
         if ((c^a) >= 0 || (c^~b) >= 0) {
-            dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+            dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
             VTABLE_set_integer_native(INTERP, dest, c);
             return dest;
@@ -415,7 +415,7 @@
         else {
             PMC *temp;
             maybe_throw_overflow_error(interp);
-            temp = pmc_new(interp, enum_class_BigInt);
+            temp = Parrot_pmc_new(interp, enum_class_BigInt);
             VTABLE_set_integer_native(interp, temp, a);
             return VTABLE_subtract(interp, temp, value, dest);
         }
@@ -424,7 +424,7 @@
 
     MULTI PMC *subtract(Complex value, PMC *dest) {
         const INTVAL a = SELF.get_integer();
-        dest           = pmc_new(INTERP, VTABLE_type(INTERP, value));
+        dest           = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, value));
 
         VTABLE_set_number_native(INTERP, dest,
                 a - VTABLE_get_number_keyed_int(INTERP, value, 0));
@@ -438,14 +438,14 @@
     MULTI PMC *subtract(BigInt value, PMC *dest) {
         PMC *temp;
         maybe_throw_overflow_error(interp);
-        temp = pmc_new(interp, enum_class_BigInt);
+        temp = Parrot_pmc_new(interp, enum_class_BigInt);
         VTABLE_set_integer_native(interp, temp, SELF.get_integer());
         return VTABLE_subtract(interp, temp, value, dest);
     }
 
 
     MULTI PMC *subtract(DEFAULT value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, value));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, value));
 
         VTABLE_set_number_native(INTERP, dest,
                 SELF.get_integer() - VTABLE_get_number(INTERP, value));
@@ -468,7 +468,7 @@
         const INTVAL c = a - b;
 
         if ((c^a) >= 0 || (c^~b) >= 0) {
-            dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+            dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
             VTABLE_set_integer_native(INTERP, dest, c);
             return dest;
@@ -476,7 +476,7 @@
         else {
             PMC *temp;
             maybe_throw_overflow_error(interp);
-            temp = pmc_new(interp, enum_class_BigInt);
+            temp = Parrot_pmc_new(interp, enum_class_BigInt);
             VTABLE_set_integer_native(interp, temp, a);
             return VTABLE_subtract_int(interp, temp, b, dest);
         }
@@ -515,7 +515,7 @@
     MULTI void i_subtract(Complex value) {
         const INTVAL a = SELF.get_integer();
 
-        pmc_reuse(INTERP, SELF, enum_class_Complex, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_Complex, 0);
         VTABLE_set_number_native(INTERP, SELF,
                 (FLOATVAL)a - VTABLE_get_number_keyed_int(INTERP, value, 0));
         VTABLE_set_number_keyed_int(INTERP, SELF, 1,
@@ -568,7 +568,7 @@
         const double cf = (double)a * (double)b;
 
         if ((double) c == cf) {
-            dest = pmc_new(INTERP, VTABLE_type(interp, SELF));
+            dest = Parrot_pmc_new(INTERP, VTABLE_type(interp, SELF));
 
             VTABLE_set_integer_native(INTERP, dest, c);
             return dest;
@@ -576,7 +576,7 @@
         else {
             PMC *temp;
             maybe_throw_overflow_error(INTERP);
-            temp = pmc_new(interp, enum_class_BigInt);
+            temp = Parrot_pmc_new(interp, enum_class_BigInt);
             VTABLE_set_integer_native(interp, temp, a);
             return VTABLE_multiply(INTERP, temp, value, dest);
         }
@@ -600,7 +600,7 @@
 
     MULTI PMC *multiply(DEFAULT value, PMC *dest) {
         const FLOATVAL valf = VTABLE_get_number(INTERP, value);
-        dest                = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest                = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest, SELF.get_number() * valf);
         return dest;
@@ -613,7 +613,7 @@
         const double cf = (double)a * (double)b;
 
         if ((double) c == cf) {
-            dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+            dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
             VTABLE_set_integer_native(INTERP, dest, c);
             return dest;
@@ -621,7 +621,7 @@
         else {
             PMC *temp;
             maybe_throw_overflow_error(INTERP);
-            temp = pmc_new(interp, enum_class_BigInt);
+            temp = Parrot_pmc_new(interp, enum_class_BigInt);
             VTABLE_set_integer_native(interp, temp, a);
             return VTABLE_multiply_int(INTERP, temp, b, dest);
         }
@@ -708,7 +708,7 @@
     MULTI PMC *divide(BigInt value, PMC *dest) {
         PMC *temp;
         maybe_throw_overflow_error(INTERP);
-        temp = pmc_new(interp, enum_class_BigInt);
+        temp = Parrot_pmc_new(interp, enum_class_BigInt);
         VTABLE_set_integer_native(interp, temp, SELF.get_integer());
         return VTABLE_divide(INTERP, temp, value, dest);
     }
@@ -720,7 +720,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                     "float division by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         VTABLE_set_number_native(INTERP, dest, SELF.get_number() / d);
         return dest;
     }
@@ -769,7 +769,7 @@
     MULTI PMC *floor_divide(BigInt value, PMC *dest) {
         PMC *temp;
         maybe_throw_overflow_error(INTERP);
-        temp = pmc_new(interp, enum_class_BigInt);
+        temp = Parrot_pmc_new(interp, enum_class_BigInt);
         VTABLE_set_integer_native(interp, temp, SELF.get_integer());
         return VTABLE_floor_divide(INTERP, temp, value, dest);
     }
@@ -783,7 +783,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                     "float division by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         f = floor(SELF.get_number() / d);
         VTABLE_set_integer_native(INTERP, dest, (INTVAL)f);
@@ -798,7 +798,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                     "float division by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         f = floor(SELF.get_number() / value);
         VTABLE_set_integer_native(INTERP, dest, (INTVAL)f);
@@ -813,7 +813,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                     "float division by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         f = floor(SELF.get_number() / value);
         VTABLE_set_integer_native(INTERP, dest, (INTVAL)f);
@@ -892,7 +892,7 @@
     MULTI PMC *modulus(BigInt value, PMC *dest) {
         PMC *temp;
         maybe_throw_overflow_error(INTERP);
-        temp = pmc_new(interp, enum_class_BigInt);
+        temp = Parrot_pmc_new(interp, enum_class_BigInt);
         VTABLE_set_integer_native(interp, temp, SELF.get_integer());
         return VTABLE_modulus(INTERP, temp, value, dest);
     }
@@ -905,7 +905,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                     "int modulus by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_integer_native(INTERP, dest,
                 intval_mod(SELF.get_integer(), d));
@@ -918,7 +918,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                     "int modulus by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_integer_native(INTERP, dest,
                 intval_mod(SELF.get_integer(), value));
@@ -931,7 +931,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                     "int modulus by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_integer_native(INTERP, dest,
                 intval_mod(SELF.get_integer(), (INTVAL)value));
@@ -993,7 +993,7 @@
 
         switch (value->vtable->base_type) {
           case enum_class_BigInt:
-            temp = pmc_new(INTERP, enum_class_BigInt);
+            temp = Parrot_pmc_new(INTERP, enum_class_BigInt);
             VTABLE_set_integer_native(INTERP, temp, SELF.get_integer());
             Parrot_mmd_multi_dispatch_from_c_args(interp,
                     "is_equal", "PP->I", temp, value, &retval);
@@ -1107,7 +1107,7 @@
         if ((c^a) >= 0 || (c^1) >= 0)
             SET_ATTR_iv(interp, SELF, c);
         else {
-            pmc_reuse(interp, SELF, enum_class_BigInt, 0);
+            Parrot_pmc_reuse(interp, SELF, enum_class_BigInt, 0);
             VTABLE_set_integer_native(interp, SELF, a);
             VTABLE_increment(interp, SELF);
         }
@@ -1131,7 +1131,7 @@
         if ((c^a) >= 0 || (c^~1) >= 0)
             VTABLE_set_integer_native(interp, SELF, c);
         else {
-            pmc_reuse(INTERP, SELF, enum_class_BigInt, 0);
+            Parrot_pmc_reuse(INTERP, SELF, enum_class_BigInt, 0);
             VTABLE_set_integer_native(interp, SELF, a);
             VTABLE_decrement(interp, SELF);
         }
@@ -1154,7 +1154,7 @@
         const INTVAL a = abs(SELF.get_integer());
 
         /* TT # 1245 overflow for -maxint */
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_integer_native(INTERP, dest, a);
         return dest;

Modified: branches/tt362/src/pmc/key.pmc
==============================================================================
--- branches/tt362/src/pmc/key.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/key.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -54,7 +54,7 @@
 */
 
     VTABLE PMC *clone() {
-        PMC * const dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         PMC *dkey        = dest;
         PMC *key         = SELF;
 

Modified: branches/tt362/src/pmc/lexinfo.pmc
==============================================================================
--- branches/tt362/src/pmc/lexinfo.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/lexinfo.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -95,7 +95,7 @@
 
     VTABLE PMC *inspect_str(STRING *what) {
         if (Parrot_str_equal(interp, what, CONST_STRING(interp, "symbols"))) {
-            PMC *result     = pmc_new(interp, enum_class_ResizableStringArray);
+            PMC *result     = Parrot_pmc_new(interp, enum_class_ResizableStringArray);
             Hash *hash      = (Hash *)SELF.get_pointer();
             UINTVAL entries = hash->entries;
             UINTVAL found   = 0;

Modified: branches/tt362/src/pmc/managedstruct.pmc
==============================================================================
--- branches/tt362/src/pmc/managedstruct.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/managedstruct.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -142,7 +142,7 @@
             void *clone_data = PARROT_MANAGEDSTRUCT(SELF)->custom_clone_priv;
             return clone_func(interp, SELF, clone_data);
         }
-        dest = pmc_new_init(interp, SELF->vtable->base_type,
+        dest = Parrot_pmc_new_init(interp, SELF->vtable->base_type,
             PARROT_MANAGEDSTRUCT(SELF)->init);
 
         if (PARROT_MANAGEDSTRUCT(SELF)->ptr)

Modified: branches/tt362/src/pmc/namespace.pmc
==============================================================================
--- branches/tt362/src/pmc/namespace.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/namespace.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -36,7 +36,7 @@
     else {
         /* If we don't have a place to hang methods, make one. */
         if (PMC_IS_NULL(nsinfo->methods))
-            nsinfo->methods = pmc_new(interp, enum_class_Hash);
+            nsinfo->methods = Parrot_pmc_new(interp, enum_class_Hash);
 
         /* Insert it. */
         VTABLE_set_pmc_keyed_str(interp, nsinfo->methods, key, value);
@@ -70,7 +70,7 @@
         else {
             /* If we don't have a place to hang vtable methods, make one. */
             if (PMC_IS_NULL(vtable))
-                nsinfo->vtable = vtable = pmc_new(interp, enum_class_Hash);
+                nsinfo->vtable = vtable = Parrot_pmc_new(interp, enum_class_Hash);
 
             /* Insert it. */
             VTABLE_set_pmc_keyed_int(interp, vtable, sub->vtable_index, value);
@@ -312,7 +312,7 @@
             }
             else {
                 /* create new tuple */
-                new_tuple = pmc_new(INTERP, enum_class_FixedPMCArray);
+                new_tuple = Parrot_pmc_new(INTERP, enum_class_FixedPMCArray);
 
                 /* flag it as special */
                 PObj_get_FLAGS(new_tuple) |= FPA_is_ns_ext;
@@ -387,7 +387,8 @@
     }
 
     VTABLE PMC *get_pmc_keyed_str(STRING *key) {
-        PMC *ns = (PMC *)parrot_hash_get(INTERP, (Hash *)SELF.get_pointer(), key);
+        Hash * const hash = (Hash *)SELF.get_pointer();
+        PMC *ns = (PMC *)parrot_hash_get(INTERP, hash, key);
 
         if (!ns)
             return PMCNULL;
@@ -400,8 +401,10 @@
     }
 
     VTABLE PMC *get_pmc_keyed(PMC *key) {
-        /* PMC    *ns = SUPER(key); */
+        PMC *ns = SUPER(key);
+        /* Is this equivalent?
         PMC    *ns = INTERP->vtables[enum_class_Hash]->get_pmc_keyed(INTERP, SELF, key);
+        */
 
         if (!PMC_IS_NULL(ns))
             return ns;
@@ -422,9 +425,29 @@
 
             return VTABLE_get_pmc_keyed(INTERP, ns, key);
         }
-
+        else if (VTABLE_does(INTERP, key, CONST_STRING(INTERP, "array"))) {
+            INTVAL i = 0;
+            while (!PMC_IS_NULL(ns) && VTABLE_elements(INTERP, key)) {
+                STRING * const name = VTABLE_get_string_keyed_int(INTERP, key, i);
+                if (name == NULL || name == STRINGNULL) {
+                    ns = PMCNULL;
+                    /* What to do here? Throw an exception or something? */
+                    break;
+                }
+                ns = Parrot_get_namespace_keyed_str(INTERP, ns, name);
+                i++;
+            }
+            return ns;
+        }
+        else {
+            STRING * const name = VTABLE_get_string(INTERP, key);
+            ns = Parrot_get_namespace_keyed_str(INTERP, ns, name);
+            return ns;
+        }
+        /* If we get the wrong type, should we throw an exception?
         Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_GLOBAL_NOT_FOUND,
             "Invalid namespace key in get_pmc_keyed_str");
+        */
     }
 
     VTABLE PMC *get_pmc_keyed_int(INTVAL key) {
@@ -634,7 +657,7 @@
 */
 
     METHOD get_name() {
-        PMC * const ar = pmc_new(INTERP, enum_class_ResizableStringArray);
+        PMC * const ar = Parrot_pmc_new(INTERP, enum_class_ResizableStringArray);
         INTVAL elements = 0;
         PMC *ns        = SELF;
 

Modified: branches/tt362/src/pmc/nci.pmc
==============================================================================
--- branches/tt362/src/pmc/nci.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/nci.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -254,7 +254,7 @@
         Parrot_NCI_attributes *nci_info_ret;
         void                  *orig_func;
 
-        PMC * const ret     = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const ret     = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         nci_info_ret        = PARROT_NCI(ret);
 
         /* FIXME if data is malloced (JIT/i386!) then we need

Modified: branches/tt362/src/pmc/object.pmc
==============================================================================
--- branches/tt362/src/pmc/object.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/object.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -126,7 +126,7 @@
     GETATTR_Class_meth_cache(interp, _class, cache);
 
     if (PMC_IS_NULL(cache)) {
-        cache = pmc_new(interp, enum_class_Hash);
+        cache = Parrot_pmc_new(interp, enum_class_Hash);
         SETATTR_Class_meth_cache(interp, _class, cache);
     }
 
@@ -812,7 +812,7 @@
         UNLOCK_INTERPRETER(master);
 
         ret = SELF;
-        _true = pmc_new(INTERP, enum_class_Integer);
+        _true = Parrot_pmc_new(INTERP, enum_class_Integer);
 
         /* Setting the '_ro' property switches to the read-only vtable */
         VTABLE_set_integer_native(INTERP, _true, 1);

Copied: branches/tt362/src/pmc/opcode.pmc (from r44202, trunk/src/pmc/opcode.pmc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/tt362/src/pmc/opcode.pmc	Fri Feb 19 22:23:20 2010	(r44203, copy of r44202, trunk/src/pmc/opcode.pmc)
@@ -0,0 +1,96 @@
+/*
+Copyright (C) 2010, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/pmc/opcode.pmc
+
+=head1 DESCRIPTION
+
+Implements opcode VTABLEs.
+
+=cut
+
+*/
+
+#include "parrot/parrot.h"
+
+pmclass Opcode auto_attrs {
+    ATTR op_info_t *info;
+    ATTR INTVAL op_number;
+    ATTR STRING *full_name_cache;
+
+    VTABLE void init() {
+        Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+            "Opcode must be created from OpLib.");
+    }
+
+    VTABLE void mark() {
+        Parrot_Opcode_attributes * const attrs = PARROT_OPCODE(SELF);
+        if (attrs->full_name_cache)
+            Parrot_gc_mark_STRING_alive(INTERP, attrs->full_name_cache);
+    }
+
+    VTABLE void set_pointer(void *i) {
+        Parrot_Opcode_attributes * const attrs = PARROT_OPCODE(SELF);
+        if (attrs->info)
+            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+                "Opcode has already been initialized");
+        attrs->info = (op_info_t *)i;
+    }
+
+    VTABLE void set_string_native(STRING *name) {
+        char * cstr = Parrot_str_to_cstring(INTERP, name);
+        const INTVAL num = INTERP->op_lib->op_code(cstr, 1);
+        Parrot_str_free_cstring(cstr);
+        if (num == -1)
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
+                "Opcode: Opcode %S not found", name);
+        VTABLE_set_integer_native(INTERP, SELF, num);
+    }
+
+    VTABLE INTVAL get_integer() {
+        Parrot_Opcode_attributes * const attrs = PARROT_OPCODE(SELF);
+        if (!attrs->info)
+            return -1;
+        return attrs->op_number;
+    }
+
+    VTABLE void set_integer_native(INTVAL value) {
+        const INTVAL opcount = INTERP->op_lib->op_count;
+        Parrot_Opcode_attributes * const attrs = PARROT_OPCODE(SELF);
+        if (attrs->info)
+            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
+                "Opcode has already been initialized");
+        if (value >= opcount || value < 0)
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
+                "Opcode: Opcode index %d out of bounds", value);
+        attrs->info = &(INTERP->op_info_table[value]);
+        attrs->op_number = value;
+    }
+
+    VTABLE STRING* get_string() {
+        Parrot_Opcode_attributes * const attrs = PARROT_OPCODE(SELF);
+        if (attrs->full_name_cache == NULL) {
+            const char * const name = attrs->info->full_name;
+            const INTVAL len = strlen(name);
+            STRING * const newstr = Parrot_str_new(INTERP, name, len);
+            attrs->full_name_cache = newstr;
+        }
+        return attrs->full_name_cache;
+    }
+
+    METHOD op_count() {
+        Parrot_Opcode_attributes * const attrs = PARROT_OPCODE(SELF);
+        INTVAL count = attrs->info->op_count;
+        RETURN(INTVAL count);
+    }
+}
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */

Copied: branches/tt362/src/pmc/oplib.pmc (from r44202, trunk/src/pmc/oplib.pmc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/tt362/src/pmc/oplib.pmc	Fri Feb 19 22:23:20 2010	(r44203, copy of r44202, trunk/src/pmc/oplib.pmc)
@@ -0,0 +1,82 @@
+/*
+Copyright (C) 2010, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/pmc/oplib.pmc
+
+=head1 DESCRIPTION
+
+Implements oplib  VTABLEs.
+
+=cut
+
+*/
+
+#include "parrot/parrot.h"
+
+/* TODO: Since Opcode PMCs are essentially read-only after initialization
+         here, we should cache them. A FixedPMCArray would be okay, an
+         INTVAL->PMC HASH might be better, since it's unlike that we will
+         need to cache even a majority of the ~1300 ops. */
+static PMC *OPLIB_PMC_INSTANCE;
+pmclass OpLib {
+    void class_init() {
+        OPLIB_PMC_INSTANCE = NULL;
+    }
+
+    VTABLE void *get_pointer() {
+        return OPLIB_PMC_INSTANCE;
+    }
+
+    VTABLE void set_pointer(void *ptr) {
+        OPLIB_PMC_INSTANCE = (PMC *)ptr;
+    }
+
+    /* Look up an opnumber given the name of the op. First we look for the
+       specific name, then the more general short name. */
+    VTABLE INTVAL get_integer_keyed_str(STRING *name) {
+        char * cstr = Parrot_str_to_cstring(INTERP, name);
+        INTVAL num = INTERP->op_lib->op_code(cstr, 1);
+        if (num == -1)
+            num = INTERP->op_lib->op_code(cstr, 0);
+        Parrot_str_free_cstring(cstr);
+        return num;
+    }
+
+    VTABLE INTVAL get_integer_keyed(PMC *key) {
+        STRING *str_key = key_string(INTERP, key);
+        return SELF.get_integer_keyed_str(str_key);
+    }
+
+    VTABLE PMC* get_pmc_keyed_str(STRING *name) {
+        PMC * const op = Parrot_pmc_new_noinit(INTERP, enum_class_Opcode);
+        VTABLE_set_string_native(INTERP, op, name);
+        PObj_custom_mark_SET(op);
+        return op;
+    }
+
+    VTABLE PMC* get_pmc_keyed(PMC *key) {
+        STRING * const strkey = VTABLE_get_string(INTERP, key);
+        return VTABLE_get_pmc_keyed_str(INTERP, SELF, strkey);
+    }
+
+    VTABLE PMC* get_pmc_keyed_int(INTVAL value) {
+        PMC * const op = Parrot_pmc_new_noinit(INTERP, enum_class_Opcode);
+        VTABLE_set_integer_native(INTERP, op, value);
+        PObj_custom_mark_SET(op);
+        return op;
+    }
+
+    VTABLE INTVAL get_integer() {
+        return INTERP->op_lib->op_count;
+    }
+}
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */

Modified: branches/tt362/src/pmc/orderedhash.pmc
==============================================================================
--- branches/tt362/src/pmc/orderedhash.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/orderedhash.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -80,7 +80,7 @@
 /* Create new stored item. FixedPMCArray of (key, value, prev, next). */
 static PMC*
 create_item(PARROT_INTERP, ARGIN(PMC *key), ARGIN(PMC *value)) {
-    PMC *ret = pmc_new(interp, enum_class_FixedPMCArray);
+    PMC *ret = Parrot_pmc_new(interp, enum_class_FixedPMCArray);
     VTABLE_set_integer_native(interp, ret, ORDERED_HASH_ITEM_MAX);
 
     VTABLE_set_pmc_keyed_int(interp, ret, ORDERED_HASH_ITEM_KEY, key);
@@ -130,7 +130,7 @@
 /* Helpers for boxing values */
 static PMC*
 box_string(PARROT_INTERP, STRING *str) {
-    PMC * const ret = pmc_new(interp, Parrot_get_ctx_HLL_type(interp,
+    PMC * const ret = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp,
                 enum_class_String));
     VTABLE_set_string_native(interp, ret, str);
     return ret;
@@ -138,7 +138,7 @@
 
 static PMC*
 box_integer(PARROT_INTERP, INTVAL val) {
-    PMC * const ret = pmc_new(interp, Parrot_get_ctx_HLL_type(interp,
+    PMC * const ret = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp,
                 enum_class_Integer));
     VTABLE_set_integer_native(interp, ret, val);
     return ret;
@@ -146,7 +146,7 @@
 
 static PMC*
 box_number(PARROT_INTERP, FLOATVAL val) {
-    PMC * const ret = pmc_new(interp, Parrot_get_ctx_HLL_type(interp,
+    PMC * const ret = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp,
                 enum_class_Float));
     VTABLE_set_number_native(interp, ret, val);
     return ret;
@@ -173,7 +173,7 @@
                 mem_allocate_zeroed_typed(Parrot_OrderedHash_attributes);
 
         PMC_data(SELF)  = attrs;
-        attrs->hash     = pmc_new(INTERP, enum_class_Hash);
+        attrs->hash     = Parrot_pmc_new(INTERP, enum_class_Hash);
         attrs->first    = PMCNULL;
         attrs->last     = PMCNULL;
 
@@ -211,7 +211,7 @@
 */
 
     VTABLE PMC *get_iter() {
-        return pmc_new_init(INTERP, enum_class_OrderedHashIterator, SELF);
+        return Parrot_pmc_new_init(INTERP, enum_class_OrderedHashIterator, SELF);
     }
 
 /*
@@ -269,7 +269,7 @@
         }
 
         /* Create new entry */
-        list_entry = pmc_new(INTERP, enum_class_FixedPMCArray);
+        list_entry = Parrot_pmc_new(INTERP, enum_class_FixedPMCArray);
         VTABLE_set_integer_native(INTERP, list_entry, ORDERED_HASH_ITEM_MAX);
         VTABLE_set_pmc_keyed_int(INTERP, list_entry, ORDERED_HASH_ITEM_VALUE, value);
         VTABLE_set_pmc_keyed_int(INTERP, list_entry, ORDERED_HASH_ITEM_KEY, key);
@@ -337,7 +337,7 @@
         /* Now we have chicken and egg problem during freeze/thaw */
         /* When we try to thaw OrderedHash which stores HLL mapping */
         /* Reported by François Perrad */
-        PMC *pkey = pmc_new(INTERP, enum_class_String);
+        PMC *pkey = Parrot_pmc_new(INTERP, enum_class_String);
         VTABLE_set_string_native(INTERP, pkey, key);
         VTABLE_set_pmc_keyed(INTERP, SELF, pkey, value);
     }
@@ -392,7 +392,7 @@
     }
 
     VTABLE PMC *get_pmc_keyed_str(STRING *key) {
-        PMC *pkey = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_String));
+        PMC *pkey = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_String));
         VTABLE_set_string_native(INTERP, pkey, key);
         return STATICSELF.get_pmc_keyed(pkey);
     }
@@ -506,21 +506,21 @@
     }
 
     VTABLE void set_integer_keyed_int(INTVAL idx, INTVAL value) {
-        PMC * const v = pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
+        PMC * const v = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
                     enum_class_Integer));
         VTABLE_set_integer_native(INTERP, v, value);
         SELF.set_pmc_keyed_int(idx, v);
     }
 
     VTABLE void set_number_keyed_int(INTVAL idx, FLOATVAL value) {
-        PMC * const v = pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
+        PMC * const v = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
                     enum_class_Float));
         VTABLE_set_number_native(INTERP, v, value);
         SELF.set_pmc_keyed_int(idx, v);
     }
 
     VTABLE void set_string_keyed_int(INTVAL idx, STRING *value) {
-        PMC * const v = pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
+        PMC * const v = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(INTERP,
                     enum_class_String));
         VTABLE_set_string_native(INTERP, v, value);
         SELF.set_pmc_keyed_int(idx, v);
@@ -715,7 +715,7 @@
 */
 
     VTABLE PMC *clone() {
-        PMC  * const dest   = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC  * const dest   = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         Parrot_OrderedHash_attributes *clone_attrs =
                 PARROT_ORDEREDHASH(dest);
 

Modified: branches/tt362/src/pmc/os.pmc
==============================================================================
--- branches/tt362/src/pmc/os.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/os.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -237,7 +237,7 @@
                 errmsg);
         }
         else {
-            PMC * const array = pmc_new(INTERP, enum_class_FixedPMCArray);
+            PMC * const array = Parrot_pmc_new(INTERP, enum_class_FixedPMCArray);
             VTABLE_set_integer_native(INTERP, array, 13);
 
             VTABLE_set_integer_keyed_int(INTERP, array,  0,
@@ -315,7 +315,7 @@
                 errmsg);
         }
         else {
-            PMC * const array = pmc_new(INTERP, enum_class_FixedPMCArray);
+            PMC * const array = Parrot_pmc_new(INTERP, enum_class_FixedPMCArray);
             VTABLE_set_integer_native(INTERP, array, 13);
 
             VTABLE_set_integer_keyed_int(INTERP, array,  0,
@@ -490,7 +490,7 @@
                 errmsg);
         }
 
-        array = pmc_new(INTERP, enum_class_ResizableStringArray);
+        array = Parrot_pmc_new(INTERP, enum_class_ResizableStringArray);
 
         while ((dirent = readdir(dir)) != NULL) {
             retval = Parrot_str_new(INTERP, dirent->d_name, 0) ;

Modified: branches/tt362/src/pmc/packfile.pmc
==============================================================================
--- branches/tt362/src/pmc/packfile.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/packfile.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -71,7 +71,7 @@
         PackFile                   *pf;
 
         attrs->uuid     = Parrot_str_new_noinit(INTERP, enum_stringrep_one, 0);
-        attrs->directory = pmc_new(INTERP, enum_class_PackfileDirectory);
+        attrs->directory = Parrot_pmc_new(INTERP, enum_class_PackfileDirectory);
 
         /* Create dummy PackFile and copy default attributes to self */
         pf = PackFile_new(interp, 0);

Modified: branches/tt362/src/pmc/packfileannotations.pmc
==============================================================================
--- branches/tt362/src/pmc/packfileannotations.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/packfileannotations.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -49,7 +49,7 @@
         Parrot_PackfileAnnotations_attributes * attrs =
                 PMC_data_typed(SELF, Parrot_PackfileAnnotations_attributes*);
 
-        attrs->annotations = pmc_new(interp, enum_class_ResizablePMCArray);
+        attrs->annotations = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
         /*
         Don't initialize C<const_table>. It will be set to NULL bu auto_attrs
         handling. And should be set to proper PMC in set_directory.
@@ -220,7 +220,7 @@
         for (i = 0; i < a->num_entries; ++i) {
             PackFile_Annotations_Entry *entry = a->entries[i];
             PackFile_Annotations_Key   *key   = a->keys[entry->key];
-            annotation = pmc_new(interp, enum_class_PackfileAnnotation);
+            annotation = Parrot_pmc_new(interp, enum_class_PackfileAnnotation);
 
             /* Poke directly to annotation attributes. */
             annotation_attrs         = PARROT_PACKFILEANNOTATION(annotation);
@@ -289,9 +289,9 @@
                 ...
             ]
         */
-        keys        = pmc_new(interp, enum_class_Hash);
-        names       = pmc_new(interp, enum_class_ResizableIntegerArray);
-        types       = pmc_new(interp, enum_class_ResizableIntegerArray);
+        keys        = Parrot_pmc_new(interp, enum_class_Hash);
+        names       = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
+        types       = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
         last_key_id = -1;
 
         /* Iterate over stored annotations and create Key if required. */
@@ -306,7 +306,7 @@
             PMC * key_array = VTABLE_get_pmc_keyed_str(interp, keys, entity_attrs->name);
             if (PMC_IS_NULL(key_array)) {
                 /* Never see this name before. Create new FIA and add to keys. */
-                key_array = pmc_new(interp, enum_class_FixedIntegerArray);
+                key_array = Parrot_pmc_new(interp, enum_class_FixedIntegerArray);
                 VTABLE_set_integer_native(interp, key_array, 3);
                 VTABLE_set_integer_keyed_int(interp, key_array, 0, -1);
                 VTABLE_set_integer_keyed_int(interp, key_array, 1, -1);

Modified: branches/tt362/src/pmc/packfileconstanttable.pmc
==============================================================================
--- branches/tt362/src/pmc/packfileconstanttable.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/packfileconstanttable.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -45,8 +45,8 @@
         Parrot_PackfileConstantTable_attributes * attrs =
                 PMC_data_typed(SELF, Parrot_PackfileConstantTable_attributes*);
 
-        attrs->constants = pmc_new(interp, enum_class_ResizablePMCArray);
-        attrs->types     = pmc_new(interp, enum_class_ResizableIntegerArray);
+        attrs->constants = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+        attrs->types     = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
 
         PObj_custom_mark_SET(SELF);
         PMC_data(SELF) = attrs;

Modified: branches/tt362/src/pmc/packfiledirectory.pmc
==============================================================================
--- branches/tt362/src/pmc/packfiledirectory.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/packfiledirectory.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -42,7 +42,7 @@
         Parrot_PackfileDirectory_attributes * attrs =
                 PMC_data_typed(SELF, Parrot_PackfileDirectory_attributes*);
 
-        attrs->hash = pmc_new(interp, enum_class_Hash);
+        attrs->hash = Parrot_pmc_new(interp, enum_class_Hash);
 
         PObj_custom_mark_SET(SELF);
     }
@@ -110,7 +110,7 @@
                 break;
             }
 
-            segment = pmc_new(interp, pmc_type);
+            segment = Parrot_pmc_new(interp, pmc_type);
             name    = pfseg->name;
             VTABLE_set_pmc_keyed_str(interp, SELF, name, segment);
 

Modified: branches/tt362/src/pmc/packfilefixuptable.pmc
==============================================================================
--- branches/tt362/src/pmc/packfilefixuptable.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/packfilefixuptable.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -42,7 +42,7 @@
         Parrot_PackfileFixupTable_attributes * attrs =
                 PMC_data_typed(SELF, Parrot_PackfileFixupTable_attributes*);
 
-        attrs->entries = pmc_new(interp, enum_class_ResizablePMCArray);
+        attrs->entries = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
 
         PObj_custom_mark_SET(SELF);
     }
@@ -89,7 +89,7 @@
 
         for (i = 0; i < table->fixup_count; ++i) {
             val = table->fixups[i];
-            entry = pmc_new(interp, enum_class_PackfileFixupEntry);
+            entry = Parrot_pmc_new(interp, enum_class_PackfileFixupEntry);
             VTABLE_set_pointer(interp, entry, (void*)val);
             VTABLE_set_pmc_keyed_int(interp, attrs->entries, i, entry);
         }

Modified: branches/tt362/src/pmc/packfilerawsegment.pmc
==============================================================================
--- branches/tt362/src/pmc/packfilerawsegment.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/packfilerawsegment.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -44,7 +44,7 @@
         Parrot_PackfileRawSegment_attributes * attrs =
                 PMC_data_typed(SELF, Parrot_PackfileRawSegment_attributes*);
 
-        attrs->opcodes = pmc_new(interp, enum_class_ResizableIntegerArray);
+        attrs->opcodes = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
         attrs->type    = PF_BYTEC_SEG;
 
         PObj_custom_mark_SET(SELF);

Modified: branches/tt362/src/pmc/parrotinterpreter.pmc
==============================================================================
--- branches/tt362/src/pmc/parrotinterpreter.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/parrotinterpreter.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -53,7 +53,7 @@
     /* we block GC runs while cloning since C<d> is not yet running */
     Parrot_block_GC_mark(d);
 
-    d->scheduler = pmc_new(d, enum_class_Scheduler);
+    d->scheduler = Parrot_pmc_new(d, enum_class_Scheduler);
     d->scheduler = VTABLE_share_ro(d, d->scheduler);
 
     /* can't copy directly, unless you want double-frees */
@@ -305,7 +305,7 @@
     VTABLE void set_pointer(void *value) {
 
         /* XXX: init_world in src/global_setup.c needs to create a
-         * ParrotInterpreter through pmc_new_noinit.  If this PMC hasn't been
+         * ParrotInterpreter through Parrot_pmc_new_noinit.  If this PMC hasn't been
          * initialized, cheat by initializing instead. */
         if (!PMC_data(SELF)) {
             Parrot_ParrotInterpreter_attributes *attrs =
@@ -559,7 +559,7 @@
                         pc - seg->base.data, NULL);
             }
 
-            return pmc_new(interp, enum_class_Hash);
+            return Parrot_pmc_new(interp, enum_class_Hash);
         }
 
         Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_ATTRIB_NOT_FOUND,
@@ -621,7 +621,7 @@
 */
 
     VTABLE PMC *clone() {
-        PMC * const dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         clone_interpreter(PMC_interp(dest),
                           PMC_interp(SELF), PARROT_CLONE_DEFAULT);

Modified: branches/tt362/src/pmc/parrotlibrary.pmc
==============================================================================
--- branches/tt362/src/pmc/parrotlibrary.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/parrotlibrary.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -77,7 +77,7 @@
 */
 
     VTABLE PMC *clone() {
-        PMC * const dest     = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const dest     = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         PMC_oplib_init(dest) = PMC_oplib_init(SELF);
         PMC_dlhandle(dest)   = PMC_dlhandle(SELF);
 

Modified: branches/tt362/src/pmc/parrotthread.pmc
==============================================================================
--- branches/tt362/src/pmc/parrotthread.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/parrotthread.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -71,7 +71,7 @@
     interp->flags &= ~PARROT_THR_COPY_INTERP; /* XXX */
     pt_thread_run(interp, thread, sub, args);
 
-    pmc_reuse(interp, thread, enum_class_ParrotRunningThread, 0);
+    Parrot_pmc_reuse(interp, thread, enum_class_ParrotRunningThread, 0);
 
     PObj_custom_mark_CLEAR(thread);
     VTABLE_set_integer_native(interp, thread, tid);

Modified: branches/tt362/src/pmc/pmc.num
==============================================================================
--- branches/tt362/src/pmc/pmc.num	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/pmc.num	Fri Feb 19 22:23:20 2010	(r44203)
@@ -79,3 +79,6 @@
 
 os.pmc    51
 file.pmc    52
+
+oplib.pmc    53
+opcode.pmc    54

Modified: branches/tt362/src/pmc/pmcproxy.pmc
==============================================================================
--- branches/tt362/src/pmc/pmcproxy.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/pmcproxy.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -79,7 +79,7 @@
     VTABLE void init() {
         Parrot_Class_attributes * const _pmc =
                 (Parrot_Class_attributes *) PMC_data(SELF);
-        PMC          * const new_attribute   = pmc_new(interp, enum_class_Hash);
+        PMC          * const new_attribute   = Parrot_pmc_new(interp, enum_class_Hash);
         STRING       * const name            = CONST_STRING(interp, "proxy");
 
         /* Set flag for custom GC mark. */
@@ -89,16 +89,16 @@
         _pmc->id               = 0;
         _pmc->name             = CONST_STRING(interp, "");
         _pmc->_namespace       = PMCNULL;
-        _pmc->parents          = pmc_new(interp, enum_class_ResizablePMCArray);
-        _pmc->all_parents      = pmc_new(interp, enum_class_ResizablePMCArray);
-        _pmc->roles            = pmc_new(interp, enum_class_ResizablePMCArray);
-        _pmc->methods          = pmc_new(interp, enum_class_Hash);
-        _pmc->vtable_overrides = pmc_new(interp, enum_class_Hash);
-        _pmc->parent_overrides = pmc_new(interp, enum_class_Hash);
-        _pmc->attrib_metadata  = pmc_new(interp, enum_class_Hash);
+        _pmc->parents          = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+        _pmc->all_parents      = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+        _pmc->roles            = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+        _pmc->methods          = Parrot_pmc_new(interp, enum_class_Hash);
+        _pmc->vtable_overrides = Parrot_pmc_new(interp, enum_class_Hash);
+        _pmc->parent_overrides = Parrot_pmc_new(interp, enum_class_Hash);
+        _pmc->attrib_metadata  = Parrot_pmc_new(interp, enum_class_Hash);
         _pmc->attrib_index     = PMCNULL;
         _pmc->attrib_cache     = PMCNULL;
-        _pmc->resolve_method   = pmc_new(interp, enum_class_ResizablePMCArray);
+        _pmc->resolve_method   = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
 
         /* Set up the attribute storage for the proxy instance */
         VTABLE_set_string_keyed_str(interp, new_attribute, CONST_STRING(interp, "name"), name);
@@ -194,9 +194,9 @@
         Parrot_Class_attributes * const _pmc = PARROT_CLASS(SELF);
 
         if (!PMC_IS_NULL(init))
-            return pmc_new_init(interp, _pmc->id, init);
+            return Parrot_pmc_new_init(interp, _pmc->id, init);
 
-        return pmc_new(interp, _pmc->id);
+        return Parrot_pmc_new(interp, _pmc->id);
     }
 
 /*
@@ -315,7 +315,7 @@
     VTABLE INTVAL does(STRING *role_name) {
         Parrot_Class_attributes *_class  = PARROT_CLASS(SELF);
         INTVAL                   id      = _class->id;
-        PMC                     *proxied = pmc_new(interp, id);
+        PMC                     *proxied = Parrot_pmc_new(interp, id);
 
         if (VTABLE_does(interp, proxied, role_name))
             return 1;
@@ -359,7 +359,7 @@
         STRING * const meth_str    = CONST_STRING(interp, "methods");
         STRING * const parents_str = CONST_STRING(interp, "parents");
 
-        PMC * const metadata = pmc_new(interp, enum_class_Hash);
+        PMC * const metadata = Parrot_pmc_new(interp, enum_class_Hash);
 
         VTABLE_set_pmc_keyed_str(interp, metadata, name_str,
             VTABLE_inspect_str(interp, SELF, name_str));

Modified: branches/tt362/src/pmc/pointer.pmc
==============================================================================
--- branches/tt362/src/pmc/pointer.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/pointer.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -67,7 +67,7 @@
 */
 
     VTABLE PMC *clone() {
-        PMC * const dest = pmc_new_noinit(INTERP, SELF->vtable->base_type);
+        PMC * const dest = Parrot_pmc_new_noinit(INTERP, SELF->vtable->base_type);
         PObj_custom_mark_SET(dest);
         PMC_data(dest) = PMC_data(SELF);
         return dest;

Modified: branches/tt362/src/pmc/resizablebooleanarray.pmc
==============================================================================
--- branches/tt362/src/pmc/resizablebooleanarray.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/resizablebooleanarray.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -373,7 +373,7 @@
         UINTVAL         tail_pos, head_pos;
         unsigned char * my_bit_array, * dest_bit_array;
 
-        PMC * const     dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const     dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
 
         GET_ATTR_bit_array(INTERP, SELF, my_bit_array);
         GET_ATTR_size(INTERP, SELF, tail_pos);

Modified: branches/tt362/src/pmc/resizablepmcarray.pmc
==============================================================================
--- branches/tt362/src/pmc/resizablepmcarray.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/resizablepmcarray.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -366,7 +366,7 @@
     VTABLE void push_float(FLOATVAL value) {
 
         INTVAL size = PMC_size(SELF);
-        PMC   *val  = pmc_new(INTERP, enum_class_Float);
+        PMC   *val  = Parrot_pmc_new(INTERP, enum_class_Float);
 
         VTABLE_set_number_native(INTERP, val, value);
         SELF.set_pmc_keyed_int(size, val);
@@ -377,7 +377,7 @@
     VTABLE void push_integer(INTVAL value) {
 
         INTVAL size = PMC_size(SELF);
-        PMC   *val  = pmc_new(INTERP, enum_class_Integer);
+        PMC   *val  = Parrot_pmc_new(INTERP, enum_class_Integer);
 
         VTABLE_set_integer_native(INTERP, val, value);
         SELF.set_pmc_keyed_int(size, val);
@@ -397,7 +397,7 @@
     VTABLE void push_string(STRING *value) {
 
         INTVAL size = PMC_size(SELF);
-        PMC   *val  = pmc_new(INTERP, enum_class_String);
+        PMC   *val  = Parrot_pmc_new(INTERP, enum_class_String);
 
         VTABLE_assign_string_native(INTERP, val, value);
         SELF.set_pmc_keyed_int(size, val);
@@ -501,7 +501,7 @@
     VTABLE void unshift_float(FLOATVAL value) {
 
         INTVAL  size = PMC_size(SELF);
-        PMC    *val  = pmc_new(INTERP, enum_class_Float);
+        PMC    *val  = Parrot_pmc_new(INTERP, enum_class_Float);
         PMC   **data;
         INTVAL  i;
 
@@ -521,7 +521,7 @@
     VTABLE void unshift_integer(INTVAL value) {
 
         INTVAL  size = PMC_size(SELF);
-        PMC    *val  = pmc_new(INTERP, enum_class_Integer);
+        PMC    *val  = Parrot_pmc_new(INTERP, enum_class_Integer);
         PMC    **data;
         INTVAL   i;
 
@@ -559,7 +559,7 @@
     VTABLE void unshift_string(STRING *value) {
 
         INTVAL  size = PMC_size(SELF);
-        PMC    *val  = pmc_new(INTERP, enum_class_String);
+        PMC    *val  = Parrot_pmc_new(INTERP, enum_class_String);
         PMC   **data;
         INTVAL  i;
 

Modified: branches/tt362/src/pmc/resizablestringarray.pmc
==============================================================================
--- branches/tt362/src/pmc/resizablestringarray.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/resizablestringarray.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -144,7 +144,7 @@
 
     VTABLE PMC *pop_pmc() {
         STRING *strval = SELF.pop_string();
-        PMC    *value  = pmc_new(INTERP, enum_class_String);
+        PMC    *value  = Parrot_pmc_new(INTERP, enum_class_String);
 
         VTABLE_set_string_native(INTERP, value, strval);
 
@@ -308,7 +308,7 @@
 
     VTABLE PMC *shift_pmc() {
         STRING *strval = SELF.shift_string();
-        PMC    *value  = pmc_new(INTERP, enum_class_String);
+        PMC    *value  = Parrot_pmc_new(INTERP, enum_class_String);
 
         VTABLE_set_string_native(INTERP, value, strval);
 
@@ -374,7 +374,7 @@
 */
 
     VTABLE void push_integer(INTVAL value) {
-        PMC    *ret = pmc_new(INTERP, enum_class_String);
+        PMC    *ret = Parrot_pmc_new(INTERP, enum_class_String);
         STRING *val;
 
         VTABLE_set_integer_native(INTERP, ret, value);
@@ -394,7 +394,7 @@
 */
 
     VTABLE void push_float(FLOATVAL value) {
-        PMC    *ret = pmc_new(INTERP, enum_class_String);
+        PMC    *ret = Parrot_pmc_new(INTERP, enum_class_String);
         STRING *val;
 
         VTABLE_set_number_native(INTERP, ret, value);
@@ -424,7 +424,7 @@
                     "ResizableStringArray: Can't shift from an empty array!");
 
         value = SELF.get_string_keyed_int(0);
-        ret   = pmc_new(INTERP, enum_class_String);
+        ret   = Parrot_pmc_new(INTERP, enum_class_String);
 
         VTABLE_set_string_native(INTERP, ret, value);
         SELF.delete_keyed_int(0);
@@ -486,7 +486,7 @@
 */
 
     VTABLE void unshift_integer(INTVAL value) {
-        PMC    *ret = pmc_new(INTERP, enum_class_String);
+        PMC    *ret = Parrot_pmc_new(INTERP, enum_class_String);
         STRING *val;
 
         VTABLE_set_integer_native(INTERP, ret, value);
@@ -506,7 +506,7 @@
 */
 
     VTABLE void unshift_float(FLOATVAL value) {
-        PMC    *ret = pmc_new(INTERP, enum_class_String);
+        PMC    *ret = Parrot_pmc_new(INTERP, enum_class_String);
         STRING *val;
 
         VTABLE_set_number_native(INTERP, ret, value);

Modified: branches/tt362/src/pmc/role.pmc
==============================================================================
--- branches/tt362/src/pmc/role.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/role.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -230,9 +230,9 @@
         /* Set up the object. */
         role->name            = CONST_STRING(interp, "");
         role->_namespace      = PMCNULL;
-        role->roles           = pmc_new(interp, enum_class_ResizablePMCArray);
-        role->methods         = pmc_new(interp, enum_class_Hash);
-        role->attrib_metadata = pmc_new(interp, enum_class_Hash);
+        role->roles           = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+        role->methods         = Parrot_pmc_new(interp, enum_class_Hash);
+        role->attrib_metadata = Parrot_pmc_new(interp, enum_class_Hash);
     }
 
     VTABLE void init_pmc(PMC *init_data) {
@@ -276,7 +276,7 @@
 
     VTABLE void add_attribute(STRING *name, PMC *type) {
         Parrot_Role_attributes * const role  = PARROT_ROLE(SELF);
-        PMC           * const new_attribute  = pmc_new(interp, enum_class_Hash);
+        PMC           * const new_attribute  = Parrot_pmc_new(interp, enum_class_Hash);
 
         /* Set name and type. */
         VTABLE_set_string_keyed_str(interp, new_attribute, CONST_STRING(interp, "name"), name);
@@ -388,7 +388,7 @@
         PMC         *found;
 
         if (Parrot_str_equal(interp, what, CONST_STRING(interp, "name"))) {
-            found = pmc_new(interp, enum_class_String);
+            found = Parrot_pmc_new(interp, enum_class_String);
             VTABLE_set_string_native(interp, found, role->name);
         }
         else if (Parrot_str_equal(interp, what, CONST_STRING(interp, "namespace"))) {
@@ -414,7 +414,7 @@
         if (found->vtable->base_type == enum_class_Hash) {
             /* for Hash return values, create and return a shallow
              * clone because the VTABLE_clone does a deep clone */
-            PMC * const hash = pmc_new(interp, enum_class_Hash);
+            PMC * const hash = Parrot_pmc_new(interp, enum_class_Hash);
             PMC * const iter = VTABLE_get_iter(interp, found);
             while (VTABLE_get_bool(interp, iter)) {
                 STRING * key = VTABLE_shift_string(interp, iter);
@@ -441,7 +441,7 @@
     VTABLE PMC *inspect() {
         /* Create a hash, then use inspect_str to get all of the data to
          * fill it up with. */
-        PMC * const metadata = pmc_new(interp, enum_class_Hash);
+        PMC * const metadata = Parrot_pmc_new(interp, enum_class_Hash);
 
         STRING * const name       = CONST_STRING(interp, "name");
         STRING * const _namespace = CONST_STRING(interp, "namespace");
@@ -583,7 +583,7 @@
         if (got_name) {
             /* We'll build a hash just containing the name, then give this to
              * init_role_from_hash - saves some code duplication. */
-            PMC *naming_hash = pmc_new(interp, enum_class_Hash);
+            PMC *naming_hash = Parrot_pmc_new(interp, enum_class_Hash);
             VTABLE_set_string_keyed_str(interp, naming_hash, CONST_STRING(interp, "name"), name);
             init_role_from_hash(interp, SELF, naming_hash);
         }

Modified: branches/tt362/src/pmc/scalar.pmc
==============================================================================
--- branches/tt362/src/pmc/scalar.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/scalar.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -39,15 +39,15 @@
 
         if (self_type == enum_class_Boolean)
             /* doesn't morph */
-            pmc_reuse(INTERP, SELF, val_type, 0);
+            Parrot_pmc_reuse(INTERP, SELF, val_type, 0);
 
         if (val_type == enum_class_Undef) {
-            pmc_reuse(INTERP, SELF, val_type, 0);
+            Parrot_pmc_reuse(INTERP, SELF, val_type, 0);
             return;
         }
 
         if (VTABLE_isa(INTERP, value, CONST_STRING(INTERP, "Undef"))) {
-            pmc_reuse(INTERP, SELF, enum_class_Undef, 0);
+            Parrot_pmc_reuse(INTERP, SELF, enum_class_Undef, 0);
             return;
         }
 
@@ -68,7 +68,7 @@
             SELF.set_string_native(v);
             return;
         }
-        pmc_reuse(INTERP, SELF, val_type, 0);
+        Parrot_pmc_reuse(INTERP, SELF, val_type, 0);
         SELF.set_pmc(value);
     }
 
@@ -112,7 +112,7 @@
     MULTI PMC *add(Complex value, PMC *dest) {
         const FLOATVAL a = SELF.get_number();
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, value));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, value));
 
         VTABLE_set_number_native(INTERP, dest,
                 a + VTABLE_get_number_keyed_int(INTERP, value, 0));
@@ -122,7 +122,7 @@
     }
 
     MULTI PMC *add(DEFAULT value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 SELF.get_number() + VTABLE_get_number(INTERP, value));
@@ -130,7 +130,7 @@
     }
 
     VTABLE PMC *add_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 SELF.get_number() + (FLOATVAL)value);
@@ -138,7 +138,7 @@
     }
 
     VTABLE PMC *add_float(FLOATVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 SELF.get_number() + value);
@@ -148,7 +148,7 @@
     MULTI void i_add(Complex value) {
         const FLOATVAL a = SELF.get_number();
 
-        pmc_reuse(INTERP, SELF, enum_class_Complex, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_Complex, 0);
         VTABLE_set_number_native(INTERP, SELF,
                 a + VTABLE_get_number_keyed_int(INTERP, value, 0));
         VTABLE_set_number_keyed_int(INTERP, SELF, 1,
@@ -195,7 +195,7 @@
 
     MULTI PMC *subtract(Complex value, PMC *dest) {
         const FLOATVAL a = SELF.get_number();
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, value));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, value));
 
         VTABLE_set_number_native(INTERP, dest,
                 a - VTABLE_get_number_keyed_int(INTERP, value, 0));
@@ -205,14 +205,14 @@
     }
 
     MULTI PMC *subtract(DEFAULT value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         VTABLE_set_number_native(INTERP, dest,
                 SELF.get_number() - VTABLE_get_number(INTERP, value));
         return dest;
     }
 
     VTABLE PMC *subtract_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 SELF.get_number() - (FLOATVAL)value);
@@ -220,7 +220,7 @@
     }
 
     VTABLE PMC *subtract_float(FLOATVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 SELF.get_number() - value);
@@ -230,7 +230,7 @@
     MULTI void i_subtract(Complex value) {
         const FLOATVAL a = SELF.get_number();
 
-        pmc_reuse(INTERP, SELF, enum_class_Complex, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_Complex, 0);
         VTABLE_set_number_native(INTERP, SELF,
                 a - VTABLE_get_number_keyed_int(INTERP, value, 0));
         VTABLE_set_number_keyed_int(INTERP, SELF, 1,
@@ -272,7 +272,7 @@
     }
 
     MULTI PMC *multiply(DEFAULT value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
             SELF.get_number() * VTABLE_get_number(INTERP, value));
@@ -280,7 +280,7 @@
     }
 
     VTABLE PMC *multiply_int(INTVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
             SELF.get_number() * value);
@@ -288,7 +288,7 @@
     }
 
     VTABLE PMC *multiply_float(FLOATVAL value, PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
             SELF.get_number() * value);
@@ -344,7 +344,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                 "float division by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest, SELF.get_number() / d);
         return dest;
@@ -355,7 +355,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                 "float division by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest, SELF.get_number() / value);
         return dest;
@@ -366,7 +366,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                 "float division by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest, SELF.get_number() / value);
         return dest;
@@ -427,7 +427,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                 "float division by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         d    = floor(SELF.get_number() / d);
 
         VTABLE_set_integer_native(INTERP, dest, (INTVAL)d);
@@ -439,7 +439,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                 "float division by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 floor(SELF.get_number() / value));
@@ -451,7 +451,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                 "float division by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 floor(SELF.get_number() / value));
@@ -517,7 +517,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                 "float modulus by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 floatval_mod(SELF.get_number(), d));
@@ -529,7 +529,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                 "float modulus by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 floatval_mod(SELF.get_number(), (FLOATVAL)value));
@@ -541,7 +541,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_DIV_BY_ZERO,
                 "float modulus by zero");
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_number_native(INTERP, dest,
                 floatval_mod(SELF.get_number(), value));
@@ -592,7 +592,7 @@
     VTABLE PMC *neg(PMC *dest) {
         const INTVAL a = -SELF.get_integer();
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_integer_native(INTERP, dest, a);
         return dest;
@@ -630,7 +630,7 @@
         STRING * const s = Parrot_str_concat(INTERP, SELF.get_string(),
             VTABLE_get_string(INTERP, value), 0);
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_string_native(INTERP, dest, s);
         return dest;
@@ -640,7 +640,7 @@
         STRING * const s = Parrot_str_concat(INTERP,
             SELF.get_string(), value, 0);
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_string_native(INTERP, dest, s);
         return dest;
@@ -679,7 +679,7 @@
         STRING * const s = SELF.get_string();
         const UINTVAL  n = (UINTVAL)VTABLE_get_integer(INTERP, value);
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_string_native(INTERP, dest,
             Parrot_str_repeat(INTERP, s, n));
@@ -690,7 +690,7 @@
         STRING * const s = SELF.get_string();
         const UINTVAL  n = value;
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_string_native(INTERP, dest,
             Parrot_str_repeat(INTERP, s, n));
@@ -862,7 +862,7 @@
         else if (value_bool && ! my_bool)
             return value;
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         VTABLE_set_bool(INTERP, dest, 0);
         return dest;
     }
@@ -883,7 +883,7 @@
     VTABLE PMC *logical_not(PMC *dest) {
         const INTVAL a = ! SELF.get_bool();
 
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
 
         VTABLE_set_bool(INTERP, dest, a);
         return dest;
@@ -934,7 +934,7 @@
 */
     VTABLE PMC *share_ro() {
         PMC         *ret  = pt_shared_fixup(INTERP, SELF);
-        PMC * const _true = pmc_new(INTERP, enum_class_Integer);
+        PMC * const _true = Parrot_pmc_new(INTERP, enum_class_Integer);
 
         VTABLE_set_integer_native(INTERP, _true, 1);
 

Modified: branches/tt362/src/pmc/scheduler.pmc
==============================================================================
--- branches/tt362/src/pmc/scheduler.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/scheduler.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -57,11 +57,11 @@
         /* Set up the core struct. */
         core_struct->id          = 0;
         core_struct->max_tid     = 0;
-        core_struct->task_list   = pmc_new(interp, enum_class_Hash);
-        core_struct->task_index  = pmc_new(interp, enum_class_ResizableIntegerArray);
-        core_struct->wait_index  = pmc_new(interp, enum_class_ResizablePMCArray);
-        core_struct->handlers    = pmc_new(interp, enum_class_ResizablePMCArray);
-        core_struct->messages    = pmc_new(interp, enum_class_ResizablePMCArray);
+        core_struct->task_list   = Parrot_pmc_new(interp, enum_class_Hash);
+        core_struct->task_index  = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
+        core_struct->wait_index  = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+        core_struct->handlers    = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
+        core_struct->messages    = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
         core_struct->interp      = INTERP;
         MUTEX_INIT(core_struct->msg_lock);
     }

Modified: branches/tt362/src/pmc/sockaddr.pmc
==============================================================================
--- branches/tt362/src/pmc/sockaddr.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/sockaddr.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -80,7 +80,7 @@
 */
 
     VTABLE PMC *clone() {
-        PMC * const dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         memcpy(PARROT_SOCKADDR(dest)->pointer, PARROT_SOCKADDR(SELF)->pointer,
                 sizeof (struct sockaddr_in));
         return dest;

Modified: branches/tt362/src/pmc/string.pmc
==============================================================================
--- branches/tt362/src/pmc/string.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/string.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2003-2009, Parrot Foundation.
+Copyright (C) 2003-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -71,8 +71,8 @@
 */
 
     VTABLE PMC *clone() {
-        PMC * const dest = pmc_new(INTERP, SELF->vtable->base_type);
-        VTABLE_set_string_native(INTERP, dest, Parrot_str_copy(INTERP, SELF.get_string()));
+        PMC * const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
+        VTABLE_set_string_native(INTERP, dest, SELF.get_string());
         return dest;
     }
 
@@ -87,8 +87,9 @@
 */
 
     VTABLE INTVAL get_integer() {
-        STRING * const s = SELF.get_string();
-        return Parrot_str_to_int(INTERP, s);
+        STRING *str_val;
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        return Parrot_str_to_int(INTERP, str_val);
     }
 
 /*
@@ -102,8 +103,9 @@
 */
 
     VTABLE FLOATVAL get_number() {
-        STRING * const s = SELF.get_string();
-        return Parrot_str_to_num(INTERP, s);
+        STRING *str_val;
+        GET_ATTR_str_val(interp, SELF, str_val);
+        return Parrot_str_to_num(INTERP, str_val);
     }
 
 /*
@@ -119,6 +121,7 @@
     VTABLE STRING *get_string() {
         STRING *str_val;
         GET_ATTR_str_val(INTERP, SELF, str_val);
+
         return str_val ? Parrot_str_copy(INTERP, str_val) : NULL;
     }
 
@@ -133,8 +136,9 @@
 */
 
     VTABLE INTVAL get_bool() {
-        STRING * const s = SELF.get_string();
-        return Parrot_str_boolean(INTERP, s);
+        STRING *str_val;
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        return Parrot_str_boolean(INTERP, str_val);
     }
 
 /*
@@ -183,9 +187,8 @@
 */
 
     VTABLE void set_string_native(STRING *value) {
-        /* in lieu of a STRINGNULL, promote any NULL STRINGs to empty ones */
         if (!value)
-            value = Parrot_str_new(INTERP, NULL, 0);
+            value = STRINGNULL;
 
         /* Only allow constant PMCs to embed constant strings */
         if (PObj_constant_TEST(SELF) && !PObj_constant_TEST(value)) {
@@ -210,9 +213,10 @@
 */
 
     VTABLE void assign_string_native(STRING *value) {
-        if (!STRING_IS_NULL(value))
+        if (!STRING_IS_NULL(value)) {
             SET_ATTR_str_val(INTERP, SELF,
-                    Parrot_str_set(INTERP, SELF.get_string(), value));
+                Parrot_str_set(INTERP, SELF.get_string(), value));
+        }
         else
             SET_ATTR_str_val(INTERP, SELF, NULL);
     }
@@ -242,9 +246,10 @@
 
 */
     VTABLE INTVAL is_equal(PMC *value) {
-        STRING * const s = VTABLE_get_string(INTERP, SELF);
+        STRING *str_val;
         STRING * const v = VTABLE_get_string(INTERP, value);
-        return (INTVAL)(Parrot_str_equal(INTERP, s, v));
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        return (INTVAL)(Parrot_str_equal(INTERP, str_val, v));
     }
 
     MULTI INTVAL is_equal(PMC *value) {
@@ -263,8 +268,13 @@
 */
 
     VTABLE INTVAL is_equal_num(PMC *value) {
-        const FLOATVAL sf = Parrot_str_to_num(INTERP, VTABLE_get_string(INTERP, SELF));
+        STRING        *str_val;
+        FLOATVAL       sf;
         const FLOATVAL vf = VTABLE_get_number(INTERP, value);
+
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        sf = Parrot_str_to_num(INTERP, str_val);
+
         return (INTVAL)(sf == vf);
     }
 
@@ -279,9 +289,10 @@
 */
 
     VTABLE INTVAL is_equal_string(PMC *value) {
-        STRING * const s = VTABLE_get_string(INTERP, SELF);
+        STRING *str_val;
         STRING * const v = VTABLE_get_string(INTERP, value);
-        return Parrot_str_equal(INTERP, s, v);
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        return Parrot_str_equal(INTERP, str_val, v);
     }
 
 /*
@@ -296,9 +307,10 @@
 
 */
     VTABLE INTVAL cmp(PMC *value) {
-        STRING * const s = VTABLE_get_string(INTERP, SELF);
+        STRING *str_val;
         STRING * const v = VTABLE_get_string(INTERP, value);
-        return Parrot_str_compare(INTERP, s, v);
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        return Parrot_str_compare(INTERP, str_val, v);
     }
 
 /*
@@ -313,8 +325,11 @@
 
 */
     VTABLE INTVAL cmp_num(PMC *value) {
-        const FLOATVAL sf = Parrot_str_to_num(INTERP, VTABLE_get_string(INTERP, SELF));
+        STRING        *str_val;
+        FLOATVAL       sf;
         const FLOATVAL vf = VTABLE_get_number(INTERP, value);
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        sf = Parrot_str_to_num(INTERP, str_val);
 
         if (sf < vf)
             return (INTVAL)(-1);
@@ -337,9 +352,10 @@
 
 */
     VTABLE INTVAL cmp_string(PMC *value) {
-        STRING * const s = VTABLE_get_string(INTERP, SELF);
+        STRING        *str_val;
         STRING * const v = VTABLE_get_string(INTERP, value);
-        return Parrot_str_compare(INTERP, s, v);
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        return Parrot_str_compare(INTERP, str_val, v);
     }
 
 /*
@@ -353,8 +369,9 @@
 
 */
     VTABLE void substr(INTVAL offset, INTVAL length, PMC *dest) {
-        STRING * const s  = VTABLE_get_string(INTERP, SELF);
-        STRING * const s2 = Parrot_str_substr(INTERP, s, offset, length, NULL, 0);
+        STRING *str_val, *s2;
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        s2 = Parrot_str_substr(INTERP, str_val, offset, length, NULL, 0);
         VTABLE_set_string_native(INTERP, dest, s2);
     }
 
@@ -369,8 +386,9 @@
 
 */
     VTABLE STRING *substr_str(INTVAL offset, INTVAL length) {
-        STRING * const s = VTABLE_get_string(INTERP, SELF);
-        return Parrot_str_substr(INTERP, s, offset, length, NULL, 0);
+        STRING *str_val;
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        return Parrot_str_substr(INTERP, str_val, offset, length, NULL, 0);
     }
 
 /*
@@ -385,9 +403,14 @@
 */
 
     VTABLE INTVAL exists_keyed(PMC *key) {
-        const INTVAL n = Parrot_str_byte_length(INTERP, VTABLE_get_string(INTERP, SELF));
+        STRING      *str_val;
+        INTVAL       n;
         const INTVAL k = VTABLE_get_integer(INTERP, key);
-        return (INTVAL)((k>=0 && k<=n) || (k<0 && -k<=n));
+
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        n = Parrot_str_byte_length(INTERP, str_val);
+
+        return (INTVAL)((k >= 0 && k <= n) || (k < 0 && -k <= n));
     }
 
 /*
@@ -418,8 +441,9 @@
     }
 
     VTABLE STRING *get_string_keyed_int(INTVAL pos) {
-        STRING * const s = SELF.get_string();
-        return Parrot_str_substr(INTERP, s, pos, 1, NULL, 0);
+        STRING      *str_val;
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        return Parrot_str_substr(INTERP, str_val, pos, 1, NULL, 0);
     }
 
     VTABLE INTVAL get_integer_keyed(PMC *key) {
@@ -427,8 +451,9 @@
     }
 
     VTABLE INTVAL get_integer_keyed_int(INTVAL pos) {
-        STRING * const s = SELF.get_string();
-        return string_ord(INTERP, s, pos);
+        STRING      *str_val;
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        return string_ord(INTERP, str_val, pos);
     }
 
     VTABLE PMC *get_pmc_keyed(PMC *key) {
@@ -436,7 +461,7 @@
     }
 
     VTABLE PMC *get_pmc_keyed_int(INTVAL pos) {
-        PMC * const dest = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC * const dest = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         VTABLE_set_string_native(INTERP, dest, SELF.get_string_keyed_int(pos));
         return dest;
     }
@@ -446,10 +471,10 @@
     }
 
     VTABLE void set_string_keyed_int(INTVAL pos, STRING * const value) {
-        STRING * const s   = SELF.get_string();
-        const INTVAL   len = Parrot_str_byte_length(INTERP, value);
-        Parrot_str_replace(INTERP, s, pos, len, value, NULL);
-        VTABLE_set_string_native(INTERP, SELF, s);
+        STRING      *str_val;
+        const INTVAL len = Parrot_str_byte_length(INTERP, value);
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        Parrot_str_replace(INTERP, str_val, pos, len, value, &str_val);
     }
 
     VTABLE void set_integer_keyed(PMC *key, INTVAL value) {
@@ -457,10 +482,10 @@
     }
 
     VTABLE void set_integer_keyed_int(INTVAL pos, INTVAL value) {
-        STRING * const s = SELF.get_string();
+        STRING      *str_val;
         STRING * const c = string_chr(INTERP, (UINTVAL) value);
-        Parrot_str_replace(INTERP, s, pos, 1, c, NULL);
-        VTABLE_set_string_native(INTERP, SELF, s);
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        Parrot_str_replace(INTERP, str_val, pos, 1, c, &str_val);
     }
 
     VTABLE void set_pmc_keyed(PMC *key, PMC *value) {
@@ -511,7 +536,7 @@
 */
 
     METHOD to_int(INTVAL base) {
-        PMC *result = pmc_new(INTERP, Parrot_get_ctx_HLL_type(interp,
+        PMC *result = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(interp,
                         enum_class_Integer));
 
         /* TODO verify encoding */
@@ -580,11 +605,13 @@
 */
 
     VTABLE INTVAL elements() {
-        return Parrot_str_byte_length(INTERP, VTABLE_get_string(INTERP, SELF));
+        STRING *str_val;
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        return Parrot_str_byte_length(INTERP, str_val);
     }
 
     VTABLE PMC *get_iter() {
-        return pmc_new_init(INTERP, enum_class_StringIterator, SELF);
+        return Parrot_pmc_new_init(INTERP, enum_class_StringIterator, SELF);
     }
 
 /*
@@ -603,8 +630,10 @@
 
 */
     VTABLE void freeze(PMC *info) {
+        STRING *str_val;
         SUPER(info);
-        VTABLE_push_string(INTERP, info, VTABLE_get_string(INTERP, SELF));
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        VTABLE_push_string(INTERP, info, str_val);
     }
 
 /*
@@ -637,8 +666,11 @@
 */
 
     METHOD lower() {
-        STRING * const s   = Parrot_str_downcase(INTERP,
-            VTABLE_get_string(INTERP, SELF));
+        STRING *str_val;
+        STRING *s;
+
+        GET_ATTR_str_val(INTERP, SELF, str_val);
+        s = Parrot_str_downcase(INTERP, str_val);
 
         RETURN(STRING *s);
     }

Modified: branches/tt362/src/pmc/stringhandle.pmc
==============================================================================
--- branches/tt362/src/pmc/stringhandle.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/stringhandle.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -94,7 +94,7 @@
 
     VTABLE PMC *clone() {
         Parrot_StringHandle_attributes * const old_struct  = PARROT_STRINGHANDLE(SELF);
-        PMC * const copy = pmc_new(INTERP, enum_class_StringHandle);
+        PMC * const copy = Parrot_pmc_new(INTERP, enum_class_StringHandle);
         Parrot_StringHandle_attributes * const data_struct = PARROT_STRINGHANDLE(copy);
 
         if (old_struct->stringhandle != NULL)

Modified: branches/tt362/src/pmc/stringiterator.pmc
==============================================================================
--- branches/tt362/src/pmc/stringiterator.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/stringiterator.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -73,7 +73,7 @@
         Parrot_StringIterator_attributes * const attrs =
                 PARROT_STRINGITERATOR(SELF);
         PMC                              * const clone =
-                pmc_new_init(INTERP, enum_class_StringIterator, attrs->string);
+                Parrot_pmc_new_init(INTERP, enum_class_StringIterator, attrs->string);
         Parrot_StringIterator_attributes * const clone_attrs =
                 PARROT_STRINGITERATOR(clone);
 
@@ -184,7 +184,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
                 "StopIteration");
 
-        ret = pmc_new(INTERP, Parrot_get_ctx_HLL_type(interp, enum_class_String));
+        ret = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(interp, enum_class_String));
         VTABLE_set_string_native(INTERP, ret,
                 VTABLE_get_string_keyed_int(INTERP, attrs->string, attrs->pos++));
         return ret;
@@ -248,7 +248,7 @@
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
                 "StopIteration");
 
-        ret = pmc_new(INTERP, Parrot_get_ctx_HLL_type(interp, enum_class_String));
+        ret = Parrot_pmc_new(INTERP, Parrot_get_ctx_HLL_type(interp, enum_class_String));
         VTABLE_set_string_native(INTERP, ret,
                 VTABLE_get_string_keyed_int(INTERP, attrs->string, --attrs->pos));
         return ret;

Modified: branches/tt362/src/pmc/sub.pmc
==============================================================================
--- branches/tt362/src/pmc/sub.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/sub.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -388,7 +388,7 @@
          * create new context, place it in interpreter */
         context = Parrot_pcc_get_signature(INTERP, caller_ctx);
         if (PMC_IS_NULL(context))
-            context = pmc_new(INTERP, enum_class_CallContext);
+            context = Parrot_pmc_new(INTERP, enum_class_CallContext);
         CURRENT_CONTEXT(INTERP) = context;
         Parrot_pcc_set_caller_ctx(INTERP, context, caller_ctx);
         Parrot_pcc_allocate_registers(INTERP, context, sub->n_regs_used);
@@ -425,7 +425,7 @@
          *      and factor out common code with coroutine pmc
          */
         if (!PMC_IS_NULL(sub->lex_info)) {
-            Parrot_pcc_set_lex_pad(interp, context, pmc_new_init(INTERP,
+            Parrot_pcc_set_lex_pad(interp, context, Parrot_pmc_new_init(INTERP,
                     Parrot_get_ctx_HLL_type(interp, enum_class_LexPad),
                     sub->lex_info));
             VTABLE_set_pointer(INTERP, Parrot_pcc_get_lex_pad(interp, context), context);
@@ -458,7 +458,7 @@
                     Parrot_pcc_set_sub(interp, dummy, outer_pmc);
 
                     if (!PMC_IS_NULL(outer_sub->lex_info)) {
-                        Parrot_pcc_set_lex_pad(interp, dummy, pmc_new_init(INTERP,
+                        Parrot_pcc_set_lex_pad(interp, dummy, Parrot_pmc_new_init(INTERP,
                                Parrot_get_ctx_HLL_type(interp, enum_class_LexPad),
                                outer_sub->lex_info));
                         VTABLE_set_pointer(INTERP, Parrot_pcc_get_lex_pad(interp, dummy), dummy);
@@ -506,7 +506,7 @@
 */
 
     VTABLE PMC *clone() {
-        PMC        * const ret = pmc_new(INTERP, SELF->vtable->base_type);
+        PMC        * const ret = Parrot_pmc_new(INTERP, SELF->vtable->base_type);
         Parrot_Sub_attributes *dest_sub;
         Parrot_Sub_attributes *sub;
 
@@ -761,7 +761,7 @@
     {
         /* Create a hash, then use inspect_str to get all of the data to
          * fill it up with. */
-        PMC    * const metadata           = pmc_new(interp, enum_class_Hash);
+        PMC    * const metadata           = Parrot_pmc_new(interp, enum_class_Hash);
         STRING * const pos_required_str   = CONST_STRING(interp, "pos_required");
         STRING * const pos_optional_str   = CONST_STRING(interp, "pos_optional");
         STRING * const named_required_str = CONST_STRING(interp, "named_required");
@@ -908,7 +908,7 @@
                 "Unknown introspection value '%S'", what);
         }
 
-        retval = pmc_new(INTERP, enum_class_Integer);
+        retval = Parrot_pmc_new(INTERP, enum_class_Integer);
         VTABLE_set_integer_native(INTERP, retval, count_found);
         return retval;
     }
@@ -1064,7 +1064,7 @@
         if (PMC_IS_NULL(sub->lex_info)) {
             const INTVAL lex_info_id = Parrot_get_ctx_HLL_type(interp,
                                            enum_class_LexInfo);
-            sub->lex_info = pmc_new_init(interp, lex_info_id, SELF);
+            sub->lex_info = Parrot_pmc_new_init(interp, lex_info_id, SELF);
         }
 
         /* If we've got a context around for the outer sub, set it as the

Modified: branches/tt362/src/pmc/task.pmc
==============================================================================
--- branches/tt362/src/pmc/task.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/task.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -180,7 +180,7 @@
     VTABLE PMC *clone() {
         /* Create the new task PMC, of the same type of this one (we may
          * have been subclassed). */
-        PMC * const copy  = pmc_new(interp, SELF->vtable->base_type);
+        PMC * const copy  = Parrot_pmc_new(interp, SELF->vtable->base_type);
         Parrot_Task_attributes * const new_struct = PARROT_TASK(copy);
         Parrot_Task_attributes * const old_struct = PARROT_TASK(SELF);
 
@@ -206,27 +206,27 @@
         PMC *value;
 
         if (Parrot_str_equal(interp, name, CONST_STRING(interp, "id"))) {
-            value = pmc_new(interp, enum_class_Integer);
+            value = Parrot_pmc_new(interp, enum_class_Integer);
             VTABLE_set_integer_native(interp, value, core_struct->id);
         }
         else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "type"))) {
-            value = pmc_new(interp, enum_class_String);
+            value = Parrot_pmc_new(interp, enum_class_String);
             VTABLE_set_string_native(interp, value, core_struct->type);
         }
         else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "subtype"))) {
-            value = pmc_new(interp, enum_class_String);
+            value = Parrot_pmc_new(interp, enum_class_String);
             VTABLE_set_string_native(interp, value, core_struct->subtype);
         }
         else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "priority"))) {
-            value = pmc_new(interp, enum_class_Integer);
+            value = Parrot_pmc_new(interp, enum_class_Integer);
             VTABLE_set_integer_native(interp, value, core_struct->priority);
         }
         else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "status"))) {
-            value = pmc_new(interp, enum_class_String);
+            value = Parrot_pmc_new(interp, enum_class_String);
             VTABLE_set_string_native(interp, value, core_struct->status);
         }
         else if (Parrot_str_equal(interp, name, CONST_STRING(interp, "birthtime"))) {
-            value = pmc_new(interp, enum_class_Float);
+            value = Parrot_pmc_new(interp, enum_class_Float);
             VTABLE_set_number_native(interp, value, core_struct->birthtime);
         }
         else {

Modified: branches/tt362/src/pmc/undef.pmc
==============================================================================
--- branches/tt362/src/pmc/undef.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/undef.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -41,7 +41,7 @@
 
     VTABLE void set_pmc(PMC *other) {
         if (!PObj_is_object_TEST(other)) {
-            pmc_reuse(INTERP, SELF, other->vtable->base_type, 0);
+            Parrot_pmc_reuse(INTERP, SELF, other->vtable->base_type, 0);
             VTABLE_set_pmc(INTERP, SELF, other);
         }
         else {
@@ -127,7 +127,7 @@
 */
 
     VTABLE void set_integer_native(INTVAL value) {
-        pmc_reuse(INTERP, SELF, enum_class_Integer, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_Integer, 0);
         VTABLE_set_integer_native(INTERP, SELF, value);
     }
 
@@ -156,7 +156,7 @@
 */
 
     VTABLE void set_number_native(FLOATVAL value) {
-        pmc_reuse(INTERP, SELF, enum_class_Float, 0);
+        Parrot_pmc_reuse(INTERP, SELF, enum_class_Float, 0);
         VTABLE_set_number_native(INTERP, SELF, value);
     }
 
@@ -188,7 +188,7 @@
 */
 
     VTABLE void set_string_native(STRING *value) {
-        pmc_reuse(interp, SELF, enum_class_String, 0);
+        Parrot_pmc_reuse(interp, SELF, enum_class_String, 0);
         VTABLE_set_string_native(INTERP, SELF, value);
     }
 
@@ -217,7 +217,7 @@
 */
 
     VTABLE PMC *logical_not(PMC *dest) {
-        dest = pmc_new(INTERP, VTABLE_type(INTERP, SELF));
+        dest = Parrot_pmc_new(INTERP, VTABLE_type(INTERP, SELF));
         VTABLE_set_bool(INTERP, dest, 1);
         return dest;
     }
@@ -264,7 +264,7 @@
 */
 
     VTABLE PMC *clone() {
-        return pmc_new(INTERP, SELF->vtable->base_type);
+        return Parrot_pmc_new(INTERP, SELF->vtable->base_type);
     }
 
 /*

Modified: branches/tt362/src/pmc/unmanagedstruct.pmc
==============================================================================
--- branches/tt362/src/pmc/unmanagedstruct.pmc	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc/unmanagedstruct.pmc	Fri Feb 19 22:23:20 2010	(r44203)
@@ -386,7 +386,7 @@
             PMC *sig = VTABLE_getprop(interp, ptr, signature_str);
             if (VTABLE_defined(interp, sig)) {
                 STRING *sig_str = VTABLE_get_string(interp, sig);
-                ret             = pmc_new(interp, enum_class_NCI);
+                ret             = Parrot_pmc_new(interp, enum_class_NCI);
                 VTABLE_set_pointer_keyed_str(interp, ret, sig_str,
                             *(PMC **)p);
             }
@@ -703,7 +703,7 @@
 */
 
     VTABLE PMC *clone() {
-        PMC *clone = pmc_new(INTERP, enum_class_UnManagedStruct);
+        PMC *clone = Parrot_pmc_new(INTERP, enum_class_UnManagedStruct);
         mem_sys_memmove(PMC_data(clone), PMC_data(SELF),
                 sizeof (Parrot_UnManagedStruct_attributes));
         PARROT_UNMANAGEDSTRUCT(clone)->init =

Modified: branches/tt362/src/pmc_freeze.c
==============================================================================
--- branches/tt362/src/pmc_freeze.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/pmc_freeze.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -54,7 +54,7 @@
 Parrot_freeze(PARROT_INTERP, ARGIN(PMC *pmc))
 {
     ASSERT_ARGS(Parrot_freeze)
-    PMC *image = pmc_new(interp, enum_class_ImageIO);
+    PMC *image = Parrot_pmc_new(interp, enum_class_ImageIO);
     VTABLE_set_pmc(interp, image, pmc);
     return VTABLE_get_string(interp, image);
 }
@@ -79,7 +79,7 @@
 {
     ASSERT_ARGS(Parrot_freeze_size)
     PMC *result;
-    PMC *visitor = pmc_new(interp, enum_class_ImageIOSize);
+    PMC *visitor = Parrot_pmc_new(interp, enum_class_ImageIOSize);
     VTABLE_set_pmc(interp, visitor, pmc);
     result = VTABLE_get_pmc(interp, visitor);
     return VTABLE_get_integer(interp, result);
@@ -110,7 +110,7 @@
 {
     ASSERT_ARGS(Parrot_thaw)
 
-    PMC        *info     = pmc_new(interp, enum_class_ImageIO);
+    PMC        *info     = Parrot_pmc_new(interp, enum_class_ImageIO);
     int         gc_block = 0;
     PMC        *result;
 

Modified: branches/tt362/src/runcore/profiling.c
==============================================================================
--- branches/tt362/src/runcore/profiling.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/runcore/profiling.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -34,7 +34,7 @@
 #endif
 
 #define PPROF_VERSION 2
-#define MAX_NAMESPACE_DEPTH 32
+#define MAX_NS_DEPTH 32
 
 #define code_start interp->code->base.data
 #define code_end (interp->code->base.data + interp->code->base.size)
@@ -44,6 +44,10 @@
 /* HEADERIZER BEGIN: static */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
+static void add_bogus_parent_runloop(
+    ARGIN(Parrot_profiling_runcore_t * runcore))
+        __attribute__nonnull__(1);
+
 PARROT_CAN_RETURN_NULL
 static void * init_profiling_core(PARROT_INTERP,
     ARGIN(Parrot_profiling_runcore_t *runcore),
@@ -54,13 +58,17 @@
 
 static void record_values_ascii_pprof(
     ARGIN(Parrot_profiling_runcore_t * runcore),
+    ARGIN(PPROF_DATA *pprof_data),
     ARGIN_NULLOK(Parrot_profiling_line type))
-        __attribute__nonnull__(1);
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 static void record_values_none(
     ARGIN(Parrot_profiling_runcore_t * runcore),
+    ARGIN(PPROF_DATA *pprof_data),
     ARGIN_NULLOK(Parrot_profiling_line type))
-        __attribute__nonnull__(1);
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
 
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
@@ -71,14 +79,18 @@
         __attribute__nonnull__(2)
         __attribute__nonnull__(3);
 
+#define ASSERT_ARGS_add_bogus_parent_runloop __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(runcore))
 #define ASSERT_ARGS_init_profiling_core __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(runcore) \
     , PARROT_ASSERT_ARG(pc))
 #define ASSERT_ARGS_record_values_ascii_pprof __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(runcore))
+       PARROT_ASSERT_ARG(runcore) \
+    , PARROT_ASSERT_ARG(pprof_data))
 #define ASSERT_ARGS_record_values_none __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(runcore))
+       PARROT_ASSERT_ARG(runcore) \
+    , PARROT_ASSERT_ARG(pprof_data))
 #define ASSERT_ARGS_runops_profiling_core __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(runcore) \
@@ -148,8 +160,7 @@
     runcore->level           = 0;
     runcore->time_size       = 32;
     runcore->line_cache      = parrot_new_pointer_hash(interp);
-    runcore->time            = mem_allocate_n_typed(runcore->time_size,
-                                                    UHUGEINTVAL);
+    runcore->time            = mem_allocate_n_typed(runcore->time_size, UHUGEINTVAL);
 
     /* figure out what format the output should be in */
     output_cstr = Parrot_getenv(interp, CONST_STRING(interp, "PARROT_PROFILING_OUTPUT"));
@@ -222,7 +233,7 @@
     }
 
     /* put profile_filename in the gc root set so it won't get collected */
-    gc_register_pmc(interp, (PMC *) runcore->profile_filename);
+    Parrot_pmc_gc_register(interp, (PMC *) runcore->profile_filename);
 
     Profiling_first_loop_SET(runcore);
 
@@ -250,10 +261,10 @@
 {
     ASSERT_ARGS(runops_profiling_core)
 
-    PMC                *preop_sub, *argv;
-    opcode_t           *preop_pc;
-    STRING             *unknown_file = CONST_STRING(interp, "<unknown file>");
-    UHUGEINTVAL         op_time;
+    PMC         *argv;
+    opcode_t    *preop_pc;
+    UHUGEINTVAL  op_time;
+    PPROF_DATA   pprof_data[PPROF_DATA_MAX + 1];
 
     runcore->runcore_start = Parrot_hires_get_time();
 
@@ -262,9 +273,7 @@
 
         if (runcore->level >= runcore->time_size) {
             runcore->time_size *= 2;
-            runcore->time =
-                mem_realloc_n_typed(runcore->time, runcore->time_size + 1,
-                                    UHUGEINTVAL);
+            runcore->time = mem_realloc_n_typed(runcore->time, runcore->time_size + 1, UHUGEINTVAL);
         }
 
         /* store the time between DO_OP and the start of this runcore in this
@@ -278,22 +287,19 @@
     /* argv isn't initialized until after :init (etc) subs are executed */
     if (argv && !Profiling_have_printed_cli_TEST(runcore)) {
 
-        PMC    *iglobals     = interp->iglobals;
-        PMC    *executable   = VTABLE_get_pmc_keyed_int(interp, iglobals,
-                                                        IGLOBALS_EXECUTABLE);
-        STRING *space    = CONST_STRING(interp, " ");
-        STRING *cli_args = Parrot_str_join(interp, space, argv);
-        STRING *cli_str;
         char   *cli_cstr;
+        STRING *space, *cli_args, *cli_exe, *cli_str;
+        PMC    *exe_name = VTABLE_get_pmc_keyed_int(interp, interp->iglobals, IGLOBALS_EXECUTABLE);
 
-        cli_str  = Parrot_str_concat(interp, VTABLE_get_string(interp,
-                                     executable), space, 0);
-        cli_str  = Parrot_str_concat(interp, cli_str, cli_args, 0);
+        space    = CONST_STRING(interp, " ");
+        cli_args = Parrot_str_join(interp, space, argv);
+        cli_exe  = VTABLE_get_string(interp, exe_name);
+        cli_str  = Parrot_sprintf_c(interp, "%Ss %Ss", cli_exe, cli_args);
         cli_cstr = Parrot_str_to_cstring(interp, cli_str);
 
         /* CLI line won't reflect any options passed to the parrot binary. */
-        runcore->pprof_data[PPROF_DATA_CLI] = (PPROF_DATA) cli_cstr;
-        runcore->output_fn(runcore, PPROF_LINE_CLI);
+        pprof_data[PPROF_DATA_CLI] = (PPROF_DATA) cli_cstr;
+        runcore->output_fn(runcore, pprof_data, PPROF_LINE_CLI);
 
         Parrot_str_free_cstring(cli_cstr);
 
@@ -302,23 +308,12 @@
 
     if (Profiling_first_loop_TEST(runcore)) {
 
-        runcore->pprof_data[PPROF_DATA_VERSION] = (PPROF_DATA) PPROF_VERSION;
-        runcore->output_fn(runcore, PPROF_LINE_VERSION);
+        Profiling_first_loop_CLEAR(runcore);
 
-        /* make all separate runloops appear to come from a single source */
-        runcore->pprof_data[PPROF_DATA_NAMESPACE] = (PPROF_DATA) "main";
-        runcore->pprof_data[PPROF_DATA_FILENAME]  = (PPROF_DATA) "no_file";
-        runcore->pprof_data[PPROF_DATA_SUB_ADDR]  = 1;
-        runcore->pprof_data[PPROF_DATA_CTX_ADDR]  = 1;
-        runcore->output_fn(runcore, PPROF_LINE_CONTEXT_SWITCH);
-
-        runcore->pprof_data[PPROF_DATA_LINE]   = runcore->runloop_count;
-        runcore->pprof_data[PPROF_DATA_TIME]   = 0;
-        runcore->pprof_data[PPROF_DATA_OPNAME] = (PPROF_DATA) "noop";
-        runcore->output_fn(runcore, PPROF_LINE_OP);
+        pprof_data[PPROF_DATA_VERSION] = (PPROF_DATA) PPROF_VERSION;
+        runcore->output_fn(runcore, pprof_data, PPROF_LINE_VERSION);
 
-        runcore->runloop_count++;
-        Profiling_first_loop_CLEAR(runcore);
+        add_bogus_parent_runloop(runcore);
     }
 
     while (pc) {
@@ -333,7 +328,6 @@
         preop_ctx_pmc = CURRENT_CONTEXT(interp);
         preop_ctx = PMC_data_typed(preop_ctx_pmc, Parrot_Context*);
         preop_ctx->current_pc = pc;
-        preop_sub             = preop_ctx->current_sub;
         preop_pc              = pc;
 
         runcore->level++;
@@ -363,7 +357,7 @@
             if (preop_ctx->current_sub) {
                 STRING *sub_name, *full_ns, *ns_separator, *preop_filename;
                 char   *full_ns_cstr, *filename_cstr;
-                STRING *ns_names[MAX_NAMESPACE_DEPTH];
+                STRING *ns_names[MAX_NS_DEPTH];
                 PMC    *ns = preop_ctx->current_namespace;
                 INTVAL  i;
 
@@ -376,7 +370,7 @@
                 full_ns      = Parrot_str_new(interp, "", 0);
                 ns_separator = Parrot_str_new(interp, ";", 1);
 
-                i = MAX_NAMESPACE_DEPTH - 1;
+                i = MAX_NS_DEPTH - 1;
                 for (;ns ; i--) {
                     if (i < 0) {
                         /* should probably warn about truncated namespace here */
@@ -388,7 +382,7 @@
 
                 i++;
                 i++; /* the root namespace has an empty name, so ignore it */
-                for (;i < MAX_NAMESPACE_DEPTH; i++) {
+                for (;i < MAX_NS_DEPTH; i++) {
                     full_ns = Parrot_str_concat(interp, full_ns, ns_names[i], 0);
                     full_ns = Parrot_str_concat(interp, full_ns, ns_separator, 0);
                 }
@@ -397,11 +391,11 @@
                 full_ns = Parrot_str_concat(interp, full_ns, sub_name, 0);
                 full_ns_cstr = Parrot_str_to_cstring(interp, full_ns);
 
-                runcore->pprof_data[PPROF_DATA_NAMESPACE] = (PPROF_DATA) full_ns_cstr;
-                runcore->pprof_data[PPROF_DATA_FILENAME]  = (PPROF_DATA) filename_cstr;
-                runcore->pprof_data[PPROF_DATA_SUB_ADDR]  = (PPROF_DATA) preop_ctx->current_sub;
-                runcore->pprof_data[PPROF_DATA_CTX_ADDR]  = (PPROF_DATA) preop_ctx;
-                runcore->output_fn(runcore, PPROF_LINE_CONTEXT_SWITCH);
+                pprof_data[PPROF_DATA_NAMESPACE] = (PPROF_DATA) full_ns_cstr;
+                pprof_data[PPROF_DATA_FILENAME]  = (PPROF_DATA) filename_cstr;
+                pprof_data[PPROF_DATA_SUB_ADDR]  = (PPROF_DATA) preop_ctx->current_sub;
+                pprof_data[PPROF_DATA_CTX_ADDR]  = (PPROF_DATA) preop_ctx;
+                runcore->output_fn(runcore, pprof_data, PPROF_LINE_CONTEXT_SWITCH);
 
                 Parrot_str_free_cstring(full_ns_cstr);
                 Parrot_str_free_cstring(filename_cstr);
@@ -429,7 +423,6 @@
 
             if (!PMC_IS_NULL(annot)) {
 
-                /* this is probably pessimal but it's just a poc at this point */
                 PMC *iter = VTABLE_get_iter(interp, annot);
                 while (VTABLE_get_bool(interp, iter)) {
 
@@ -438,9 +431,9 @@
                     char   *key_cstr = Parrot_str_to_cstring(interp, key);
                     char   *val_cstr = Parrot_str_to_cstring(interp, val);
 
-                    runcore->pprof_data[PPROF_DATA_ANNOTATION_NAME]  = (PPROF_DATA) key_cstr;
-                    runcore->pprof_data[PPROF_DATA_ANNOTATION_VALUE] = (PPROF_DATA) val_cstr;
-                    runcore->output_fn(runcore, PPROF_LINE_ANNOTATION);
+                    pprof_data[PPROF_DATA_ANNOTATION_NAME]  = (PPROF_DATA) key_cstr;
+                    pprof_data[PPROF_DATA_ANNOTATION_VALUE] = (PPROF_DATA) val_cstr;
+                    runcore->output_fn(runcore, pprof_data, PPROF_LINE_ANNOTATION);
 
                     Parrot_str_free_cstring(key_cstr);
                     Parrot_str_free_cstring(val_cstr);
@@ -448,30 +441,18 @@
             }
         }
 
-        runcore->pprof_data[PPROF_DATA_LINE]   = preop_line;
-        runcore->pprof_data[PPROF_DATA_TIME]   = op_time;
-        runcore->pprof_data[PPROF_DATA_OPNAME] =
-            (PPROF_DATA)(interp->op_info_table)[*preop_pc].name;
-        runcore->output_fn(runcore, PPROF_LINE_OP);
+        pprof_data[PPROF_DATA_LINE]   = preop_line;
+        pprof_data[PPROF_DATA_TIME]   = op_time;
+        pprof_data[PPROF_DATA_OPNAME] = (PPROF_DATA)(interp->op_info_table)[*preop_pc].name;
+        runcore->output_fn(runcore, pprof_data, PPROF_LINE_OP);
     }
 
     /* make it easy to tell separate runloops apart */
     if (runcore->level == 0) {
-        runcore->output_fn(runcore, PPROF_LINE_END_OF_RUNLOOP);
 
-        /* make all separate runloops appear to come from a single source */
-        runcore->pprof_data[PPROF_DATA_NAMESPACE] = (PPROF_DATA) "main";
-        runcore->pprof_data[PPROF_DATA_FILENAME]  = (PPROF_DATA) "no_file";
-        runcore->pprof_data[PPROF_DATA_SUB_ADDR]  = 1;
-        runcore->pprof_data[PPROF_DATA_CTX_ADDR]  = 1;
-        runcore->output_fn(runcore, PPROF_LINE_CONTEXT_SWITCH);
-
-        runcore->pprof_data[PPROF_DATA_LINE]   = runcore->runloop_count;
-        runcore->pprof_data[PPROF_DATA_TIME]   = 0;
-        runcore->pprof_data[PPROF_DATA_OPNAME] = (PPROF_DATA) "noop";
-        runcore->output_fn(runcore, PPROF_LINE_OP);
+        runcore->output_fn(runcore, pprof_data, PPROF_LINE_END_OF_RUNLOOP);
 
-        runcore->runloop_count++;
+        add_bogus_parent_runloop(runcore);
     }
 
     Profiling_exit_check_SET(runcore);
@@ -481,8 +462,45 @@
 
 /*
 
+=item C<static void add_bogus_parent_runloop(Parrot_profiling_runcore_t *
+runcore)>
+
+Record profiling information for a bogus parent runloop.  Parrot program
+generally have several runloops, so a little trickery is needed to profile them
+all as a single program.  This is accomplished by having a fake sub named
+'main' which has no cost in itself but which appears to call all top-level
+runloops as children.
+
+=cut
+
+*/
+
+static void
+add_bogus_parent_runloop(ARGIN(Parrot_profiling_runcore_t * runcore))
+{
+    ASSERT_ARGS(add_bogus_parent_runloop)
+
+    PPROF_DATA pprof_data[PPROF_DATA_MAX+1];
+
+    /* make all separate runloops appear to come from a single source */
+    pprof_data[PPROF_DATA_NAMESPACE] = (PPROF_DATA) "main";
+    pprof_data[PPROF_DATA_FILENAME]  = (PPROF_DATA) "no_file";
+    pprof_data[PPROF_DATA_SUB_ADDR]  = 1;
+    pprof_data[PPROF_DATA_CTX_ADDR]  = 1;
+    runcore->output_fn(runcore, pprof_data, PPROF_LINE_CONTEXT_SWITCH);
+
+    pprof_data[PPROF_DATA_LINE]   = runcore->runloop_count;
+    pprof_data[PPROF_DATA_TIME]   = 0;
+    pprof_data[PPROF_DATA_OPNAME] = (PPROF_DATA) "noop";
+    runcore->output_fn(runcore, pprof_data, PPROF_LINE_OP);
+
+    runcore->runloop_count++;
+}
+
+/*
+
 =item C<static void record_values_ascii_pprof(Parrot_profiling_runcore_t *
-runcore, Parrot_profiling_line type)>
+runcore, PPROF_DATA *pprof_data, Parrot_profiling_line type)>
 
 Record profiling data to a filehandle in a human-readable format.
 
@@ -492,17 +510,17 @@
 
 static void
 record_values_ascii_pprof(ARGIN(Parrot_profiling_runcore_t * runcore),
-ARGIN_NULLOK(Parrot_profiling_line type))
+ARGIN(PPROF_DATA *pprof_data), ARGIN_NULLOK(Parrot_profiling_line type))
 {
     ASSERT_ARGS(record_values_ascii_pprof)
 
     switch (type) {
         case PPROF_LINE_CONTEXT_SWITCH:
             {
-                char *pd_namespace = (char *) runcore->pprof_data[PPROF_DATA_NAMESPACE];
-                char *pd_filename  = (char *) runcore->pprof_data[PPROF_DATA_FILENAME];
-                void *sub_addr     = (void *) runcore->pprof_data[PPROF_DATA_SUB_ADDR];
-                void *ctx_addr     = (void *) runcore->pprof_data[PPROF_DATA_CTX_ADDR];
+                char *pd_namespace = (char *) pprof_data[PPROF_DATA_NAMESPACE];
+                char *pd_filename  = (char *) pprof_data[PPROF_DATA_FILENAME];
+                void *sub_addr     = (void *) pprof_data[PPROF_DATA_SUB_ADDR];
+                void *ctx_addr     = (void *) pprof_data[PPROF_DATA_CTX_ADDR];
                 fprintf(runcore->profile_fd,
                         "CS:{x{ns:%s}x}{x{file:%s}x}{x{sub:%p}x}{x{ctx:%p}x}\n",
                         pd_namespace, pd_filename, sub_addr, ctx_addr);
@@ -511,9 +529,9 @@
 
         case PPROF_LINE_OP:
             {
-                PPROF_DATA  line   = (PPROF_DATA) runcore->pprof_data[PPROF_DATA_LINE];
-                PPROF_DATA  time   = (PPROF_DATA) runcore->pprof_data[PPROF_DATA_TIME];
-                char       *opname = (char *)     runcore->pprof_data[PPROF_DATA_OPNAME];
+                PPROF_DATA  line   = (PPROF_DATA) pprof_data[PPROF_DATA_LINE];
+                PPROF_DATA  time   = (PPROF_DATA) pprof_data[PPROF_DATA_TIME];
+                char       *opname = (char *)     pprof_data[PPROF_DATA_OPNAME];
                 fprintf(runcore->profile_fd, "OP:{x{line:%d}x}{x{time:%d}x}{x{op:%s}x}\n",
                         (int) line, (int) time, opname);
             }
@@ -521,21 +539,17 @@
 
         case PPROF_LINE_ANNOTATION:
             {
-                char *name  = (char *) runcore->pprof_data[PPROF_DATA_ANNOTATION_NAME];
-                char *value = (char *) runcore->pprof_data[PPROF_DATA_ANNOTATION_VALUE];
+                char *name  = (char *) pprof_data[PPROF_DATA_ANNOTATION_NAME];
+                char *value = (char *) pprof_data[PPROF_DATA_ANNOTATION_VALUE];
                 fprintf(runcore->profile_fd, "AN:{x{name:%s}x}{x{value:%s}x}\n", name, value);
             }
 
         case PPROF_LINE_CLI:
-            {
-                char *cli = (char *) runcore->pprof_data[PPROF_DATA_CLI];
-                fprintf(runcore->profile_fd, "CLI: %s\n", cli);
-            }
+            fprintf(runcore->profile_fd, "CLI: %s\n", (char *) pprof_data[PPROF_DATA_CLI]);
             break;
 
         case PPROF_LINE_VERSION:
-            fprintf(runcore->profile_fd, "VERSION:%d\n",
-                    (int) runcore->pprof_data[PPROF_DATA_VERSION]);
+            fprintf(runcore->profile_fd, "VERSION:%d\n", (int) pprof_data[PPROF_DATA_VERSION]);
             break;
 
         case PPROF_LINE_END_OF_RUNLOOP:
@@ -550,7 +564,7 @@
 /*
 
 =item C<static void record_values_none(Parrot_profiling_runcore_t * runcore,
-Parrot_profiling_line type)>
+PPROF_DATA *pprof_data, Parrot_profiling_line type)>
 
 Accept data but don't actually write it anywhere.
 
@@ -560,10 +574,11 @@
 
 static void
 record_values_none(ARGIN(Parrot_profiling_runcore_t * runcore),
-ARGIN_NULLOK(Parrot_profiling_line type))
+ARGIN(PPROF_DATA *pprof_data), ARGIN_NULLOK(Parrot_profiling_line type))
 {
     ASSERT_ARGS(record_values_none)
     UNUSED(runcore);
+    UNUSED(pprof_data);
     UNUSED(type);
 }
 

Modified: branches/tt362/src/scheduler.c
==============================================================================
--- branches/tt362/src/scheduler.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/scheduler.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -79,7 +79,7 @@
         /* Add the very first interpreter to the list of interps. */
         pt_add_to_interpreters(interp, NULL);
 
-        scheduler = pmc_new(interp, enum_class_Scheduler);
+        scheduler = Parrot_pmc_new(interp, enum_class_Scheduler);
         scheduler = VTABLE_share_ro(interp, scheduler);
 
         interp->scheduler = scheduler;
@@ -290,7 +290,7 @@
         INTVAL repeat, ARGIN_NULLOK(PMC *sub))
 {
     ASSERT_ARGS(Parrot_cx_schedule_timer)
-    PMC * const timer = pmc_new(interp, enum_class_Timer);
+    PMC * const timer = Parrot_pmc_new(interp, enum_class_Timer);
 
     VTABLE_set_number_keyed_int(interp, timer, PARROT_TIMER_NSEC, duration);
     VTABLE_set_number_keyed_int(interp, timer, PARROT_TIMER_INTERVAL, interval);
@@ -356,7 +356,7 @@
         ARGIN(PMC *user_data), ARGIN(char *ext_data))
 {
     ASSERT_ARGS(Parrot_cx_schedule_callback)
-    PMC *callback = pmc_new(interp, enum_class_Task);
+    PMC *callback = Parrot_pmc_new(interp, enum_class_Task);
     Parrot_Task_attributes * const task_struct = PARROT_TASK(callback);
 
     task_struct->type    = CONST_STRING(interp, "callback");
@@ -483,7 +483,8 @@
 {
     ASSERT_ARGS(Parrot_cx_add_handler_local)
     if (PMC_IS_NULL(Parrot_pcc_get_handlers(interp, interp->ctx)))
-        Parrot_pcc_set_handlers(interp, interp->ctx, pmc_new(interp, enum_class_ResizablePMCArray));
+        Parrot_pcc_set_handlers(interp, interp->ctx, Parrot_pmc_new(interp,
+                                                                    enum_class_ResizablePMCArray));
 
     VTABLE_unshift_pmc(interp, Parrot_pcc_get_handlers(interp, interp->ctx), handler);
 
@@ -730,7 +731,7 @@
     ASSERT_ARGS(Parrot_cx_send_message)
     if (interp->scheduler) {
         Parrot_Scheduler_attributes * sched_struct = PARROT_SCHEDULER(interp->scheduler);
-        PMC *message = pmc_new(interp, enum_class_SchedulerMessage);
+        PMC *message = Parrot_pmc_new(interp, enum_class_SchedulerMessage);
         VTABLE_set_string_native(interp, message, messagetype);
         message = VTABLE_share_ro(interp, message);
 

Modified: branches/tt362/src/string/api.c
==============================================================================
--- branches/tt362/src/string/api.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/string/api.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -496,21 +496,9 @@
     ASSERT_ARGS(Parrot_str_concat)
     if (a && a->strlen) {
         if (b && b->strlen) {
-            const ENCODING *enc;
-            const CHARSET  *cs = string_rep_compatible(interp, a, b, &enc);
-            STRING         *result;
-
-            if (!cs) {
-                cs  = a->charset;
-                enc = a->encoding;
-            }
-            result = Parrot_str_new_init(interp, NULL, a->bufused + b->bufused,
-                        enc, cs, 0);
-
-            result = Parrot_str_append(interp, result, a);
-            result = Parrot_str_append(interp, result, b);
-
-            return result;
+            STRING *result = Parrot_str_copy(interp, a);
+            Parrot_str_write_COW(interp, result);
+            return Parrot_str_append(interp, result, b);
         }
 
         return Parrot_str_copy(interp, a);
@@ -573,10 +561,10 @@
     }
     else {
         /* upgrade strings for concatenation */
-        enc = (a->encoding == Parrot_utf16_encoding_ptr ||
-                  b->encoding == Parrot_utf16_encoding_ptr ||
-                  a->encoding == Parrot_ucs2_encoding_ptr ||
-                  b->encoding == Parrot_ucs2_encoding_ptr)
+        enc = (a->encoding == Parrot_utf16_encoding_ptr
+           ||  b->encoding == Parrot_utf16_encoding_ptr
+           ||  a->encoding == Parrot_ucs2_encoding_ptr
+           ||  b->encoding == Parrot_ucs2_encoding_ptr)
               ? Parrot_utf16_encoding_ptr
               : Parrot_utf8_encoding_ptr;
 
@@ -3443,7 +3431,7 @@
     if (STRING_IS_NULL(delim) || STRING_IS_NULL(str))
         return PMCNULL;
 
-    res  = pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_ResizableStringArray));
+    res  = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp, enum_class_ResizableStringArray));
     slen = Parrot_str_byte_length(interp, str);
 
     if (!slen)

Modified: branches/tt362/src/sub.c
==============================================================================
--- branches/tt362/src/sub.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/sub.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -64,7 +64,7 @@
 new_ret_continuation_pmc(PARROT_INTERP, ARGIN_NULLOK(opcode_t *address))
 {
     ASSERT_ARGS(new_ret_continuation_pmc)
-    PMC* const continuation = pmc_new(interp, enum_class_RetContinuation);
+    PMC* const continuation = Parrot_pmc_new(interp, enum_class_RetContinuation);
     VTABLE_set_pointer(interp, continuation, address);
     return continuation;
 }
@@ -612,7 +612,7 @@
         }
 
         /* Get the Sub PMC itself. */
-        key = pmc_new(interp, enum_class_String);
+        key = Parrot_pmc_new(interp, enum_class_String);
         VTABLE_set_string_native(interp, key, CONST_STRING(interp, "Sub"));
         sub_pmc = VTABLE_get_attr_keyed(interp, subclass, key, CONST_STRING(interp, "proxy"));
         if (sub_pmc->vtable->base_type == enum_class_Sub) {

Modified: branches/tt362/src/thread.c
==============================================================================
--- branches/tt362/src/thread.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/thread.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -188,7 +188,7 @@
     else if (VTABLE_isa(from, arg, _multi_sub)) {
         INTVAL i = 0;
         const INTVAL n = VTABLE_elements(from, arg);
-        ret_val  = pmc_new(interp, enum_class_MultiSub);
+        ret_val  = Parrot_pmc_new(interp, enum_class_MultiSub);
 
         for (i = 0; i < n; ++i) {
             PMC *const orig = VTABLE_get_pmc_keyed_int(from, arg, i);
@@ -288,7 +288,7 @@
     old_size = VTABLE_get_integer(old_interp, args);
 
     /* XXX should this be a different type? */
-    ret_val = pmc_new(interp, enum_class_FixedPMCArray);
+    ret_val = Parrot_pmc_new(interp, enum_class_FixedPMCArray);
     VTABLE_set_integer_native(interp, ret_val, old_size);
 
     for (i = 0; i < old_size; ++i) {
@@ -620,7 +620,7 @@
             PMC *sub_ns = VTABLE_get_pmc_keyed_str(d, dest_ns, key);
             if (PMC_IS_NULL(sub_ns) || sub_ns->vtable->base_type !=
                     enum_class_NameSpace) {
-                sub_ns = pmc_new(d, enum_class_NameSpace);
+                sub_ns = Parrot_pmc_new(d, enum_class_NameSpace);
                 VTABLE_set_pmc_keyed_str(d, dest_ns, key, sub_ns);
             }
             pt_ns_clone(s, d, sub_ns, s, val);
@@ -752,7 +752,7 @@
      * XXX FIXME move this elsewhere? at least the set_pmc_keyed_int
      */
     old_dest_interp = dest_interp;
-    dest_interp     = pmc_new_noinit(interpreter, enum_class_ParrotThread);
+    dest_interp     = Parrot_pmc_new_noinit(interpreter, enum_class_ParrotThread);
 
     /* so it's not accidentally deleted */
     VTABLE_set_pointer(interp, old_dest_interp, NULL);
@@ -1364,7 +1364,7 @@
              * dying interpreter, so register it in parent's GC registry
              * XXX is this still needed?
              */
-            gc_register_pmc(parent, parent_ret);
+            Parrot_pmc_gc_register(parent, parent_ret);
             Parrot_unblock_GC_mark(parent);
             retval = parent_ret;
         }
@@ -1388,7 +1388,7 @@
          * value, caller gets it now
          */
         if (retval)
-            gc_unregister_pmc(parent, retval);
+            Parrot_pmc_gc_unregister(parent, retval);
 
         return retval;
     }

Modified: branches/tt362/src/utils.c
==============================================================================
--- branches/tt362/src/utils.c	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/src/utils.c	Fri Feb 19 22:23:20 2010	(r44203)
@@ -545,7 +545,7 @@
 {
     ASSERT_ARGS(tm_to_array)
 
-    PMC * const Array = pmc_new(interp,
+    PMC * const Array = Parrot_pmc_new(interp,
         Parrot_get_ctx_HLL_type(interp, enum_class_FixedIntegerArray));
     VTABLE_set_integer_native(interp, Array, 9);
 

Modified: branches/tt362/t/codingstd/c_function_docs.t
==============================================================================
--- branches/tt362/t/codingstd/c_function_docs.t	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/t/codingstd/c_function_docs.t	Fri Feb 19 22:23:20 2010	(r44203)
@@ -1,5 +1,5 @@
 #! perl
-# Copyright (C) 2006-2009, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -99,35 +99,22 @@
 compilers/imcc/reg_alloc.c
 compilers/imcc/symreg.c
 compilers/pirc/src/pircapi.c
-compilers/pirc/src/pircompiler.c
-compilers/pirc/src/piremit.c
-compilers/pirc/src/pirmacro.c
-compilers/pirc/src/pirpcc.c
-compilers/pirc/src/pirregalloc.c
-compilers/pirc/src/pirsymbol.c
 config/gen/platform/ansi/dl.c
 config/gen/platform/ansi/exec.c
 config/gen/platform/ansi/time.c
 config/gen/platform/darwin/dl.c
 config/gen/platform/darwin/memalign.c
 config/gen/platform/generic/dl.c
-config/gen/platform/generic/env.c
 config/gen/platform/generic/exec.c
 config/gen/platform/generic/math.c
 config/gen/platform/generic/memalign.c
-config/gen/platform/generic/memexec.c
 config/gen/platform/generic/stat.c
 config/gen/platform/generic/time.c
 config/gen/platform/netbsd/math.c
 config/gen/platform/openbsd/math.c
-config/gen/platform/openbsd/memexec.c
 config/gen/platform/solaris/math.c
 config/gen/platform/solaris/time.c
-examples/c/nanoparrot.c
-examples/c/pbc_info.c
 examples/compilers/japhc.c
-src/atomic/gcc_x86.c
-src/debug.c
 src/gc/generational_ms.c
 src/io/io_string.c
 src/string/charset/ascii.c
@@ -135,7 +122,6 @@
 src/string/charset/iso-8859-1.c
 src/string/charset/unicode.c
 src/tsq.c
-include/parrot/atomic/gcc_pcc.h
 
 # Local Variables:
 #   mode: cperl

Modified: branches/tt362/t/codingstd/copyright.t
==============================================================================
--- branches/tt362/t/codingstd/copyright.t	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/t/codingstd/copyright.t	Fri Feb 19 22:23:20 2010	(r44203)
@@ -135,10 +135,6 @@
         reason  => 'sample code used in testing',
     },
     {
-        file    => 'tools/build/nativecall.pl',
-        reason  => 'heredoc text for generated file',
-    },
-    {
         file    => 'tools/build/vtable_extend.pl',
         reason  => 'heredoc text for generated file',
     },

Modified: branches/tt362/t/codingstd/linelength.t
==============================================================================
--- branches/tt362/t/codingstd/linelength.t	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/t/codingstd/linelength.t	Fri Feb 19 22:23:20 2010	(r44203)
@@ -125,5 +125,8 @@
 compilers/pirc/macro/macroparser.h
 compilers/pirc/src/hdocprep.l
 compilers/pirc/src/hdocprep.c
+# generated by tools/build/nativecall.pir
+src/nci/core_thunks.c
+src/nci/extra_thunks.c
 # these ones include long POD
 docs/embed.pod

Modified: branches/tt362/t/codingstd/trailing_space.t
==============================================================================
--- branches/tt362/t/codingstd/trailing_space.t	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/t/codingstd/trailing_space.t	Fri Feb 19 22:23:20 2010	(r44203)
@@ -9,6 +9,8 @@
 use Parrot::Distribution;
 use Test::More tests => 1;
 use Parrot::Test::Util::Runloop;
+use Parrot::Config qw/ %PConfig /;
+use File::Spec;
 
 =head1 NAME
 
@@ -42,9 +44,20 @@
     $DIST->get_pir_language_files(),
 );
 
+# skip files listed in the __DATA__ section
+my $build_dir = $PConfig{build_dir};
+my %skip_files;
+while (<DATA>) {
+    next if m{^#};
+    next if m{^\s*$};
+    chomp;
+    $_ = File::Spec->catfile($build_dir, $_);
+    $skip_files{$_}++;
+}
+
 Parrot::Test::Util::Runloop->testloop(
     name     => 'no trailing whitespace',
-    files    => [@files],
+    files    => [grep {not $skip_files{$_->path}} @files],
     per_line => sub { $_[0] !~ m{[ \t]$}m },
     diag_prefix => 'Trailing space or tab char found'
 );
@@ -55,3 +68,9 @@
 #   fill-column: 100
 # End:
 # vim: expandtab shiftwidth=4:
+
+__DATA__
+# generated by tools/build/nativecall.pir
+src/nci/core_thunks.c
+src/nci/extra_thunks.c
+

Deleted: branches/tt362/t/library/mt19937ar.t
==============================================================================
--- branches/tt362/t/library/mt19937ar.t	Fri Feb 19 22:23:20 2010	(r44202)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,129 +0,0 @@
-#!parrot
-# Copyright (C) 2009, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-t/library/mt19937ar.t
-
-=head1 DESCRIPTION
-
-Math::Random::MT tests
-
-=head1 SYNOPSIS
-
-    % parrot t/library/mt19937ar.t
-
-=cut
-
-.sub 'main' :main
-    load_bytecode 'Math/Random/mt19937ar.pbc'
-
-    .include 'test_more.pir'
-
-    plan(10)
-
-    test_interfaces()
-    test_output()
-.end
-
-.sub 'test_interfaces'
-    .local pmc mt
-    mt = new [ 'Math'; 'Random'; 'MT' ]
-
-    $S0 = typeof mt
-    is($S0, 'Math;Random;MT', "MT typeof")
-
-    $I0 = can mt, 'init_genrand'
-    ok($I0, "MT can init_genrand")
-
-    $I0 = can mt, 'init_by_array'
-    ok($I0, "MT can init_by_array")
-
-    $I0 = can mt, 'genrand_int32'
-    ok($I0, "MT can genrand_int32")
-
-    $I0 = can mt, 'genrand_int31'
-    ok($I0, "MT can genrand_int31")
-
-    $I0 = can mt, 'genrand_real1'
-    ok($I0, "MT can genrand_real1")
-
-    $I0 = can mt, 'genrand_real2'
-    ok($I0, "MT can genrand_real2")
-
-    $I0 = can mt, 'genrand_real3'
-    ok($I0, "MT can genrand_real3")
-
-    $I0 = can mt, 'genrand_res53'
-    ok($I0, "MT can genrand_res53")
-.end
-
-.sub 'generate_output' :anon
-    .param pmc fh
-    .local pmc mt
-    mt = new [ 'Math'; 'Random'; 'MT' ]
-    .local pmc init
-    new init, 'FixedIntegerArray'
-    set init, 4
-    set init[0], 0x123
-    set init[1], 0x234
-    set init[2], 0x345
-    set init[3], 0x456
-    mt.'init_by_array'(init)
-    fh.'puts'( "1000 outputs of genrand_int32()\n" )
-    .local int i
-    i = 0
-    new $P0, 'FixedPMCArray'
-    set $P0, 1
-  L1:
-    unless i < 1000 goto L2
-    $I0 = mt.'genrand_int32'()
-    $P0[0] = $I0
-    $S0 = sprintf "%10lu ", $P0
-    fh.'puts'( $S0 )
-    $I0 = i % 5
-    unless $I0 == 4 goto L3
-    fh.'puts'( "\n" )
-  L3:
-    inc i
-    goto L1
-  L2:
-    fh.'puts'( "\n1000 outputs of genrand_real2()\n" )
-    i = 0
-  L4:
-    unless i < 1000 goto L5
-    $N0 = mt.'genrand_real2'()
-    $P0[0] = $N0
-    $S0 = sprintf "%10.8f ", $P0
-    fh.'puts'( $S0 )
-    $I0 = i % 5
-    unless $I0 == 4 goto L6
-    fh.'puts'( "\n" )
-  L6:
-    inc i
-    goto L4
-  L5:
-.end
-
-.sub 'test_output'
-    .local pmc fh
-    fh = new 'FileHandle'
-    .local string ref
-    ref = fh.'readall'('t/library/mt19937ar.txt')
-    $P0 = split "\r\n", ref     # hack for Windows
-    ref = join "\n", $P0
-    fh = new 'StringHandle'
-    fh.'open'('output', 'w')
-    generate_output(fh)
-    $S0 = fh.'readall'()
-    fh.'close'()
-    is($S0, ref, "mt19937ar output")
-.end
-
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:

Deleted: branches/tt362/t/library/mt19937ar.txt
==============================================================================
--- branches/tt362/t/library/mt19937ar.txt	Fri Feb 19 22:23:20 2010	(r44202)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,403 +0,0 @@
-1000 outputs of genrand_int32()
-1067595299  955945823  477289528 4107218783 4228976476 
-3344332714 3355579695  227628506  810200273 2591290167 
-2560260675 3242736208  646746669 1479517882 4245472273 
-1143372638 3863670494 3221021970 1773610557 1138697238 
-1421897700 1269916527 2859934041 1764463362 3874892047 
-3965319921   72549643 2383988930 2600218693 3237492380 
-2792901476  725331109  605841842  271258942  715137098 
-3297999536 1322965544 4229579109 1395091102 3735697720 
-2101727825 3730287744 2950434330 1661921839 2895579582 
-2370511479 1004092106 2247096681 2111242379 3237345263 
-4082424759  219785033 2454039889 3709582971  835606218 
-2411949883 2735205030  756421180 2175209704 1873865952 
-2762534237 4161807854 3351099340  181129879 3269891896 
- 776029799 2218161979 3001745796 1866825872 2133627728 
-  34862734 1191934573 3102311354 2916517763 1012402762 
-2184831317 4257399449 2899497138 3818095062 3030756734 
-1282161629  420003642 2326421477 2741455717 1278020671 
-3744179621  271777016 2626330018 2560563991 3055977700 
-4233527566 1228397661 3595579322 1077915006 2395931898 
-1851927286 3013683506 1999971931 3006888962 1049781534 
-1488758959 3491776230  104418065 2448267297 3075614115 
-3872332600  891912190 3936547759 2269180963 2633455084 
-1047636807 2604612377 2709305729 1952216715  207593580 
-2849898034  670771757 2210471108  467711165  263046873 
-3569667915 1042291111 3863517079 1464270005 2758321352 
-3790799816 2301278724 3106281430    7974801 2792461636 
- 555991332  621766759 1322453093  853629228  686962251 
-1455120532  957753161 1802033300 1021534190 3486047311 
-1902128914 3701138056 4176424663 1795608698  560858864 
-3737752754 3141170998 1553553385 3367807274  711546358 
-2475125503  262969859  251416325 2980076994 1806565895 
- 969527843 3529327173 2736343040 2987196734 1649016367 
-2206175811 3048174801 3662503553 3138851612 2660143804 
-1663017612 1816683231  411916003 3887461314 2347044079 
-1015311755 1203592432 2170947766 2569420716  813872093 
-1105387678 1431142475  220570551 4243632715 4179591855 
-2607469131 3090613241  282341803 1734241730 1391822177 
-1001254810  827927915 1886687171 3935097347 2631788714 
-3905163266  110554195 2447955646 3717202975 3304793075 
-3739614479 3059127468  953919171 2590123714 1132511021 
-3795593679 2788030429  982155079 3472349556  859942552 
-2681007391 2299624053  647443547  233600422  608168955 
-3689327453 1849778220 1608438222 3968158357 2692977776 
-2851872572  246750393 3582818628 3329652309 4036366910 
-1012970930  950780808 3959768744 2538550045  191422718 
-2658142375 3276369011 2927737484 1234200027 1920815603 
-3536074689 1535612501 2184142071 3276955054  428488088 
-2378411984 4059769550 3913744741 2732139246   64369859 
-3755670074  842839565 2819894466 2414718973 1010060670 
-1839715346 2410311136  152774329 3485009480 4102101512 
-2852724304  879944024 1785007662 2748284463 1354768064 
-3267784736 2269127717 3001240761 3179796763  895723219 
- 865924942 4291570937   89355264 1471026971 4114180745 
-3201939751 2867476999 2460866060 3603874571 2238880432 
-3308416168 2072246611 2755653839 3773737248 1709066580 
-4282731467 2746170170 2832568330  433439009 3175778732 
-  26248366 2551382801  183214346 3893339516 1928168445 
-1337157619 3429096554 3275170900 1782047316 4264403756 
-1876594403 4289659572 3223834894 1728705513 4068244734 
-2867840287 1147798696  302879820 1730407747 1923824407 
-1180597908 1569786639  198796327  560793173 2107345620 
-2705990316 3448772106 3678374155  758635715  884524671 
- 486356516 1774865603 3881226226 2635213607 1181121587 
-1508809820 3178988241 1594193633 1235154121  326117244 
-2304031425  937054774 2687415945 3192389340 2003740439 
-1823766188 2759543402   10067710 1533252662 4132494984 
-  82378136  420615890 3467563163  541562091 3535949864 
-2277319197 3330822853 3215654174 4113831979 4204996991 
-2162248333 3255093522 2219088909 2978279037  255818579 
-2859348628 3097280311 2569721123 1861951120 2907080079 
-2719467166  998319094 2521935127 2404125338  259456032 
-2086860995 1839848496 1893547357 2527997525 1489393124 
-2860855349   76448234 2264934035  744914583 2586791259 
-1385380501   66529922 1819103258 1899300332 2098173828 
-1793831094  276463159  360132945 4178212058  595015228 
- 177071838 2800080290 1573557746 1548998935  378454223 
-1460534296 1116274283 3112385063 3709761796  827999348 
-3580042847 1913901014  614021289 4278528023 1905177404 
-  45407939 3298183234 1184848810 3644926330 3923635459 
-1627046213 3677876759  969772772 1160524753 1522441192 
- 452369933 1527502551  832490847 1003299676 1071381111 
-2891255476  973747308 4086897108 1847554542 3895651598 
-2227820339 1621250941 2881344691 3583565821 3510404498 
- 849362119  862871471  797858058 2867774932 2821282612 
-3272403146 3997979905  209178708 1805135652    6783381 
-2823361423  792580494 4263749770  776439581 3798193823 
-2853444094 2729507474 1071873341 1329010206 1289336450 
-3327680758 2011491779   80157208  922428856 1158943220 
-1667230961 2461022820 2608845159  387516115 3345351910 
-1495629111 4098154157 3156649613 3525698599 4134908037 
- 446713264 2137537399 3617403512  813966752 1157943946 
-3734692965 1680301658 3180398473 3509854711 2228114612 
-1008102291  486805123  863791847 3189125290 1050308116 
-3777341526 4291726501  844061465 1347461791 2826481581 
- 745465012 2055805750 4260209475 2386693097 2980646741 
- 447229436 2077782664 1232942813 4023002732 1399011509 
-3140569849 2579909222 3794857471  900758066 2887199683 
-1720257997 3367494931 2668921229  955539029 3818726432 
-1105704962 3889207255 2277369307 2746484505 1761846513 
-2413916784 2685127085 4240257943 1166726899 4215215715 
-3082092067 3960461946 1663304043 2087473241 4162589986 
-2507310778 1579665506  767234210  970676017  492207530 
-1441679602 1314785090 3262202570 3417091742 1561989210 
-3011406780 1146609202 3262321040 1374872171 1634688712 
-1280458888 2230023982  419323804 3262899800   39783310 
-1641619040 1700368658 2207946628 2571300939 2424079766 
- 780290914 2715195096 3390957695  163151474 2309534542 
-1860018424  555755123  280320104 1604831083 2713022383 
-1728987441 3639955502  623065489 3828630947 4275479050 
-3516347383 2343951195 2430677756  635534992 3868699749 
- 808442435 3070644069 4282166003 2093181383 2023555632 
-1568662086 3422372620 4134522350 3016979543 3259320234 
-2888030729 3185253876 4258779643 1267304371 1022517473 
- 815943045  929020012 2995251018 3371283296 3608029049 
-2018485115  122123397 2810669150 1411365618 1238391329 
-1186786476 3155969091 2242941310 1765554882  279121160 
-4279838515 1641578514 3796324015   13351065  103516986 
-1609694427  551411743 2493771609 1316337047 3932650856 
-4189700203  463397996 2937735066 1855616529 2626847990 
-  55091862 3823351211  753448970 4045045500 1274127772 
-1124182256   92039808 2126345552  425973257  386287896 
-2589870191 1987762798 4084826973 2172456685 3366583455 
-3602966653 2378803535 2901764433 3716929006 3710159000 
-2653449155 3469742630 3096444476 3932564653 2595257433 
- 318974657 3146202484  853571438  144400272 3768408841 
- 782634401 2161109003  570039522 1886241521   14249488 
-2230804228 1604941699 3928713335 3921942509 2155806892 
- 134366254  430507376 1924011722  276713377  196481886 
-3614810992 1610021185 1785757066  851346168 3761148643 
-2918835642 3364422385 3012284466 3735958851 2643153892 
-3778608231 1164289832  205853021 2876112231 3503398282 
-3078397001 3472037921 1748894853 2740861475  316056182 
-1660426908  168885906  956005527 3984354789  566521563 
-1001109523 1216710575 2952284757 3834433081 3842608301 
-2467352408 3974441264 3256601745 1409353924 1329904859 
-2307560293 3125217879 3622920184 3832785684 3882365951 
-2308537115 2659155028 1450441945 3532257603 3186324194 
-1225603425 1124246549  175808705 3009142319 2796710159 
-3651990107  160762750 1902254979 1698648476 1134980669 
- 497144426 3302689335 4057485630 3603530763 4087252587 
- 427812652  286876201  823134128 1627554964 3745564327 
-2589226092 4202024494   62878473 3275585894 3987124064 
-2791777159 1916869511 2585861905 1375038919 1403421920 
-  60249114 3811870450 3021498009 2612993202  528933105 
-2757361321 3341402964 2621861700  273128190 4015252178 
-3094781002 1621621288 2337611177 1796718448 1258965619 
-4241913140 2138560392 3022190223 4174180924  450094611 
-3274724580  617150026 2704660665 1469700689 1341616587 
- 356715071 1188789960 2278869135 1766569160 2795896635 
-  57824704 2893496380 1235723989 1630694347 3927960522 
- 428891364 1814070806 2287999787 4125941184 3968103889 
-3548724050 1025597707 1404281500 2002212197   92429143 
-2313943944 2403086080 3006180634 3561981764 1671860914 
-1768520622 1803542985  844848113 3006139921 1410888995 
-1157749833 2125704913 1789979528 1799263423  741157179 
-2405862309  767040434 2655241390 3663420179 2172009096 
-2511931187 1680542666  231857466 1154981000  157168255 
-1454112128 3505872099 1929775046 2309422350 2143329496 
-2960716902  407610648 2938108129 2581749599  538837155 
-2342628867  430543915  740188568 1937713272 3315215132 
-2085587024 4030765687  766054429 3517641839  689721775 
-1294158986 1753287754 4202601348 1974852792   33459103 
-3568087535 3144677435 1686130825 4134943013 3005738435 
-3599293386  426570142  754104406 3660892564 1964545167 
- 829466833  821587464 1746693036 1006492428 1595312919 
-1256599985 1024482560 1897312280 2902903201  691790057 
-1037515867 3176831208 1968401055 2173506824 1089055278 
-1748401123 2941380082  968412354 1818753861 2973200866 
-3875951774 1119354008 3988604139 1647155589 2232450826 
-3486058011 3655784043 3759258462  847163678 1082052057 
- 989516446 2871541755 3196311070 3929963078  658187585 
-3664944641 2175149170 2203709147 2756014689 2456473919 
-3890267390 1293787864 2830347984 3059280931 4158802520 
-1561677400 2586570938  783570352 1355506163   31495586 
-3789437343 3340549429 2092501630  896419368  671715824 
-3530450081 3603554138 1055991716 3442308219 1499434728 
-3130288473 3639507000   17769680 2259741420  487032199 
-4227143402 3693771256 1880482820 3924810796  381462353 
-4017855991 2452034943 2736680833 2209866385 2128986379 
- 437874044  595759426  641721026 1636065708 3899136933 
- 629879088 3591174506  351984326 2638783544 2348444281 
-2341604660 2123933692  143443325 1525942256  364660499 
- 599149312  939093251 1523003209  106601097  376589484 
-1346282236 1297387043  764598052 3741218111  933457002 
-1886424424 3219631016  525405256 3014235619  323149677 
-2038881721 4100129043 2851715101 2984028078 1888574695 
-2014194741 3515193880 4180573530 3461824363 2641995497 
-3179230245 2902294983 2217320456 4040852155 1784656905 
-3311906931   87498458 2752971818 2635474297 2831215366 
-3682231106 2920043893 3772929704 2816374944  309949752 
-2383758854  154870719  385111597 1191604312 1840700563 
- 872191186 2925548701 1310412747 2102066999 1504727249 
-3574298750 1191230036 3330575266 3180292097 3539347721 
- 681369118 3305125752 3648233597  950049240 4173257693 
-1760124957  512151405  681175196  580563018 1169662867 
-4015033554 2687781101  699691603 2673494188 1137221356 
- 123599888  472658308 1053598179 1012713758 3481064843 
-3759461013 3981457956 3830587662 1877191791 3650996736 
- 988064871 3515461600 4089077232 2225147448 1249609188 
-2643151863 3896204135 2416995901 1397735321 3460025646 
-
-1000 outputs of genrand_real2()
-0.76275443 0.99000644 0.98670464 0.10143112 0.27933125 
-0.69867227 0.94218740 0.03427201 0.78842173 0.28180608 
-0.92179002 0.20785655 0.54534773 0.69644020 0.38107718 
-0.23978165 0.65286910 0.07514568 0.22765211 0.94872929 
-0.74557914 0.62664415 0.54708246 0.90959343 0.42043116 
-0.86334511 0.19189126 0.14718544 0.70259889 0.63426346 
-0.77408121 0.04531601 0.04605807 0.88595519 0.69398270 
-0.05377184 0.61711170 0.05565708 0.10133577 0.41500776 
-0.91810699 0.22320679 0.23353705 0.92871862 0.98897234 
-0.19786706 0.80558809 0.06961067 0.55840445 0.90479405 
-0.63288060 0.95009721 0.54948447 0.20645042 0.45000959 
-0.87050869 0.70806991 0.19406895 0.79286390 0.49332866 
-0.78483914 0.75145146 0.12341941 0.42030252 0.16728160 
-0.59906494 0.37575460 0.97815160 0.39815952 0.43595080 
-0.04952478 0.33917805 0.76509902 0.61034321 0.90654701 
-0.92915732 0.85365931 0.18812377 0.65913428 0.28814566 
-0.59476081 0.27835931 0.60722542 0.68310435 0.69387186 
-0.03699800 0.65897714 0.17527003 0.02889304 0.86777366 
-0.12352068 0.91439461 0.32022990 0.44445731 0.34903686 
-0.74639273 0.65918367 0.92492794 0.31872642 0.77749724 
-0.85413832 0.76385624 0.32744211 0.91326300 0.27458185 
-0.22190155 0.19865383 0.31227402 0.85321225 0.84243342 
-0.78544200 0.71854080 0.92503892 0.82703064 0.88306297 
-0.47284073 0.70059042 0.48003761 0.38671694 0.60465770 
-0.41747204 0.47163243 0.72750808 0.65830223 0.10955369 
-0.64215401 0.23456345 0.95944940 0.72822249 0.40888451 
-0.69980355 0.26677428 0.57333635 0.39791582 0.85377858 
-0.76962816 0.72004885 0.90903087 0.51376506 0.37732665 
-0.12691640 0.71249738 0.81217908 0.37037313 0.32772374 
-0.14238259 0.05614811 0.74363008 0.39773267 0.94859135 
-0.31452454 0.11730313 0.62962618 0.33334237 0.45547255 
-0.10089665 0.56550662 0.60539371 0.16027624 0.13245301 
-0.60959939 0.04671662 0.99356286 0.57660859 0.40269560 
-0.45274629 0.06699735 0.85064246 0.87742744 0.54508392 
-0.87242982 0.29321385 0.67660627 0.68230715 0.79052073 
-0.48592054 0.25186266 0.93769755 0.28565487 0.47219067 
-0.99054882 0.13155240 0.47110470 0.98556600 0.84397623 
-0.12875246 0.90953202 0.49129015 0.23792727 0.79481194 
-0.44337770 0.96564297 0.67749118 0.55684872 0.27286897 
-0.79538393 0.61965356 0.22487929 0.02226018 0.49248200 
-0.42247006 0.91797788 0.99250134 0.23449967 0.52531508 
-0.10246337 0.78685622 0.34310922 0.89892996 0.40454552 
-0.68608407 0.30752487 0.83601319 0.54956031 0.63777550 
-0.82199797 0.24890696 0.48801123 0.48661910 0.51223987 
-0.32969635 0.31075073 0.21393155 0.73453207 0.15565705 
-0.58584522 0.28976728 0.97621478 0.61498701 0.23891470 
-0.28518540 0.46809591 0.18371914 0.37597910 0.13492176 
-0.66849449 0.82811466 0.56240330 0.37548956 0.27562998 
-0.27521910 0.74096121 0.77176757 0.13748143 0.99747138 
-0.92504502 0.09175241 0.21389176 0.21766512 0.31183245 
-0.23271221 0.21207367 0.57903312 0.77523344 0.13242613 
-0.31037988 0.01204835 0.71652949 0.84487594 0.14982178 
-0.57423142 0.45677888 0.48420169 0.53465428 0.52667473 
-0.46880526 0.49849733 0.05670710 0.79022476 0.03872047 
-0.21697212 0.20443086 0.28949326 0.81678186 0.87629474 
-0.92297064 0.27373097 0.84625273 0.51505586 0.00582792 
-0.33295971 0.91848412 0.92537226 0.91760033 0.07541125 
-0.71745848 0.61158698 0.00941650 0.03135554 0.71527471 
-0.24821915 0.63636652 0.86159918 0.26450229 0.60160194 
-0.35557725 0.24477500 0.07186456 0.51757096 0.62120362 
-0.97981062 0.69954667 0.21065616 0.13382753 0.27693186 
-0.59644095 0.71500764 0.04110751 0.95730081 0.91600724 
-0.47704678 0.26183479 0.34706971 0.07545431 0.29398385 
-0.93236070 0.60486023 0.48015011 0.08870451 0.45548581 
-0.91872718 0.38142712 0.10668643 0.01397541 0.04520355 
-0.93822273 0.18011940 0.57577277 0.91427606 0.30911399 
-0.95853475 0.23611214 0.69619891 0.69601980 0.76765372 
-0.58515930 0.49479057 0.11288752 0.97187699 0.32095365 
-0.57563608 0.40760618 0.78703383 0.43261152 0.90877651 
-0.84686346 0.10599030 0.72872803 0.19315490 0.66152912 
-0.10210518 0.06257876 0.47950688 0.47062066 0.72701157 
-0.48915116 0.66110261 0.60170685 0.24516994 0.12726050 
-0.03451185 0.90864994 0.83494878 0.94800035 0.91035206 
-0.14480751 0.88458997 0.53498312 0.15963215 0.55378627 
-0.35171349 0.28719791 0.09097957 0.00667896 0.32309622 
-0.87561479 0.42534520 0.91748977 0.73908457 0.41793223 
-0.99279792 0.87908370 0.28458072 0.59132853 0.98672190 
-0.28547393 0.09452165 0.89910674 0.53681109 0.37931425 
-0.62683489 0.56609740 0.24801549 0.52948179 0.98328855 
-0.66403523 0.55523786 0.75886666 0.84784685 0.86829981 
-0.71448906 0.84670080 0.43922919 0.20771016 0.64157936 
-0.25664246 0.73055695 0.86395782 0.65852932 0.99061803 
-0.40280575 0.39146298 0.07291005 0.97200603 0.20555729 
-0.59616495 0.08138254 0.45796388 0.33681125 0.33989127 
-0.18717090 0.53545811 0.60550838 0.86520709 0.34290701 
-0.72743276 0.73023855 0.34195926 0.65019733 0.02765254 
-0.72575740 0.32709576 0.03420866 0.26061893 0.56997511 
-0.28439072 0.84422744 0.77637570 0.55982168 0.06720327 
-0.58449067 0.71657369 0.15819609 0.58042821 0.07947911 
-0.40193792 0.11376012 0.88762938 0.67532159 0.71223735 
-0.27829114 0.04806073 0.21144026 0.58830274 0.04140071 
-0.43215628 0.12952729 0.94668759 0.87391019 0.98382450 
-0.27750768 0.90849647 0.90962737 0.59269720 0.96102026 
-0.49544979 0.32007095 0.62585546 0.03119821 0.85953001 
-0.22017528 0.05834068 0.80731217 0.53799961 0.74166948 
-0.77426600 0.43938444 0.54862081 0.58575513 0.15886492 
-0.73214332 0.11649057 0.77463977 0.85788827 0.17061997 
-0.66838056 0.96076133 0.07949296 0.68521946 0.89986254 
-0.05667410 0.12741385 0.83470977 0.63969104 0.46612929 
-0.10200126 0.01194925 0.10476340 0.90285217 0.31221221 
-0.32980614 0.46041971 0.52024973 0.05425470 0.28330912 
-0.60426543 0.00598243 0.97244013 0.21135841 0.78561597 
-0.78428734 0.63422849 0.32909934 0.44771136 0.27380750 
-0.14966697 0.18156268 0.65686758 0.28726350 0.97074787 
-0.63676171 0.96649494 0.24526295 0.08297372 0.54257548 
-0.03166785 0.33735355 0.15946671 0.02102971 0.46228045 
-0.11892296 0.33408336 0.29875681 0.29847692 0.73767569 
-0.02080745 0.62980060 0.08082293 0.22993106 0.25031439 
-0.87787525 0.45150053 0.13673441 0.63407612 0.97907688 
-0.52241942 0.50580158 0.06273902 0.05270283 0.77031811 
-0.05113352 0.24393329 0.75036441 0.37436336 0.22877652 
-0.59975358 0.85707591 0.88691457 0.85547165 0.36641027 
-0.58720133 0.45462835 0.09243817 0.32981586 0.07820411 
-0.25421519 0.36004706 0.60092307 0.46192412 0.36758683 
-0.98424170 0.08019934 0.68594024 0.45826386 0.29962317 
-0.79365413 0.89231296 0.49478547 0.87645944 0.23590734 
-0.28106737 0.75026285 0.08136314 0.79582424 0.76010628 
-0.82792971 0.27947652 0.72482861 0.82191216 0.46171689 
-0.79189752 0.96043686 0.51609668 0.88995725 0.28998963 
-0.55191845 0.03934737 0.83033700 0.49553013 0.98009549 
-0.19017594 0.98347750 0.33452066 0.87144372 0.72106301 
-0.71272114 0.71465963 0.88361677 0.85571283 0.73782329 
-0.20920458 0.34855153 0.46766817 0.02780062 0.74898344 
-0.03680650 0.44866557 0.77426312 0.91025891 0.25195236 
-0.87319953 0.63265037 0.25552148 0.27422476 0.95217406 
-0.39281839 0.66441573 0.09158900 0.94515992 0.07800798 
-0.02507888 0.39901462 0.17382573 0.12141278 0.85502334 
-0.19902911 0.02160210 0.44460522 0.14688742 0.68020336 
-0.71323733 0.60922473 0.95400380 0.99611159 0.90897777 
-0.41073520 0.66206647 0.32064685 0.62805003 0.50677209 
-0.52690101 0.87473387 0.73918362 0.39826974 0.43683919 
-0.80459118 0.32422684 0.01958019 0.95319576 0.98326137 
-0.83931735 0.69060863 0.33671416 0.68062550 0.65152380 
-0.33392969 0.03451730 0.95227244 0.68200635 0.85074171 
-0.64721009 0.51234433 0.73402047 0.00969637 0.93835057 
-0.80803854 0.31485260 0.20089527 0.01323282 0.59933780 
-0.31584602 0.20209563 0.33754800 0.68604181 0.24443049 
-0.19952227 0.78162632 0.10336988 0.11360736 0.23536740 
-0.23262256 0.67803776 0.48749791 0.74658435 0.92156640 
-0.56706407 0.36683221 0.99157136 0.23421374 0.45183767 
-0.91609720 0.85573315 0.37706276 0.77042618 0.30891908 
-0.40709595 0.06944866 0.61342849 0.88817388 0.58734506 
-0.98711323 0.14744128 0.63242656 0.87704136 0.68347125 
-0.84446569 0.43265239 0.25146321 0.04130111 0.34259839 
-0.92697368 0.40878778 0.56990338 0.76204273 0.19820348 
-0.66314909 0.02482844 0.06669207 0.50205581 0.26084093 
-0.65139159 0.41650223 0.09733904 0.56344203 0.62651696 
-0.67332139 0.58037374 0.47258086 0.21010758 0.05713135 
-0.89390629 0.10781246 0.32037450 0.07628388 0.34227964 
-0.42190597 0.58201860 0.77363549 0.49595133 0.86031236 
-0.83906769 0.81098161 0.26694195 0.14215941 0.88210306 
-0.53634237 0.12090720 0.82480459 0.75930318 0.31847147 
-0.92768077 0.01037616 0.56201727 0.88107122 0.35925856 
-0.85860762 0.61109408 0.70408301 0.58434977 0.92192494 
-0.62667915 0.75988365 0.06858761 0.36156496 0.58057195 
-0.13636150 0.57719713 0.59340255 0.63530602 0.22976282 
-0.71915530 0.41162531 0.63979565 0.09931342 0.79344045 
-0.10893790 0.84450224 0.23122236 0.99485593 0.73637397 
-0.17276368 0.13357764 0.74965804 0.64991737 0.61990341 
-0.41523170 0.05878239 0.05687301 0.05497131 0.42868366 
-0.42571090 0.25810502 0.89642955 0.30439758 0.39310223 
-0.11357431 0.04288255 0.23397550 0.11200634 0.85621396 
-0.89733974 0.37508865 0.42077265 0.68597384 0.72781399 
-0.19296476 0.61699087 0.31667128 0.67756410 0.00177323 
-0.05725176 0.79474693 0.18885238 0.06724856 0.68193156 
-0.42202167 0.22082041 0.28554673 0.64995708 0.87851940 
-0.29124547 0.61009521 0.87374537 0.05743712 0.69902994 
-0.81925115 0.45653873 0.37236821 0.31118709 0.52734307 
-0.39672836 0.38185294 0.30163915 0.17374510 0.04913278 
-0.90404879 0.25742801 0.58266467 0.97663209 0.79823377 
-0.36437958 0.15206043 0.26529938 0.22690047 0.05839021 
-0.84721160 0.18622435 0.37809403 0.55706977 0.49828704 
-0.47659049 0.24289680 0.88477595 0.07807463 0.56245739 
-0.73490635 0.21099431 0.13164942 0.75840044 0.66877037 
-0.28988183 0.44046090 0.24967434 0.80048356 0.26029740 
-0.30416821 0.64151867 0.52067892 0.12880774 0.85465381 
-0.02690525 0.19149288 0.49630295 0.79682619 0.43566145 
-0.00288078 0.81484193 0.03763639 0.68529083 0.01339574 
-0.38405386 0.30537067 0.22994703 0.44000045 0.27217985 
-0.53831243 0.02870435 0.86282045 0.61831306 0.09164956 
-0.25609707 0.07445781 0.72185784 0.90058883 0.30070608 
-0.94476583 0.56822213 0.21933909 0.96772793 0.80063440 
-0.26307906 0.31183306 0.16501252 0.55436179 0.68562285 
-0.23829083 0.86511559 0.57868991 0.81888344 0.20126869 
-0.93172350 0.66028129 0.21786948 0.78515828 0.10262106 
-0.35390326 0.79303876 0.63427924 0.90479631 0.31024934 
-0.60635447 0.56198079 0.63573813 0.91854197 0.99701497 
-0.83085849 0.31692291 0.01925964 0.97446405 0.98751283 
-0.60944293 0.13751018 0.69519957 0.68956636 0.56969015 
-0.46440193 0.88341765 0.36754434 0.89223647 0.39786427 
-0.85055280 0.12749961 0.79452122 0.89449784 0.14567830 
-0.45716830 0.74822309 0.28200437 0.42546044 0.17464886 
-0.68308746 0.65496587 0.52935411 0.12736159 0.61523955 
-0.81590528 0.63107864 0.39786553 0.20102294 0.53292914 
-0.75485590 0.59847044 0.32861691 0.12125866 0.58917183 
-0.07638293 0.86845380 0.29192617 0.03989733 0.52180460 
-0.32503407 0.64071852 0.69516575 0.74254998 0.54587026 
-0.48713246 0.32920155 0.08719954 0.63497059 0.54328459 
-0.64178757 0.45583809 0.70694291 0.85212760 0.86074305 
-0.33163422 0.85739792 0.59908488 0.74566046 0.72157152 

Modified: branches/tt362/t/library/test_more.t
==============================================================================
--- branches/tt362/t/library/test_more.t	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/t/library/test_more.t	Fri Feb 19 22:23:20 2010	(r44203)
@@ -15,14 +15,14 @@
     .local pmc exports, curr_namespace, test_namespace
     curr_namespace = get_namespace
     test_namespace = get_namespace [ 'Test'; 'More' ]
-    exports = split " ", "ok nok is diag like skip todo is_deeply isa_ok isnt throws_like lives_ok dies_ok"
+    exports = split " ", "ok nok is diag like skip todo is_deeply is_null isa_ok isnt throws_like lives_ok dies_ok"
     test_namespace.'export_to'(curr_namespace, exports)
 
     test_namespace = get_namespace [ 'Test'; 'Builder'; 'Tester' ]
     exports = split " ", "plan test_out test_diag test_fail test_pass test_test"
     test_namespace.'export_to'(curr_namespace, exports)
 
-    plan( 108 )
+    plan( 117 )
 
     test_skip()
     test_todo()
@@ -32,6 +32,7 @@
     test_isnt()
     test_like()
     test_is_deeply()
+    test_is_null()
     test_diagnostics()
     test_lives_ok()
     test_dies_ok()
@@ -369,7 +370,62 @@
     test_diag( 'Have: 1' )
     test_diag( expected )
     is( left, right, 'comparing two pmcs' )
-    test_test( 'failing test is() for pmcs with description')
+    test_test( 'failing test is() for pmcs with description' )
+    
+    test_pass( 'comparing two nulls' )
+    null left
+    null right
+    is( left, right, 'comparing two nulls' )
+    test_test( 'passing test is() for nulls')
+    
+    test_fail('comparing null with Int')
+    null left
+    right = box 1
+    is( left, right, 'comparing null with Int')
+    test_diag( 'Have: null' )
+    test_diag( 'Want: 1' )
+    test_test('failing test is() for null vs. pmc 1')
+    
+    test_fail('comparing Int with null')
+    left = box 10
+    null right
+    is( left, right, 'comparing Int with null')
+    test_diag( 'Have: 10' )
+    test_diag( 'Want: null' )
+    test_test('failing test is() for pmc 10 vs. null')
+
+    test_fail('comparing null with Float')
+    null left
+    right = box 1.01
+    is( left, right, 'comparing null with Float')
+    test_diag( 'Have: null' )
+    test_diag( 'Want: 1.01' )
+    test_test('failing test is() for null vs. pmc 1.01')
+    
+    test_fail('comparing Float with null')
+    left = box 2.787
+    null right
+    is( left, right, 'comparing Float with null')
+    test_diag( 'Have: 2.787' )
+    test_diag( 'Want: null' )
+    test_test('failing test is() for pmc 2.787 vs. null')
+
+    test_fail('comparing null with String')
+    null left
+    right = box 'September, when it comes'
+    is( left, right, 'comparing null with String')
+    test_diag( 'Have: null' )
+    test_diag( 'Want: September, when it comes' )
+    test_test('failing test is() for null vs. String pmc')
+    
+    test_fail('comparing String with null')
+    left = box 'I cannot move a mountain now'
+    null right
+    is( left, right, 'comparing String with null')
+    test_diag( 'Have: I cannot move a mountain now' )
+    test_diag( 'Want: null' )
+    test_test('failing test is() for String pmc vs. null')
+
 .end
 
 .sub test_isnt
@@ -803,6 +859,20 @@
     test_test( 'failing test isnt() for PMC/string')
 
 .end
+
+.sub test_is_null
+    test_pass( 'null is_null')
+    null $P0
+    is_null($P0, 'null is_null')
+    test_test( 'passing is_null with null')
+
+    test_fail( 'String is not null' )
+    $P0 = box 'Concerto'
+    is_null($P0, 'String is not null')
+    test_diag( "Have: Concerto" )
+    test_diag( "Want: null" )
+    test_test( 'failing test is_null for String pmc')
+.end
 # Local Variables:
 #   mode: pir
 #   fill-column: 100

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

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

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

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

Copied: branches/tt362/t/op/gc-leaky.t (from r44202, trunk/t/op/gc-leaky.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/tt362/t/op/gc-leaky.t	Fri Feb 19 22:23:20 2010	(r44203, copy of r44202, trunk/t/op/gc-leaky.t)
@@ -0,0 +1,73 @@
+#!./parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/op/gc-leaky.t - test for memory leaks in the Garbage Collector
+
+=head1 SYNOPSIS
+
+    % prove t/op/gc-leaky.t
+
+=head1 DESCRIPTION
+
+Tests that we actually do a GC mark and sweep after a large number of PMC's have
+been created. Test suggested by chromatic++ . More tests are needed to close
+TT1465 - http://trac.parrot.org/parrot/ticket/1465 .
+
+=cut
+
+# 20:57 <chromatic> For every million PMCs allocated, see that the GC has performed a mark/sweep.
+
+.include 'interpinfo.pasm'
+
+.sub _main :main
+    .include 'test_more.pir'
+
+    plan(2)
+
+    $S0 = interpinfo .INTERPINFO_GC_SYS_NAME
+    if $S0 == "inf" goto dont_run_hanging_tests
+
+    test_gc_mark_sweep()
+
+    goto test_end
+  dont_run_hanging_tests:
+    ok(1, "#TODO - Test disabled on gc_inf")
+    ok(1, "#TODO - Test disabled on gc_inf")
+  test_end:
+.end
+
+.sub test_gc_mark_sweep
+    .local int counter
+    counter = 0
+    loop:
+        $P0 = box 0
+        inc counter
+        if counter > 1e6 goto done
+        goto loop
+    done:
+        say ""
+        $I1 = interpinfo.INTERPINFO_GC_COLLECT_RUNS
+        $I2 = interpinfo.INTERPINFO_GC_MARK_RUNS
+
+        $I3 = isge $I1, 1
+        $I4 = isge $I2, 1
+
+        $S1 = $I1
+        $S0 = "performed " . $S1
+        $S0 .= " (which should be >=1) GC collect runs"
+        ok($I2,$S0)
+
+        $S1 = $I2
+        $S0 = "performed " . $S1
+        $S0 .= " (which should be >=1) GC mark runs"
+        ok($I2,$S0)
+.end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Modified: branches/tt362/t/op/string_mem.t
==============================================================================
--- branches/tt362/t/op/string_mem.t	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/t/op/string_mem.t	Fri Feb 19 22:23:20 2010	(r44203)
@@ -37,7 +37,6 @@
 .sub _main :main
     .include 'test_more.pir'
 
-    .local pmc _
     plan(TESTS)
 
     test_stringinfo()
@@ -52,7 +51,6 @@
 .end
 
 .sub test_stringinfo
-    .local pmc _
 
     $S1 = "Hello, world"
     $S0 = $S1

Modified: branches/tt362/t/pmc/namespace.t
==============================================================================
--- branches/tt362/t/pmc/namespace.t	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/t/pmc/namespace.t	Fri Feb 19 22:23:20 2010	(r44203)
@@ -56,11 +56,12 @@
 
 .sub main :main
     .include 'test_more.pir'
-    plan(70)
+    plan(74)
 
     create_namespace_pmc()
     verify_namespace_type()
     get_namespace_class()
+    keyed_namespace_lookup()
     get_global_opcode()
     get_sub_from_namespace_hash()
     access_sub_in_namespace()
@@ -167,6 +168,40 @@
 
 .end
 
+.sub keyed_namespace_lookup
+    # Tests to verify behavior of TT #1449
+    $P0 = get_root_namespace
+
+    # Keyed lookup
+    $P1 = $P0["parrot";"Foo";"Bar"]
+    $I0 = isnull $P1
+    is($I0, 0, "can lookup nested namespace by Key")
+    # TODO: Get the function from this namespace and call it to verify we have
+    #       the correct one.
+
+    # Array lookup
+    $P1 = new ['ResizableStringArray']
+    $P1[0] = "parrot"
+    $P1[1] = "Foo"
+    $P1[2] = "Bar"
+    $P1[3] = "Baz"
+    $P2 = $P0[$P1]
+    $I0 = isnull $P1
+    is($I0, 0, "can lookup nested namespace by RSA")
+    # TODO: Get the function from this namespace and call it to verify we have
+    #       the correct one.
+
+    # String lookup
+    $P1 = $P0["parrot"]
+    $P2 = $P1["Foo"]
+    $I0 = isnull $P1
+    is($I0, 0, "can lookup namespace by string")
+    $I0 = isnull $P2
+    is($I0, 0, "can lookup namespace by string")
+    # TODO: Get the function from this namespace and call it to verify we have
+    #       the correct one.
+.end
+
 # L<PDD21//>
 .sub 'get_global_opcode'
   test1:
@@ -486,7 +521,7 @@
 
     # ...now we do!
     $P1 = $P0.'make_namespace'("NewNamespace1")
-    $P2 = $P1["baz"]    
+    $P2 = $P1["baz"]
     $I0 = isnull $P2
     is($I0, 1, "make_namespace also creates new namespaces")
 
@@ -632,6 +667,12 @@
     .return("Foo::Bar")
 .end
 
+# Namespace "Foo";"Bar";"Baz". Nested namespace
+.namespace ["Foo";"Bar";"Baz"]
+.sub 'widget'
+    .return("Foo::Bar::Baz")
+.end
+
 # Namespace specified in ISO-8859-1
 .namespace [ iso-8859-1:"Fran\x{E7}ois" ]
 .sub 'baz'

Copied: branches/tt362/t/pmc/opcode.t (from r44202, trunk/t/pmc/opcode.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/tt362/t/pmc/opcode.t	Fri Feb 19 22:23:20 2010	(r44203, copy of r44202, trunk/t/pmc/opcode.t)
@@ -0,0 +1,29 @@
+#! parrot
+# Copyright (C) 2001-2009, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/pmc/opcode.t - Opcode PMC
+
+=head1 SYNOPSIS
+
+    % prove t/pmc/opcode.t
+
+=cut
+
+.sub main :main
+    .include 'test_more.pir'
+    plan(1)
+    cannot_create_directly()
+.end
+
+.sub cannot_create_directly
+    push_eh cannot_create
+    $P0 = new ['Opcode']
+    ok(0, "shouldn't be able to create new opcode")
+    goto create_end
+  cannot_create:
+    ok(1)
+  create_end:
+.end

Copied: branches/tt362/t/pmc/oplib.t (from r44202, trunk/t/pmc/oplib.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/tt362/t/pmc/oplib.t	Fri Feb 19 22:23:20 2010	(r44203, copy of r44202, trunk/t/pmc/oplib.t)
@@ -0,0 +1,30 @@
+#! parrot
+# Copyright (C) 2001-2009, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/pmc/oplib.t - OpLib PMC
+
+=head1 SYNOPSIS
+
+    % prove t/pmc/oplib.t
+
+=cut
+
+.sub main :main
+    .include 'test_more.pir'
+    plan(1)
+    get_singleton()
+.end
+
+.sub get_singleton
+    $P0 = new ['OpLib']
+    $I0 = isnull $P0
+    is($I0, 0)
+
+    # TODO: How to test that this is actually a singleton?
+    #$P1 = new ['OpLib']
+    #is($P0, $P1)
+.end
+

Modified: branches/tt362/t/pmc/pmc.t
==============================================================================
--- branches/tt362/t/pmc/pmc.t	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/t/pmc/pmc.t	Fri Feb 19 22:23:20 2010	(r44203)
@@ -51,7 +51,7 @@
 my $checkTypes;
 my %types_we_cant_test
     = map { $_ => 1; } (    # These require initializers.
-    qw(default Null Iterator ArrayIterator HashIterator StringIterator OrderedHashIterator Enumerate ParrotObject ParrotThread BigInt LexInfo LexPad Object Handle),
+    qw(default Null Iterator ArrayIterator HashIterator StringIterator OrderedHashIterator Enumerate ParrotObject ParrotThread BigInt LexInfo LexPad Object Handle Opcode),
 
     # Instances of these appear to have other types.
     qw(PMCProxy Class) );

Modified: branches/tt362/t/src/embed.t
==============================================================================
--- branches/tt362/t/src/embed.t	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/t/src/embed.t	Fri Feb 19 22:23:20 2010	(r44203)
@@ -93,7 +93,7 @@
 "\n",
         &errstr
     );
-    Parrot_call_sub(interp, code, "v");
+    Parrot_ext_call(interp, code, "->");
 
     Parrot_destroy(interp);
     return 0;
@@ -160,7 +160,7 @@
     subname = Parrot_new_string(interp, "hello", 5, (const char *)NULL, 0);
     sub = Parrot_PMC_get_pmc_strkey(interp, parrotns,  subname);
     /* Execute it */
-    Parrot_call_sub(interp, sub, "v");
+    Parrot_ext_call(interp, sub, "->");
 
     Parrot_destroy(interp);
     return 0;
@@ -216,7 +216,7 @@
         &errstr
     );
     hellosub = Parrot_sub_new_from_c_func(interp, (void (*)())& hello, "vJ");
-    Parrot_call_sub(interp, code, "vP", hellosub);
+    Parrot_ext_call(interp, code, "P->", hellosub);
 
     Parrot_destroy(interp);
     return 0;
@@ -285,7 +285,7 @@
     Parrot_PMC_set_pmc_strkey(interp, parrotns, helloname, hellosub);
 
     /* Call it */
-    discard = Parrot_call_sub(interp, code, "v");
+    Parrot_ext_call(interp, code, "->");
 
     Parrot_destroy(interp);
     return 0;

Modified: branches/tt362/t/src/extend.t
==============================================================================
--- branches/tt362/t/src/extend.t	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/t/src/extend.t	Fri Feb 19 22:23:20 2010	(r44203)
@@ -446,7 +446,7 @@
 
     Parrot_pbc_load(interp, pf);
     sub = Parrot_find_global_cur(interp, name);
-    Parrot_call_sub(interp, sub, "v");
+    Parrot_ext_call(interp, sub, "->");
     Parrot_eprintf(interp, "back\\n");
 
     /* win32 seems to buffer stderr ? */
@@ -454,12 +454,12 @@
 
     name = Parrot_str_new_constant(interp, "_sub2");
     sub  = Parrot_find_global_cur(interp, name);
-    arg  = pmc_new(interp, enum_class_String);
+    arg  = Parrot_pmc_new(interp, enum_class_String);
 
     Parrot_PMC_set_string_native(interp, arg,
                  Parrot_str_new(interp, "hello ", 0));
 
-    Parrot_call_sub(interp, sub, "vP", arg);
+    Parrot_ext_call(interp, sub, "P->", arg);
     Parrot_eprintf(interp, "back\\n");
 
     return NULL;
@@ -512,7 +512,7 @@
 
     name = Parrot_str_new_constant(interp, "_sub2");
     sub  = Parrot_find_global_cur(interp, name);
-    arg  = pmc_new(interp, enum_class_String);
+    arg  = Parrot_pmc_new(interp, enum_class_String);
 
     Parrot_PMC_set_string_native(interp, arg,
                  Parrot_str_new(interp, "hello ", 0));
@@ -581,7 +581,7 @@
 
     Parrot_pbc_load(interp, pf);
     sub  = Parrot_find_global_cur(interp, name);
-    arg  = pmc_new(interp, enum_class_String);
+    arg  = Parrot_pmc_new(interp, enum_class_String);
 
     Parrot_PMC_set_string_native(interp, arg,
                  Parrot_str_new(interp, "hello ", 0));
@@ -657,7 +657,7 @@
         interp->current_runloop_id++;
 
         Parrot_ex_add_c_handler(interp, &jump_point);
-        Parrot_call_sub(interp, sub, "v");
+        Parrot_ext_call(interp, sub, "->");
     }
 
     Parrot_eprintf(interp, "back\\n");
@@ -781,7 +781,7 @@
     foo_name = Parrot_str_new_constant( interp, "foo" );
     sub      = Parrot_find_global_cur( interp, foo_name );
 
-    retval   = (PMC *) Parrot_call_sub( interp, sub, "V", "" );
+    Parrot_ext_call(interp, sub, "->");
 
     Parrot_exit(interp, 0);
     return 0;
@@ -812,7 +812,7 @@
     Parrot_pbc_load( interp, pf );
 
     sub      = Parrot_find_global_cur( interp, Parrot_str_new_constant( interp, "add" ) );
-    result   = Parrot_call_sub_ret_int( interp, sub, "III", 100, 200 );
+    Parrot_ext_call(interp, sub, "II->I", 100, 200, &result);
     printf( "Result is %d.\\n", result );
 
     Parrot_exit(interp, 0);

Deleted: branches/tt362/t/steps/gen/call_list-01.t
==============================================================================
--- branches/tt362/t/steps/gen/call_list-01.t	Fri Feb 19 22:23:20 2010	(r44202)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,73 +0,0 @@
-#! perl
-# Copyright (C) 2007-2008, Parrot Foundation.
-# $Id$
-# gen/call_list-01.t
-
-use strict;
-use warnings;
-use Test::More tests =>  6;
-use Carp;
-use lib qw( lib );
-use_ok('config::gen::call_list');
-use Parrot::Configure::Options qw( process_options );
-use Parrot::Configure::Step::Test;
-use Parrot::Configure::Test qw(
-    test_step_constructor_and_description
-);
-
-########## regular ##########
-
-my ($args, $step_list_ref) = process_options(
-    {
-        argv => [ ],
-        mode => q{configure},
-    }
-);
-
-my $conf = Parrot::Configure::Step::Test->new;
-$conf->include_config_results( $args );
-
-my $pkg = q{gen::call_list};
-$conf->add_steps($pkg);
-$conf->options->set( %{$args} );
-my $step = test_step_constructor_and_description($conf);
-my $missing_files = 0;
-foreach my $f ( @{ $step->{fragment_files} } ) {
-    $missing_files++ unless (-f $f);
-}
-is($missing_files, 0, "No needed source files are missing");
-
-pass("Completed all tests in $0");
-
-################### DOCUMENTATION ###################
-
-=head1 NAME
-
-  gen/call_list-01.t - test gen::call_list
-
-=head1 SYNOPSIS
-
-    % prove t/steps/gen/call_list-01.t
-
-=head1 DESCRIPTION
-
-The files in this directory test functionality used by F<Configure.pl>.
-
-The tests in this file test gen::call_list.
-
-=head1 AUTHOR
-
-Geoffrey Broadwell; modified from a similar file by James E Keenan.
-
-=head1 SEE ALSO
-
-config::gen::call_list, F<Configure.pl>.
-
-=cut
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Modified: branches/tt362/tools/build/nativecall.pir
==============================================================================
--- branches/tt362/tools/build/nativecall.pir	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/tools/build/nativecall.pir	Fri Feb 19 22:23:20 2010	(r44203)
@@ -7,21 +7,21 @@
 
 =head1 SYNOPSIS
 
-    % ./parrot tools/build/nativecall.pir <src/call_list.txt >src/nci.c
+    % ./parrot tools/build/nativecall.pir -o src/nci/extra_thunks.c <src/nci/extra_thunks.nci
 
 =head1 DESCRIPTION
 
-This script creates the Native Call Interface file F<src/nci.c>. It
-parses a file of function signatures of the form:
+This script creates Native Call Interface files. It parses a file of function
+signatures of the form:
 
  <return-type-specifier><ws><parameter-type-specifiers>[<ws>][#<comment>]
     ...
 Empty lines and lines containing only whitespace or comment are ignored.
-The types specifiers are documented in F<src/call_list.txt>.
+The types specifiers are documented in F<src/nci/extra_thunks.nci>.
 
 =head1 SEE ALSO
 
-F<src/call_list.txt>.
+F<src/nci/extra_thunks.nci>.
 F<docs/pdds/pdd16_native_call.pod>.
 
 =cut
@@ -44,6 +44,10 @@
     .local pmc sigs
     sigs = 'read_sigs'()
 
+    $S0 = 'read_from_opts'('output')
+    $P0 = open $S0, 'w'
+    setstdout $P0
+
     if targ == 'head'   goto get_targ
     if targ == 'thunks' goto get_targ
     if targ == 'loader' goto get_targ
@@ -82,11 +86,12 @@
 
 # getopt stuff {{{
 
+.macro_const OUTPUT                 'output'
 .macro_const THUNK_STORAGE_CLASS    'thunk-storage-class'
 .macro_const THUNK_NAME_PROTO       'thunk-name-proto'
 .macro_const LOADER_STORAGE_CLASS   'loader-storage-class'
 .macro_const LOADER_NAME            'loader-name'
-
+.macro_const CORE                   'core'
 
 .sub 'get_options'
     .param pmc argv
@@ -97,6 +102,8 @@
     getopt = new ['Getopt';'Obj']
     push getopt, 'help|h'
     push getopt, 'version|v'
+    push getopt, 'core'
+    push getopt, 'output|o=s'
     push getopt, 'target=s'
     push getopt, 'thunk-storage-class=s'
     push getopt, 'thunk-name-proto=s'
@@ -134,11 +141,13 @@
 
 Creates a C file of routines suitable for use as Parrot NCI thunks.
 
-Usage ./parrot nativecall.pir [options] <input_signature_list.nci >output_c_file.c
+Usage ./parrot nativecall.pir [options] -o output_c_file.c <input_signature_list.nci
 
 Options
     --help              print this message and exit
     --version           print the version number of this utility
+    --core              output a thunks file suitable for inclusion in Parrot core. Default is no.
+    -o --output <file>  specify output file to use.
     --target <target>   select what to output (valid options are 'head', 'thunks',
                         'loader', 'coda', 'all', 'names', and 'signatures'). Default value is 'all'
     --thunk-storage-class <storage class>
@@ -164,6 +173,14 @@
 .sub 'fixup_opts'
     .param pmc opts
 
+    $I0 = defined opts['core']
+    if $I0 goto in_core
+        opts['core'] = ''
+        goto end_core
+    in_core:
+        opts['core'] = 'true'
+    end_core:
+
     $I0 = defined opts['target']
     if $I0 goto end_target
         opts['target'] = 'all'
@@ -220,7 +237,32 @@
 
 .sub 'get_head'
     .param pmc ignored :slurpy
-    .return (<<'HEAD')
+
+    .local string in_core
+    in_core = 'read_from_opts'(.CORE)
+
+    .local string ext_defn
+    ext_defn = ''
+    if in_core goto end_ext_defn
+        ext_defn = '#define PARROT_IN_EXTENSION'
+    end_ext_defn:
+
+    .local string c_file
+    c_file = 'read_from_opts'(.OUTPUT)
+
+    .local string str_file
+    str_file = clone c_file
+    substr str_file, -2, 2, '.str'
+    strip_str_file_loop:
+        $I0 = index str_file, '/'
+        if $I0 < 0 goto end_strip_str_file_loop
+        $I0 += 1
+        str_file = substr str_file, $I0
+        goto strip_str_file_loop
+    end_strip_str_file_loop:
+
+    .local string head
+    head = 'sprintf'(<<'HEAD', c_file, ext_defn, str_file)
 /* ex: set ro ft=c:
  * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
  *
@@ -230,8 +272,8 @@
  *
  */
 
-/* nci.c
- *  Copyright (C) 2001-2009, Parrot Foundation.
+/* %s
+ *  Copyright (C) 2010, Parrot Foundation.
  *  SVN Info
  *     $Id$
  *  Overview:
@@ -242,35 +284,27 @@
  *  Notes:
  *  References:
  */
+
+%s
 #include "parrot/parrot.h"
-#include "parrot/hash.h"
-#include "parrot/oplib/ops.h"
-#include "pmc/pmc_managedstruct.h"
 #include "pmc/pmc_nci.h"
-#include "pmc/pmc_pointer.h"
-#include "pmc/pmc_callcontext.h"
 
-#ifdef PARROT_IN_CORE
-/* external libraries don't have to care about string subsystem */
-#  include "nci.str"
+
+#ifdef PARROT_IN_EXTENSION
+/* external libraries can't have strings statically compiled into parrot */
+#  define CONST_STRING(i, s) Parrot_str_new_constant((i), (s))
+#else
+#  include "%s"
 #endif
 
 /* HEADERIZER HFILE: none */
 /* HEADERIZER STOP */
 
-/*
- * if the architecture can build some or all of these signatures
- * enable the define below
- * - the JITed function will be called first
- * - if it returns NULL, the hardcoded version will do the job
- */
-
-#include "frame_builder.h"
-
 /* All our static functions that call in various ways. Yes, terribly
    hackish, but that is just fine */
 
 HEAD
+    .return (head)
 .end
 
 .sub 'get_thunks'
@@ -337,7 +371,7 @@
         key = join '', sig
 
         $S0 = 'sprintf'(<<'TEMPLATE', fn_name, key)
-    temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
+    temp_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
     VTABLE_set_pointer(interp, temp_pmc, (void *)%s);
     VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "%s"), temp_pmc);
 
@@ -471,7 +505,7 @@
 
     .local string preamble
     preamble = 'sprintf'(<<'TEMPLATE', sig, fill_params, extra_preamble)
-    Parrot_pcc_fill_params_from_c_args(interp, call_object, "%s" %s);
+    Parrot_pcc_fill_params_from_c_args(interp, call_object, "%s"%s);
     %s
 TEMPLATE
 
@@ -791,7 +825,7 @@
            "sig_char":   "P",
            "call_param_tmpl": "PMC_IS_NULL((PMC*)t_%i) ? (void *)NULL : VTABLE_get_pointer(interp, t_%i)",
            "ret_assign": "if (return_data != NULL) {
-                             final_destination = pmc_new(interp, enum_class_UnManagedStruct);
+                             final_destination = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
                              VTABLE_set_pointer(interp, final_destination, return_data);
                           }
                           Parrot_pcc_fill_returns_from_c_args(interp, call_object, \"P\", final_destination);" },

Deleted: branches/tt362/tools/build/nativecall.pl
==============================================================================
--- branches/tt362/tools/build/nativecall.pl	Fri Feb 19 22:23:20 2010	(r44202)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,560 +0,0 @@
-#! perl
-# Copyright (C) 2001-2008, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-tools/build/nativecall.pl - Build up the native call routines
-
-=head1 SYNOPSIS
-
-    % perl tools/build/nativecall.pl src/call_list.txt
-
-=head1 DESCRIPTION
-
-This script creates the Native Call Interface file F<src/nci.c>. It
-parses a file of function signatures of the form:
-
- <return-type-specifier><ws><parameter-type-specifiers>[<ws>][#<comment>]
-    ...
-Empty lines and lines containing only whitespace or comment are ignored.
-The types specifiers are documented in F<src/call_list.txt>.
-
-=head1 SEE ALSO
-
-F<src/call_list.txt>.
-F<docs/pdds/pdd16_native_call.pod>.
-
-=cut
-
-use strict;
-use warnings;
-
-my $opt_warndups = 0;
-
-# This file will eventually be compiled
-open my $NCI, '>', 'src/nci.c' or die "Can't create nci.c: $!";
-
-print_head( \@ARGV );
-
-
-my %sig_table = (
-    p => {
-        as_proto => "void *",
-        final_dest => "PMC * final_destination = PMCNULL;",
-        sig_char => "P",
-        ret_assign => "if (return_data != NULL) {\n" .
-             "        final_destination = pmc_new(interp, enum_class_UnManagedStruct);\n" .
-             "        VTABLE_set_pointer(interp, final_destination, return_data);\n" .
-             "    }\n" .
-             "    Parrot_pcc_fill_returns_from_c_args(interp, call_object, \"P\", final_destination);",
-    },
-    i => { as_proto => "int",    sig_char => "I", return_type => "INTVAL" },
-    l => { as_proto => "long",   sig_char => "I", return_type => "INTVAL" },
-    c => { as_proto => "char",   sig_char => "I", return_type => "INTVAL" },
-    s => { as_proto => "short",  sig_char => "I", return_type => "INTVAL" },
-    f => { as_proto => "float",  sig_char => "N", return_type => "FLOATVAL" },
-    d => { as_proto => "double", sig_char => "N", return_type => "FLOATVAL" },
-    t => { as_proto => "char *",
-           final_dest => "STRING *final_destination;",
-           ret_assign => "final_destination = Parrot_str_new(interp, return_data, 0);\n    Parrot_pcc_fill_returns_from_c_args(interp, call_object, \"S\", final_destination);",
-           sig_char => "S" },
-    v => { as_proto => "void",
-           return_type => "void *",
-           sig_char => "v",
-           ret_assign => "",
-           func_call_assign => ""
-         },
-    P => { as_proto => "PMC *", sig_char => "P" },
-    O => { as_proto => "PMC *", returns => "", sig_char => "Pi" },
-    J => { as_proto => "PARROT_INTERP", returns => "", sig_char => "" },
-    S => { as_proto => "STRING *", sig_char => "S" },
-    I => { as_proto => "INTVAL", sig_char => "I" },
-    N => { as_proto => "FLOATVAL", sig_char => "N" },
-    b => { as_proto => "void *", as_return => "", sig_char => "S" },
-    B => { as_proto => "char **", as_return => "", sig_char => "S" },
-    # These should be replaced by modifiers in the future
-    2 => { as_proto => "short *",  sig_char => "P", return_type => "short",
-           ret_assign => 'Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);' },
-    3 => { as_proto => "int *",  sig_char => "P", return_type => "int",
-           ret_assign => 'Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);' },
-    4 => { as_proto => "long *",  sig_char => "P", return_type => "long",
-           ret_assign => 'Parrot_pcc_fill_returns_from_c_args(interp, call_object, "I", return_data);' },
-    L => { as_proto => "long *", as_return => "" },
-    T => { as_proto => "char **", as_return => "" },
-    V => { as_proto => "void **", as_return => "", sig_char => "P" },
-    '@' => { as_proto => "PMC *", as_return => "", cname => "xAT_", sig_char => 'Ps' },
-);
-
-for (values %sig_table) {
-    if (not exists $_->{as_return}) { $_->{as_return} = $_->{as_proto} }
-    if (not exists $_->{return_type}) { $_->{return_type} = $_->{as_proto} }
-    if (not exists $_->{ret_assign} and exists $_->{sig_char}) {
-        $_->{ret_assign} = 'Parrot_pcc_fill_returns_from_c_args(interp, call_object, "'
-                           . $_->{sig_char} . '", return_data);';
-    }
-    if (not exists $_->{func_call_assign}) {
-        $_->{func_call_assign} = "return_data = "
-    }
-}
-
-
-my $temp_cnt = 0;
-my (@put_pointer, @put_pointer_nci_too, @nci_defs);
-my %seen;
-
-while (<>) {
-    chomp;
-    s/#.*$//;    # comment till end of line
-    s/^\s*//;
-    s/\s*$//;
-    next unless $_;
-
-    my ( $ret, $args ) = split m/\s+/, $_;
-
-    $args = '' if not defined $args;
-
-    die "Invalid return signature char '$ret' on line $. of $ARGV\n"
-        unless exists $sig_table{$ret}{ret_assign};
-
-    if ( ( $seen{"$ret$args"} ||= $. ) != $. ) {
-        warn sprintf "Ignored signature '%s' on line %d (previously seen on line %d) of $ARGV",
-            "$ret$args", $., $seen{"$ret$args"}
-            if $opt_warndups;
-        next;
-    }
-
-    my @fill_params;
-    my @extra_preamble;
-    my @extra_postamble;
-    my @temps;
-    my @arg;
-    my $reg_num = 0;
-    my $sig     = '';
-
-    if ( defined $args and not $args =~ m/^\s*$/ ) {
-        foreach ( split m//, $args ) {
-            die "Invalid argument signature char '$_' on line $. of $ARGV"
-                unless exists $sig_table{$_}{sig_char};
-            push @arg,
-                make_arg( $_, $reg_num++, \$temp_cnt, \@temps, \@fill_params,
-                \@extra_preamble, \@extra_postamble );
-            $sig .= $sig_table{$_}{sig_char};
-            $_ eq 'J' && $reg_num--;
-        }
-    }
-
-    my $ret_sig = $sig_table{$ret};
-
-    if ($args =~ /[234V]/) {
-        push @nci_defs, create_function(
-            $sig, $ret,
-            $args, [@arg],
-            $ret_sig->{as_return}, $ret_sig->{return_type},
-            $ret_sig->{func_call_assign}, $ret_sig->{final_dest},
-            $ret_sig->{ret_assign}, \@temps,
-            \@fill_params, \@extra_preamble, \@extra_postamble,
-            \@put_pointer_nci_too,
-        );
-    }
-    else {
-        print {$NCI} create_function(
-            $sig, $ret,
-            $args, [@arg],
-            $ret_sig->{as_return}, $ret_sig->{return_type},
-            $ret_sig->{func_call_assign}, $ret_sig->{final_dest},
-            $ret_sig->{ret_assign}, \@temps,
-            \@fill_params, \@extra_preamble, \@extra_postamble,
-            \@put_pointer,
-        );
-    }
-}
-
-print {$NCI} <<"END_FUNCS";
-
-#endif
- at nci_defs
-
-END_FUNCS
-
-print_tail( \@put_pointer, \@put_pointer_nci_too );
-
-# append the C code coda
-print $NCI <<"EOC";
-
-/*
- * Local variables:
- *   c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */
-EOC
-
-close $NCI;
-
-sub print_head {
-    my ($definitions) = @_;
-    print $NCI <<"HEAD";
-/* ex: set ro ft=c:
- * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
- *
- * This file is generated automatically by tools/build/nativecall.pl
- * from definitions in @$definitions
- *
- * Any changes made here will be lost!
- *
- */
-
-/* nci.c
- *  Copyright (C) 2001-2009, Parrot Foundation.
- *  SVN Info
- *     \$Id\$
- *  Overview:
- *     Native Call Interface routines. The code needed to build a
- *     parrot to C call frame is in here
- *  Data Structure and Algorithms:
- *  History:
- *  Notes:
- *  References:
- */
-#include "parrot/parrot.h"
-#include "parrot/hash.h"
-#include "parrot/oplib/ops.h"
-#include "pmc/pmc_managedstruct.h"
-#include "pmc/pmc_nci.h"
-#include "pmc/pmc_pointer.h"
-#include "pmc/pmc_callcontext.h"
-#include "nci.str"
-
-/* HEADERIZER HFILE: none */
-/* HEADERIZER STOP */
-
-/*
- * if the architecture can build some or all of these signatures
- * enable the define below
- * - the JITed function will be called first
- * - if it returns NULL, the hardcoded version will do the job
- */
-
-#include "frame_builder.h"
-
-#ifndef CAN_BUILD_CALL_FRAMES
-/* All our static functions that call in various ways. Yes, terribly
-   hackish, but that is just fine */
-
-HEAD
-    return;
-}
-
-sub make_arg {
-
-    #
-    # we have to fetch all to temps, so that the call code
-    # can operate in sequence
-    #
-    my ( $argtype, $reg_num, $temp_cnt_ref, $temps_ref, $fill_params_ref, $extra_preamble_ref, $extra_postamble_ref )
-        = @_;
-
-    local $_ = $argtype;
-    my $temp_num = ${$temp_cnt_ref}++;
-    /[ilcsfdINSOP\@]/ && do {
-        my $ret_type = $sig_table{$_}{return_type};
-        push @{$temps_ref},       "$ret_type t_$temp_num;";
-        push @{$fill_params_ref}, "&t_$temp_num";
-        return "t_$temp_num";
-    };
-    /p/ && do {
-        push @{$temps_ref},       "PMC *t_$temp_num;";
-        push @{$fill_params_ref}, "&t_$temp_num";
-        return "PMC_IS_NULL((PMC*)t_$temp_num)? (void*)NULL:VTABLE_get_pointer(interp, t_$temp_num)";
-    };
-    /V/ && do {
-        push @{$temps_ref},          "PMC *t_$temp_num;";
-        push @{$temps_ref},          "void *v_$temp_num;";
-        push @{$fill_params_ref},    "&t_$temp_num";
-        push @{$extra_preamble_ref}, "v_$temp_num = VTABLE_get_pointer(interp, t_$temp_num);";
-        push @{$extra_postamble_ref}, "VTABLE_set_pointer(interp, t_$temp_num, v_$temp_num);";
-        return "&v_$temp_num";
-    };
-    /[234]/ && do {
-        my $ret_type = $sig_table{$_}{return_type};
-        push @{$temps_ref},          "PMC *t_$temp_num;";
-        push @{$temps_ref},          "$ret_type i_$temp_num;";
-        push @{$fill_params_ref},    "&t_$temp_num";
-        push @{$extra_preamble_ref}, "i_$temp_num = ($ret_type) VTABLE_get_integer(interp, t_$temp_num);";
-        push @{$extra_postamble_ref}, "VTABLE_set_integer_native(interp, t_$temp_num, i_$temp_num);";
-        return "&i_$temp_num";
-    };
-    /t/ && do {
-        push @{$temps_ref},          "char *t_$temp_num;";
-        push @{$temps_ref},          "STRING *ts_$temp_num;";
-        push @{$fill_params_ref},    "&ts_$temp_num";
-        push @{$extra_preamble_ref},
-            "t_$temp_num = ts_$temp_num ? Parrot_str_to_cstring(interp, ts_$temp_num) : (char *) NULL;";
-        push @{$extra_postamble_ref}, "do { if (t_$temp_num) Parrot_str_free_cstring(t_$temp_num); } while (0);";
-        return "t_$temp_num";
-    };
-    /b/ && do {
-        push @{$temps_ref},          "STRING *t_$temp_num;";
-        push @{$fill_params_ref},    "&t_$temp_num";
-        return "Buffer_bufstart(t_$temp_num)";
-    };
-    /B/ && do {
-        push @{$temps_ref},           "char *t_$temp_num;";
-        push @{$temps_ref},           "char** v_$temp_num = &t_$temp_num;";
-        push @{$temps_ref},           "STRING *ts_$temp_num;";
-        push @{$fill_params_ref},     "&ts_$temp_num";
-        push @{$extra_preamble_ref},
-            "t_$temp_num = ts_$temp_num ? Parrot_str_to_cstring(interp, ts_$temp_num) : (char *) NULL;";
-        push @{$extra_postamble_ref}, "do { if (t_$temp_num) Parrot_str_free_cstring(t_$temp_num); } while (0);";
-        return "v_$temp_num";
-    };
-    /J/ && do {
-        return "interp";
-    };
-    return;
-}
-
-sub create_function {
-    my (
-        $sig,                 $return,          $params,          $args,
-        $ret_type,            $ret_type_decl,   $return_assign,   $final_dest,
-        $final_assign,        $temps_ref,       $fill_params_ref, $extra_preamble_ref,
-        $extra_postamble_ref, $put_pointer_ref,
-    ) = @_;
-
-    my $func = '';
-
-    $final_dest ||= "";
-
-    my $other_decl .= join( "\n    ", $final_dest, @{$temps_ref} );
-    my $call_object_decl = <<"CALLOBJECT";
-    PMC *ctx         = CURRENT_CONTEXT(interp);
-    PMC *call_object = Parrot_pcc_get_signature(interp, ctx);
-CALLOBJECT
-    my $extra_preamble   = join( "\n    ", @{$extra_preamble_ref} );
-    my $extra_postamble  = join( "\n    ", @{$extra_postamble_ref} );
-    my $return_data_decl =
-        "$return_assign $final_assign" =~ /return_data/
-        ? qq{$ret_type_decl return_data;}
-        : q{};
-    my $fix_params = join '', map { $sig_table{$_}{cname} || $_ } split m//, $params;
-
-    if ( length $params ) {
-        my $proto = join ', ', map { $sig_table{$_}{as_proto} } split( m//, $params );
-
-        my $call_params = join( ",", @$args );
-        my $fill_params = join( ", ", @$fill_params_ref );
-        $fill_params = ", " . $fill_params if($fill_params);
-
-        $func = <<"HEADER";
-static void
-pcf_${return}_$fix_params(PARROT_INTERP, PMC *self)
-{
-    typedef $ret_type (*func_t)($proto);
-    func_t pointer;
-    void *orig_func;
-    $call_object_decl
-    $return_data_decl
-    $other_decl
-    Parrot_pcc_fill_params_from_c_args(interp, call_object, \"$sig\"$fill_params);
-    $extra_preamble
-
-    GETATTR_NCI_orig_func(interp, self, orig_func);
-    pointer = (func_t)D2FPTR(orig_func);
-    $return_assign ($ret_type)(*pointer)($call_params);
-    $final_assign
-    $extra_postamble
-}
-HEADER
-    }
-    else {
-
-        # Things are more simple, when there are no params
-        $func       = <<"HEADER";
-static void
-pcf_${return}_(PARROT_INTERP, PMC *self)
-{
-    $ret_type (*pointer)(void);
-    void *orig_func;
-    $return_data_decl
-    $other_decl
-    $call_object_decl
-    $extra_preamble
-
-    GETATTR_NCI_orig_func(interp, self, orig_func);
-    pointer = ($ret_type (*)(void))D2FPTR(orig_func);
-    $return_assign ($ret_type)(*pointer)();
-    $final_assign
-    $extra_postamble
-}
-HEADER
-    }
-
-    my ( $key, $value ) = (
-        defined $params
-        ? ( "$return$params", "pcf_${return}_$fix_params" )
-        : ( "$return", "pcf_${return}" )
-    );
-
-    push @{$put_pointer_ref}, <<"PUT_POINTER";
-        temp_pmc = pmc_new(interp, enum_class_UnManagedStruct);
-        VTABLE_set_pointer(interp, temp_pmc, (void *)$value);
-        VTABLE_set_pmc_keyed_str(interp, HashPointer, CONST_STRING(interp, "$key"), temp_pmc);
-PUT_POINTER
-
-    #        qq|        parrot_hash_put( interp, known_frames, const_cast("$key"), $value );|;
-
-    return $func;
-}
-
-sub print_tail {
-    my ($put_pointer_ref, $put_pointer_nci_ref) = @_;
-
-    my $put_pointer     = join( "\n", @{$put_pointer_ref} );
-    my $put_pointer_nci = join( "\n", @{$put_pointer_nci_ref} );
-    print $NCI <<"TAIL";
-
-
-/* This function serves a single purpose. It takes the function
-   signature for a C function we want to call and returns a pointer
-   to a function that can call it. */
-void *
-build_call_func(PARROT_INTERP,
-#if defined(CAN_BUILD_CALL_FRAMES)
-PMC *pmc_nci, NOTNULL(STRING *signature), NOTNULL(int *jitted))
-#else
-SHIM(PMC *pmc_nci), NOTNULL(STRING *signature), SHIM(int *jitted))
-#endif
-{
-    char       *c;
-    STRING     *ns, *message;
-    PMC        *b;
-    PMC        *iglobals;
-    PMC        *temp_pmc;
-
-    PMC        *HashPointer   = NULL;
-
-    /* And in here is the platform-independent way. Which is to say
-       "here there be hacks" */
-
-    /* fixup empty signatures */
-    if (STRING_IS_EMPTY(signature))
-        signature = CONST_STRING(interp, "v");
-
-    iglobals = interp->iglobals;
-
-    if (PMC_IS_NULL(iglobals))
-        PANIC(interp, "iglobals isn't created yet");
-    HashPointer = VTABLE_get_pmc_keyed_int(interp, iglobals,
-            IGLOBALS_NCI_FUNCS);
-
-    if (!HashPointer) {
-        HashPointer = pmc_new(interp, enum_class_Hash);
-        VTABLE_set_pmc_keyed_int(interp, iglobals, IGLOBALS_NCI_FUNCS,
-                HashPointer);
-    }
-
-#if defined(CAN_BUILD_CALL_FRAMES)
-    /* Try if JIT code can build that signature. If yes, we are done */
-    b            = VTABLE_get_pmc_keyed_str(interp, HashPointer, signature);
-
-    PARROT_ASSERT(PMC_IS_NULL(b) || b->vtable);
-
-    if ((!PMC_IS_NULL(b)) && b->vtable->base_type == enum_class_ManagedStruct) {
-        *jitted = 1;
-        return F2DPTR(VTABLE_get_pointer(interp, b));
-    }
-    else {
-        int jit_size;
-        void * const result = Parrot_jit_build_call_func(interp, pmc_nci, signature, &jit_size);
-        if (result) {
-            struct jit_buffer_private_data *priv;
-            *jitted = 1;
-            temp_pmc = pmc_new(interp, enum_class_ManagedStruct);
-            VTABLE_set_pointer(interp, temp_pmc, (void *)result);
-#ifdef PARROT_HAS_EXEC_PROTECT
-            priv = (struct jit_buffer_private_data *)
-                mem_sys_allocate(sizeof(struct jit_buffer_private_data));
-            priv->size = jit_size;
-            SETATTR_ManagedStruct_custom_free_func(interp, temp_pmc, Parrot_jit_free_buffer);
-            SETATTR_ManagedStruct_custom_free_priv(interp, temp_pmc, priv);
-            SETATTR_ManagedStruct_custom_clone_func(interp, temp_pmc, Parrot_jit_clone_buffer);
-            SETATTR_ManagedStruct_custom_clone_priv(interp, temp_pmc, priv);
-#endif /* PARROT_HAS_EXEC_PROTECT */
-            VTABLE_set_pmc_keyed_str(interp, HashPointer, signature, temp_pmc);
-            return result;
-        }
-    }
-
-#endif
-
-    b = VTABLE_get_pmc_keyed_str(interp, HashPointer, signature);
-
-    if (PMC_IS_NULL(b)) {
-$put_pointer_nci
-#ifndef CAN_BUILD_CALL_FRAMES
-$put_pointer
-#endif
-
-        b = VTABLE_get_pmc_keyed_str(interp, HashPointer, signature);
-    }
-
-    PARROT_ASSERT(PMC_IS_NULL(b) || b->vtable);
-
-    if ((!PMC_IS_NULL(b)) && b->vtable->base_type == enum_class_UnManagedStruct)
-        return F2DPTR(VTABLE_get_pointer(interp, b));
-
-    /*
-      These three lines have been added to aid debugging. I want to be able to
-      see which signature has an unknown type. I am sure someone can come up
-      with a neater way to do this.
-     */
-    ns = string_make(interp, " is an unknown signature type", 29, "ascii", 0);
-    message = Parrot_str_concat(interp, signature, ns, 0);
-
-#if defined(CAN_BUILD_CALL_FRAMES)
-    ns = string_make(interp, ".\\nCAN_BUILD_CALL_FRAMES is enabled, this should not happen", 58, "ascii", 0);
-#else
-    ns = string_make(interp, ".\\nCAN_BUILD_CALL_FRAMES is disabled, add the signature to src/call_list.txt", 75, "ascii", 0);
-#endif
-    message = Parrot_str_concat(interp, message, ns, 0);
-
-    /*
-     * I think there may be memory issues with this but if we get to here we are
-     * aborting.
-     */
-    c = Parrot_str_to_cstring(interp, message);
-    PANIC(interp, c);
-}
-
-TAIL
-    return;
-}
-
-=begin example
-
-This is the template thing
-
-static void pcf_$funcname(PARROT_INTERP, PMC *self) {
-    $ret_type (*pointer)();
-    $ret_type return_data;
-
-    return_data = ($ret_type)(*pointer)($params);
-    $ret_reg  = return_data;
-    REG_INT(interp, 0) = $stack_returns;
-    REG_INT(interp, 1) = $int_returns;
-    REG_INT(interp, 2) = $string_returns;
-    REG_INT(interp, 3) = $pmc_returns;
-    REG_INT(interp, 4) = $num_returns;
-    return;
-}
-
-=cut
-
-# Local Variables:
-#   mode: cperl
-#   cperl-indent-level: 4
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:

Copied: branches/tt362/tools/dev/mk_nci_thunks.pl (from r44202, trunk/tools/dev/mk_nci_thunks.pl)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/tt362/tools/dev/mk_nci_thunks.pl	Fri Feb 19 22:23:20 2010	(r44203, copy of r44202, trunk/tools/dev/mk_nci_thunks.pl)
@@ -0,0 +1,41 @@
+#! perl
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+tools/dev/mk_nci_thunks.pl - (re)generate core NCI thunk files
+
+=head1 SYNOPSIS
+
+  > perl tools/dev/mk_nci_thunks.pl
+
+=head1 DESCRIPTION
+
+This script generates the core NCI thunk C files from lists of signatures
+provided in accompanying C<.nci> files.
+
+=cut
+
+use strict;
+use warnings;
+
+foreach (qw( core_thunks extra_thunks )) {
+    my $c_file   = "src/nci/$_.c";
+    my $nci_file = "src/nci/$_.nci";
+    my $loader_name = "Parrot_nci_load_$_";
+    print "$nci_file > $c_file\n";
+    system("./parrot tools/build/nativecall.pir " .
+            "--core " .
+            "--loader-name=$loader_name " .
+            "--output=$c_file " .
+            "<$nci_file "
+    );
+}
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Modified: branches/tt362/tools/util/release.json
==============================================================================
--- branches/tt362/tools/util/release.json	Fri Feb 19 21:29:53 2010	(r44202)
+++ branches/tt362/tools/util/release.json	Fri Feb 19 22:23:20 2010	(r44203)
@@ -2,8 +2,8 @@
     "release.version"  : "2.0.0",
     "release.name"     : "Inevitable",
     "release.day"      : "Tuesday",
-    "release.date"     : "19 January 2010",
-    "release.nextdate" : "16 Februuary 2010",
+    "release.date"     : "16 Februuary 2010",
+    "release.nextdate" : "16 March 2010",
 
     "web.root"         : "http://parrot.org/",
     "web.source"       : "download",
@@ -11,13 +11,13 @@
     "web.repository"   : "https://svn.parrot.org/parrot/trunk/",
 
     "bugday.day"       : "Saturday",
-    "bugday.date"      : "14 February 2010",
+    "bugday.date"      : "13 March 2010",
 
     "wiki.root"        : "https://trac.parrot.org/parrot/wiki/",
-    "wiki.bugday"      : "bug_day_2010_02_14",
+    "wiki.bugday"      : "bug_day_2010_03_13",
 
     "cpan.search"      : "http://search.cpan.org/dist/parrot",
-    "ftp.path"         : "ftp://ftp.parrot.org/pub/parrot/releases/stable/2.0.0/",
+    "ftp.path"         : "ftp://ftp.parrot.org/pub/parrot/devel/stable/2.1.0/",
     "subversion.root"  : "http://subversion.tigris.org/",
     "svk.root"         : "http://svk.bestpractical.com/"
 }


More information about the parrot-commits mailing list