[svn:parrot] r47770 - in branches/gsoc_past_optimization: . compilers/data_json compilers/imcc compilers/opsc/src/Ops compilers/opsc/src/Ops/Trans compilers/pct compilers/pct/src/PAST compilers/pge compilers/pirc/src compilers/tge config/auto/sizes config/auto/zlib config/gen config/gen/makefiles docs docs/book/draft docs/book/pct docs/book/pir docs/dev docs/pdds docs/pdds/draft docs/project editor examples/embed examples/io examples/languages/abc examples/languages/squaak examples/pge examples/pir ext/Parrot-Embed/lib/Parrot ext/nqp-rx ext/nqp-rx/src/stage0 include/parrot include/parrot/oplib lib/Parrot lib/Parrot/Configure/Step lib/Parrot/Docs/Section lib/Parrot/Harness lib/Parrot/Pmc2c ports/cygwin ports/debian ports/fedora/2.3.0 ports/fedora/2.5.0 ports/suse/2.2.0 runtime/parrot/languages runtime/parrot/library runtime/parrot/library/LWP runtime/parrot/library/Math runtime/parrot/library/URI src src/call src/dynpmc src/gc src/interp src/io src/nci src/ops src/pmc src/runcore t/compilers/imcc/syn t/compilers/tge t/dynoplibs t/examples t/library t/native_pbc t/oo t/op t/pir t/pmc t/src t/steps/auto t/steps/gen t/steps/init/hints t/tools tools/build tools/dev tools/util

tcurtis at svn.parrot.org tcurtis at svn.parrot.org
Wed Jun 23 00:34:22 UTC 2010


Author: tcurtis
Date: Wed Jun 23 00:34:17 2010
New Revision: 47770
URL: https://trac.parrot.org/parrot/changeset/47770

Log:
Sync with trunk and regen manifest.

Added:
   branches/gsoc_past_optimization/include/parrot/namespace.h
      - copied unchanged from r47769, trunk/include/parrot/namespace.h
   branches/gsoc_past_optimization/ports/fedora/2.5.0/
      - copied from r47769, trunk/ports/fedora/2.5.0/
   branches/gsoc_past_optimization/runtime/parrot/library/URI/   (props changed)
      - copied from r47769, trunk/runtime/parrot/library/URI/
   branches/gsoc_past_optimization/src/namespace.c
      - copied unchanged from r47769, trunk/src/namespace.c
   branches/gsoc_past_optimization/src/pmc/bytebuffer.pmc
      - copied unchanged from r47769, trunk/src/pmc/bytebuffer.pmc
   branches/gsoc_past_optimization/t/dynoplibs/io-old.t
      - copied unchanged from r47769, trunk/t/dynoplibs/io-old.t
   branches/gsoc_past_optimization/t/library/uri_escape.t
      - copied unchanged from r47769, trunk/t/library/uri_escape.t
   branches/gsoc_past_optimization/t/oo/objects.t
      - copied unchanged from r47769, trunk/t/oo/objects.t
   branches/gsoc_past_optimization/t/pir/timer_exit.t
      - copied unchanged from r47769, trunk/t/pir/timer_exit.t
   branches/gsoc_past_optimization/t/pmc/bytebuffer.t
      - copied unchanged from r47769, trunk/t/pmc/bytebuffer.t
   branches/gsoc_past_optimization/t/tools/parrot_config.t
      - copied unchanged from r47769, trunk/t/tools/parrot_config.t
Replaced:
   branches/gsoc_past_optimization/ports/fedora/2.5.0/parrot.desk.in.tar.gz
      - copied unchanged from r47769, trunk/ports/fedora/2.5.0/parrot.desk.in.tar.gz
   branches/gsoc_past_optimization/ports/fedora/2.5.0/parrot.patch
      - copied unchanged from r47769, trunk/ports/fedora/2.5.0/parrot.patch
   branches/gsoc_past_optimization/ports/fedora/2.5.0/parrot.spec
      - copied unchanged from r47769, trunk/ports/fedora/2.5.0/parrot.spec
   branches/gsoc_past_optimization/runtime/parrot/library/URI/Escape.pir
      - copied unchanged from r47769, trunk/runtime/parrot/library/URI/Escape.pir
Deleted:
   branches/gsoc_past_optimization/include/parrot/global.h
   branches/gsoc_past_optimization/src/global.c
   branches/gsoc_past_optimization/t/pmc/objects.t
Modified:
   branches/gsoc_past_optimization/   (props changed)
   branches/gsoc_past_optimization/.gitignore
   branches/gsoc_past_optimization/CREDITS
   branches/gsoc_past_optimization/ChangeLog
   branches/gsoc_past_optimization/DEPRECATED.pod
   branches/gsoc_past_optimization/MANIFEST
   branches/gsoc_past_optimization/MANIFEST.SKIP
   branches/gsoc_past_optimization/MANIFEST.generated
   branches/gsoc_past_optimization/NEWS
   branches/gsoc_past_optimization/PBC_COMPAT
   branches/gsoc_past_optimization/README
   branches/gsoc_past_optimization/VERSION
   branches/gsoc_past_optimization/compilers/data_json/Rules.mak   (props changed)
   branches/gsoc_past_optimization/compilers/imcc/Rules.in   (props changed)
   branches/gsoc_past_optimization/compilers/imcc/pbc.c
   branches/gsoc_past_optimization/compilers/opsc/src/Ops/Op.pm
   branches/gsoc_past_optimization/compilers/opsc/src/Ops/Trans/C.pm
   branches/gsoc_past_optimization/compilers/pct/Rules.mak   (props changed)
   branches/gsoc_past_optimization/compilers/pct/src/PAST/Compiler.pir
   branches/gsoc_past_optimization/compilers/pge/Rules.mak   (props changed)
   branches/gsoc_past_optimization/compilers/pirc/src/bcgen.c
   branches/gsoc_past_optimization/compilers/tge/Rules.mak   (props changed)
   branches/gsoc_past_optimization/config/auto/sizes/intval_maxmin_c.in   (props changed)
   branches/gsoc_past_optimization/config/auto/zlib/   (props changed)
   branches/gsoc_past_optimization/config/gen/config_pm.pm
   branches/gsoc_past_optimization/config/gen/makefiles/root.in
   branches/gsoc_past_optimization/config/gen/opengl.pm
   branches/gsoc_past_optimization/docs/book/draft/README   (props changed)
   branches/gsoc_past_optimization/docs/book/draft/appa_glossary.pod   (props changed)
   branches/gsoc_past_optimization/docs/book/draft/appb_patch_submission.pod   (props changed)
   branches/gsoc_past_optimization/docs/book/draft/appc_command_line_options.pod   (props changed)
   branches/gsoc_past_optimization/docs/book/draft/appd_build_options.pod   (props changed)
   branches/gsoc_past_optimization/docs/book/draft/appe_source_code.pod   (props changed)
   branches/gsoc_past_optimization/docs/book/draft/ch01_introduction.pod   (props changed)
   branches/gsoc_past_optimization/docs/book/draft/ch02_getting_started.pod   (props changed)
   branches/gsoc_past_optimization/docs/book/draft/ch07_dynpmcs.pod   (props changed)
   branches/gsoc_past_optimization/docs/book/draft/ch08_dynops.pod   (props changed)
   branches/gsoc_past_optimization/docs/book/draft/ch10_opcode_reference.pod   (props changed)
   branches/gsoc_past_optimization/docs/book/draft/ch11_directive_reference.pod   (props changed)
   branches/gsoc_past_optimization/docs/book/draft/ch12_operator_reference.pod   (props changed)
   branches/gsoc_past_optimization/docs/book/draft/chXX_hlls.pod   (props changed)
   branches/gsoc_past_optimization/docs/book/draft/chXX_library.pod   (props changed)
   branches/gsoc_past_optimization/docs/book/draft/chXX_testing_and_debugging.pod   (props changed)
   branches/gsoc_past_optimization/docs/book/pct/ch01_introduction.pod   (props changed)
   branches/gsoc_past_optimization/docs/book/pct/ch02_getting_started.pod   (props changed)
   branches/gsoc_past_optimization/docs/book/pct/ch03_compiler_tools.pod   (props changed)
   branches/gsoc_past_optimization/docs/book/pct/ch04_pge.pod   (props changed)
   branches/gsoc_past_optimization/docs/book/pct/ch05_nqp.pod   (props changed)
   branches/gsoc_past_optimization/docs/book/pir/ch07_objects.pod
   branches/gsoc_past_optimization/docs/dev/c_functions.pod   (props changed)
   branches/gsoc_past_optimization/docs/embed.pod
   branches/gsoc_past_optimization/docs/parrothist.pod
   branches/gsoc_past_optimization/docs/pdds/draft/pdd06_pasm.pod
   branches/gsoc_past_optimization/docs/pdds/draft/pdd11_extending.pod
   branches/gsoc_past_optimization/docs/pdds/pdd28_strings.pod
   branches/gsoc_past_optimization/docs/pdds/pdd30_install.pod   (props changed)
   branches/gsoc_past_optimization/docs/project/release_manager_guide.pod
   branches/gsoc_past_optimization/editor/mk_skeleton.pir
   branches/gsoc_past_optimization/examples/embed/cotorra.c   (contents, props changed)
   branches/gsoc_past_optimization/examples/io/http.pir
   branches/gsoc_past_optimization/examples/io/httpd.pir
   branches/gsoc_past_optimization/examples/languages/abc/   (props changed)
   branches/gsoc_past_optimization/examples/languages/squaak/   (props changed)
   branches/gsoc_past_optimization/examples/pge/demo.pir   (props changed)
   branches/gsoc_past_optimization/examples/pir/make_hello_pbc.pir
   branches/gsoc_past_optimization/ext/Parrot-Embed/lib/Parrot/Embed.xs
   branches/gsoc_past_optimization/ext/nqp-rx/Rules.mak   (props changed)
   branches/gsoc_past_optimization/ext/nqp-rx/src/stage0/HLL-s0.pir
   branches/gsoc_past_optimization/ext/nqp-rx/src/stage0/NQP-s0.pir
   branches/gsoc_past_optimization/ext/nqp-rx/src/stage0/P6Regex-s0.pir
   branches/gsoc_past_optimization/ext/nqp-rx/src/stage0/nqp-setting.nqp
   branches/gsoc_past_optimization/include/parrot/call.h   (props changed)
   branches/gsoc_past_optimization/include/parrot/gc_api.h   (props changed)
   branches/gsoc_past_optimization/include/parrot/interpreter.h
   branches/gsoc_past_optimization/include/parrot/key.h
   branches/gsoc_past_optimization/include/parrot/oplib.h
   branches/gsoc_past_optimization/include/parrot/oplib/core_ops.h
   branches/gsoc_past_optimization/include/parrot/packfile.h
   branches/gsoc_past_optimization/include/parrot/parrot.h
   branches/gsoc_past_optimization/include/parrot/runcore_api.h   (props changed)
   branches/gsoc_past_optimization/include/parrot/runcore_profiling.h   (props changed)
   branches/gsoc_past_optimization/include/parrot/runcore_trace.h   (props changed)
   branches/gsoc_past_optimization/include/parrot/warnings.h
   branches/gsoc_past_optimization/lib/Parrot/Configure/Step/Test.pm   (props changed)
   branches/gsoc_past_optimization/lib/Parrot/Docs/Section/Parrot.pm
   branches/gsoc_past_optimization/lib/Parrot/H2inc.pm   (props changed)
   branches/gsoc_past_optimization/lib/Parrot/Harness/DefaultTests.pm
   branches/gsoc_past_optimization/lib/Parrot/Pmc2c/PMCEmitter.pm
   branches/gsoc_past_optimization/ports/cygwin/README
   branches/gsoc_past_optimization/ports/cygwin/parrot-1.0.0-1.cygport   (props changed)
   branches/gsoc_past_optimization/ports/debian/libparrot-dev.install.in   (props changed)
   branches/gsoc_past_optimization/ports/debian/libparrot.install.in   (props changed)
   branches/gsoc_past_optimization/ports/debian/parrot-doc.install.in   (props changed)
   branches/gsoc_past_optimization/ports/debian/parrot.install.in   (props changed)
   branches/gsoc_past_optimization/ports/fedora/2.3.0/   (props changed)
   branches/gsoc_past_optimization/ports/suse/2.2.0/   (props changed)
   branches/gsoc_past_optimization/runtime/parrot/languages/   (props changed)
   branches/gsoc_past_optimization/runtime/parrot/library/LWP/UserAgent.pir
   branches/gsoc_past_optimization/runtime/parrot/library/Math/Rand.pir   (props changed)
   branches/gsoc_past_optimization/runtime/parrot/library/Rules.mak   (props changed)
   branches/gsoc_past_optimization/src/call/context.c
   branches/gsoc_past_optimization/src/call/ops.c   (props changed)
   branches/gsoc_past_optimization/src/call/pcc.c   (props changed)
   branches/gsoc_past_optimization/src/dynpmc/Defines.in
   branches/gsoc_past_optimization/src/exceptions.c
   branches/gsoc_past_optimization/src/gc/alloc_memory.c   (props changed)
   branches/gsoc_past_optimization/src/gc/alloc_resources.c   (props changed)
   branches/gsoc_past_optimization/src/gc/api.c   (props changed)
   branches/gsoc_past_optimization/src/gc/gc_private.h
   branches/gsoc_past_optimization/src/gc/malloc.c   (props changed)
   branches/gsoc_past_optimization/src/gc/malloc_trace.c   (props changed)
   branches/gsoc_past_optimization/src/gc/mark_sweep.c   (props changed)
   branches/gsoc_past_optimization/src/gc/system.c   (props changed)
   branches/gsoc_past_optimization/src/hll.c
   branches/gsoc_past_optimization/src/interp/inter_cb.c   (props changed)
   branches/gsoc_past_optimization/src/interp/inter_create.c   (props changed)
   branches/gsoc_past_optimization/src/interp/inter_misc.c   (props changed)
   branches/gsoc_past_optimization/src/io/io_private.h
   branches/gsoc_past_optimization/src/io/socket_unix.c
   branches/gsoc_past_optimization/src/io/socket_win32.c
   branches/gsoc_past_optimization/src/io/win32.c
   branches/gsoc_past_optimization/src/key.c
   branches/gsoc_past_optimization/src/library.c
   branches/gsoc_past_optimization/src/multidispatch.c
   branches/gsoc_past_optimization/src/nci/core_thunks.c
   branches/gsoc_past_optimization/src/nci/extra_thunks.c
   branches/gsoc_past_optimization/src/oo.c
   branches/gsoc_past_optimization/src/ops/core.ops
   branches/gsoc_past_optimization/src/ops/core_ops.c
   branches/gsoc_past_optimization/src/ops/experimental.ops
   branches/gsoc_past_optimization/src/ops/pmc.ops
   branches/gsoc_past_optimization/src/ops/var.ops
   branches/gsoc_past_optimization/src/packfile.c
   branches/gsoc_past_optimization/src/pmc/arrayiterator.pmc
   branches/gsoc_past_optimization/src/pmc/class.pmc
   branches/gsoc_past_optimization/src/pmc/default.pmc
   branches/gsoc_past_optimization/src/pmc/eval.pmc
   branches/gsoc_past_optimization/src/pmc/filehandle.pmc
   branches/gsoc_past_optimization/src/pmc/fixedintegerarray.pmc
   branches/gsoc_past_optimization/src/pmc/hash.pmc
   branches/gsoc_past_optimization/src/pmc/hashiterator.pmc
   branches/gsoc_past_optimization/src/pmc/key.pmc
   branches/gsoc_past_optimization/src/pmc/namespace.pmc
   branches/gsoc_past_optimization/src/pmc/packfilefixupentry.pmc
   branches/gsoc_past_optimization/src/pmc/packfilerawsegment.pmc
   branches/gsoc_past_optimization/src/pmc/parrotinterpreter.pmc
   branches/gsoc_past_optimization/src/pmc/pmcproxy.pmc
   branches/gsoc_past_optimization/src/pmc/resizableintegerarray.pmc
   branches/gsoc_past_optimization/src/pmc/resizablepmcarray.pmc
   branches/gsoc_past_optimization/src/pmc/role.pmc
   branches/gsoc_past_optimization/src/pmc/scheduler.pmc
   branches/gsoc_past_optimization/src/pmc/string.pmc
   branches/gsoc_past_optimization/src/pmc/stringhandle.pmc
   branches/gsoc_past_optimization/src/pmc/stringiterator.pmc
   branches/gsoc_past_optimization/src/pmc/sub.pmc
   branches/gsoc_past_optimization/src/pmc/timer.pmc
   branches/gsoc_past_optimization/src/pmc_freeze.c
   branches/gsoc_past_optimization/src/runcore/cores.c   (props changed)
   branches/gsoc_past_optimization/src/runcore/main.c   (props changed)
   branches/gsoc_past_optimization/src/runcore/profiling.c   (props changed)
   branches/gsoc_past_optimization/src/runcore/trace.c   (props changed)
   branches/gsoc_past_optimization/src/scheduler.c
   branches/gsoc_past_optimization/src/thread.c
   branches/gsoc_past_optimization/src/warnings.c
   branches/gsoc_past_optimization/t/compilers/imcc/syn/regressions.t
   branches/gsoc_past_optimization/t/compilers/tge/NoneGrammar.tg   (props changed)
   branches/gsoc_past_optimization/t/dynoplibs/io.t
   branches/gsoc_past_optimization/t/examples/pir.t
   branches/gsoc_past_optimization/t/native_pbc/annotations.pbc
   branches/gsoc_past_optimization/t/native_pbc/integer.pbc
   branches/gsoc_past_optimization/t/native_pbc/integer_1.pbc
   branches/gsoc_past_optimization/t/native_pbc/number.pbc
   branches/gsoc_past_optimization/t/native_pbc/number_1.pbc
   branches/gsoc_past_optimization/t/native_pbc/string.pbc
   branches/gsoc_past_optimization/t/native_pbc/string_1.pbc
   branches/gsoc_past_optimization/t/oo/root_new.t   (props changed)
   branches/gsoc_past_optimization/t/oo/vtableoverride.t
   branches/gsoc_past_optimization/t/op/annotate-old.t
   branches/gsoc_past_optimization/t/op/calling.t
   branches/gsoc_past_optimization/t/op/sprintf2.t
   branches/gsoc_past_optimization/t/pir/macro.t
   branches/gsoc_past_optimization/t/pmc/arrayiterator.t
   branches/gsoc_past_optimization/t/pmc/eval.t
   branches/gsoc_past_optimization/t/pmc/exception.t
   branches/gsoc_past_optimization/t/pmc/exceptionhandler.t
   branches/gsoc_past_optimization/t/pmc/exporter.t
   branches/gsoc_past_optimization/t/pmc/filehandle.t
   branches/gsoc_past_optimization/t/pmc/fixedintegerarray.t
   branches/gsoc_past_optimization/t/pmc/float.t
   branches/gsoc_past_optimization/t/pmc/handle.t
   branches/gsoc_past_optimization/t/pmc/hash.t
   branches/gsoc_past_optimization/t/pmc/hashiterator.t
   branches/gsoc_past_optimization/t/pmc/io.t
   branches/gsoc_past_optimization/t/pmc/namespace-old.t   (props changed)
   branches/gsoc_past_optimization/t/pmc/orderedhashiterator.t
   branches/gsoc_past_optimization/t/pmc/packfile.t
   branches/gsoc_past_optimization/t/pmc/resizableintegerarray.t
   branches/gsoc_past_optimization/t/pmc/schedulermessage.t
   branches/gsoc_past_optimization/t/pmc/sockaddr.t
   branches/gsoc_past_optimization/t/pmc/stringbuilder.t
   branches/gsoc_past_optimization/t/pmc/stringhandle.t
   branches/gsoc_past_optimization/t/pmc/stringiterator.t
   branches/gsoc_past_optimization/t/src/embed.t   (contents, props changed)
   branches/gsoc_past_optimization/t/src/extend.t
   branches/gsoc_past_optimization/t/steps/auto/warnings-01.t
   branches/gsoc_past_optimization/t/steps/gen/opengl-01.t
   branches/gsoc_past_optimization/t/steps/init/hints/linux-01.t   (props changed)
   branches/gsoc_past_optimization/tools/build/h2inc.pl   (props changed)
   branches/gsoc_past_optimization/tools/dev/fetch_languages.pl   (contents, props changed)
   branches/gsoc_past_optimization/tools/dev/mk_gitignore.pl   (props changed)
   branches/gsoc_past_optimization/tools/dev/mk_inno.pl
   branches/gsoc_past_optimization/tools/dev/mk_manifest_and_skip.pl
   branches/gsoc_past_optimization/tools/dev/nci_thunk_gen.pir
   branches/gsoc_past_optimization/tools/dev/pprof2cg.pl
   branches/gsoc_past_optimization/tools/dev/vgp
   branches/gsoc_past_optimization/tools/util/parrot-config.pir
   branches/gsoc_past_optimization/tools/util/perlcritic-cage.conf   (props changed)
   branches/gsoc_past_optimization/tools/util/release.json

Modified: branches/gsoc_past_optimization/.gitignore
==============================================================================
--- branches/gsoc_past_optimization/.gitignore	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/.gitignore	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1,6 +1,6 @@
 # ex: set ro:
-# $Id
-# generated by tools/dev/mk_manifest_and_skip.pl Mon May 17 15:32:39 2010 UT
+# $Id: MANIFEST.SKIP 47057 2010-05-27 15:39:08Z fperrad 
+# generated by tools/dev/mk_manifest_and_skip.pl Thu May 27 15:25:37 2010 UT
 #
 # This file should contain a transcript of the svn:ignore properties
 # of the directories in the Parrot subversion repository. (Needed for
@@ -47,6 +47,10 @@
 libparrot.dll
 miniparrot
 myconfig
+ops2c
+ops2c.c
+ops2c.pbc
+ops2c.pir
 parrot
 parrot-nqp
 parrot-nqp.c
@@ -102,6 +106,12 @@
 compilers/imcc/imcparser.c
 compilers/imcc/imcparser.h
 compilers/imcc/imcparser.output
+# generated from svn:ignore of 'compilers/opsc/gen/Ops/'
+compilers/opsc/gen/Ops/*.pir
+# generated from svn:ignore of 'compilers/opsc/gen/Ops/Compiler/'
+compilers/opsc/gen/Ops/Compiler/*.pir
+# generated from svn:ignore of 'compilers/opsc/gen/Ops/Trans/'
+compilers/opsc/gen/Ops/Trans/*.pir
 # generated from svn:ignore of 'compilers/pct/src/PAST/'
 compilers/pct/src/PAST/*.pbc
 # generated from svn:ignore of 'compilers/pct/src/PCT/'
@@ -235,6 +245,8 @@
 ext/Parrot-Embed/lib/Parrot/*.obj
 # generated from svn:ignore of 'ext/Parrot-Embed/t/'
 ext/Parrot-Embed/t/*.pbc
+# generated from svn:ignore of 'ext/nqp-rx/src/stage0/'
+ext/nqp-rx/src/stage0/nqp-setting.pir
 # generated from svn:ignore of 'include/parrot/'
 include/parrot/*.tmp
 include/parrot/config.h
@@ -248,11 +260,6 @@
 include/parrot/platform_interface.h
 include/parrot/platform_limits.h
 include/parrot/vtable.h
-# generated from svn:ignore of 'include/parrot/oplib/'
-include/parrot/oplib/*_ops.h
-include/parrot/oplib/*_ops_cg*.h
-include/parrot/oplib/*_ops_switch.h
-include/parrot/oplib/ops.h
 # generated from svn:ignore of 'include/pmc/'
 include/pmc/*.h
 # generated from svn:ignore of 'lib/'
@@ -314,6 +321,8 @@
 runtime/parrot/library/Getopt/Obj.pbc
 # generated from svn:ignore of 'runtime/parrot/library/HTTP/'
 runtime/parrot/library/HTTP/*.pbc
+# generated from svn:ignore of 'runtime/parrot/library/LWP/'
+runtime/parrot/library/LWP/*.pbc
 # generated from svn:ignore of 'runtime/parrot/library/MIME/'
 runtime/parrot/library/MIME/*.pbc
 # generated from svn:ignore of 'runtime/parrot/library/Math/'
@@ -582,6 +591,7 @@
 # generated from svn:ignore of 't/tools/'
 t/tools/*.pbc
 t/tools/*.pir
+t/tools/*.stdout
 t/tools/pdb.t.*
 t/tools/pmc2c.*.c
 t/tools/pmc2c.*.dump

Modified: branches/gsoc_past_optimization/CREDITS
==============================================================================
--- branches/gsoc_past_optimization/CREDITS	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/CREDITS	Wed Jun 23 00:34:17 2010	(r47770)
@@ -248,6 +248,7 @@
 D: Range check in Env PMC
 A: christoph_googleacct at mksig.org
 A: christop... at mksig.org
+A: Christoph Otto
 D: Pipp
 E: christoph at mksig.org
 
@@ -402,7 +403,7 @@
 
 N: Gerd Pokorra
 E: pokorra at uni-siegen.de
-D: Release manager for 1.9.0 and 2.3.0
+D: Release manager for 1.9.0, 2.3.0 and 2.5.0
 
 N: Goplat
 D: Win98 and other fixes.

Modified: branches/gsoc_past_optimization/ChangeLog
==============================================================================
--- branches/gsoc_past_optimization/ChangeLog	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/ChangeLog	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1,8 +1,12 @@
 #1 $Id$
 
+2010.06.15     Gerd
+	* Released 2.5.0
+	See NEWS for more.
+
 2010.05.18     Whiteknight
-        * Released 2.4.0
-        See NEWS for more
+	* Released 2.4.0
+	See NEWS for more
 
 2010.04.20     Gerd
 	* Released 2.3.0
@@ -157,7 +161,7 @@
 	See NEWS for more.
 
 2007.3.10     coke
-        * removed parakeet
+	* removed parakeet
 
 2007.02.22    pmichaud
 	* Released 0.4.9
@@ -223,7 +227,7 @@
 2006.07.20    audreyt
 	* --maintainer prerequesites are now bison 2.2+ and flex 2.5.3x
 	  (or some such --leo)
-          (at the moment code is checking for 2.0 -- ambs)
+	  (at the moment code is checking for 2.0 -- ambs)
 
 2006.07.17    chip
 	partial implementation of new pdd21:
@@ -236,7 +240,7 @@
 	See NEWS for more.
 
 2006.06.03    leo
-        * I and N registers are never cleared to 0 / 0.0 on subroutine entry
+	* I and N registers are never cleared to 0 / 0.0 on subroutine entry
 
 2006.05.14    leo
 	* Released 0.4.4
@@ -250,7 +254,7 @@
 	See NEWS for more.
 
 2006.03.06    leo
-        * Shifted argument type bits left by 2 according to r11754
+	* Shifted argument type bits left by 2 according to r11754
 	  change of docs/pdds/pdd03_calling_conventions.pod
 	* if you are creating PASM then code needs adjustment
 
@@ -353,7 +357,7 @@
 	* the usual bug fixes and improvements
 
 2005-03-06    leo
-        * Released 0.1.2
+	* Released 0.1.2
 	* big rewrite of string code, not yet finished but ...
 	* partial implementation of a generational garbage collector
 	* indirect register frame addressing
@@ -368,7 +372,7 @@
 	* and as always a lot more
 
 2004-10-09    leo
-        * Released 0.1.1
+	* Released 0.1.1
 	* Need Perl 5.6 now for building
 	* Basic AST support, PAST file parser, bits of code generation
 	* BigInt PMC using GMP
@@ -398,39 +402,39 @@
 	* ... and a lot more
 
 2004-02-29    leo
-        * Released 0.1.0
-        * "Ladies and gentlemen, I give you... objects!"
-        * Huge documentation overhaul
-        * More supported platforms, s. PLATFORMS
-        * Basic thread support for pthread based architectures
-        * Basic event handling for timers and signals including:
-        * PASM callbacks for NCI (native C) functions.
-        * Improved platform configuration
-        * COW stacks now working, stacks code redone
-        * Structure handling vastly improved
-        * Random PMC and rand primitives
-        * Better subroutine call syntax in PIR
-        * Make PIR subroutines compliant with pdd03
-        * Improved profiling (DOD, GC timings)
-        * Hash code improvements, incl. random key order support
-        * Experimental freeze/thaw code for some PMC types
-        * IO improvements for buffered layer and Win32
-        * String iterators
-        * String bitwise vtables
-        * Many new opcodes
-        * Support for JIT, where malloced memory isn't executable
-        * Priority DOD scheme for objects that need timely destruction
-        * Improved bytecode loading (e.g. onLoad functions)
-        * Language updates: forth, Perl6/P6C, m4
-        * Libraries: Getopt_Long, SDL, Dumper, Sort
-        * new JAPH examples
-        * Unified imcc and parrot test handling
-        * Many new tests (make test reports 1386 tests)
-        * Numerous bug fixes
+	* Released 0.1.0
+	* "Ladies and gentlemen, I give you... objects!"
+	* Huge documentation overhaul
+	* More supported platforms, s. PLATFORMS
+	* Basic thread support for pthread based architectures
+	* Basic event handling for timers and signals including:
+	* PASM callbacks for NCI (native C) functions.
+	* Improved platform configuration
+	* COW stacks now working, stacks code redone
+	* Structure handling vastly improved
+	* Random PMC and rand primitives
+	* Better subroutine call syntax in PIR
+	* Make PIR subroutines compliant with pdd03
+	* Improved profiling (DOD, GC timings)
+	* Hash code improvements, incl. random key order support
+	* Experimental freeze/thaw code for some PMC types
+	* IO improvements for buffered layer and Win32
+	* String iterators
+	* String bitwise vtables
+	* Many new opcodes
+	* Support for JIT, where malloced memory isn't executable
+	* Priority DOD scheme for objects that need timely destruction
+	* Improved bytecode loading (e.g. onLoad functions)
+	* Language updates: forth, Perl6/P6C, m4
+	* Libraries: Getopt_Long, SDL, Dumper, Sort
+	* new JAPH examples
+	* Unified imcc and parrot test handling
+	* Many new tests (make test reports 1386 tests)
+	* Numerous bug fixes
 
 
 2003-10-31    leo
-        * Released 0.0.13
+	* Released 0.0.13
 	* Yep thirteen - haunted by the ghost of 0.0.12
 	* Build imcc as parrot
 	* Objects more finished
@@ -453,7 +457,7 @@
 	* Many new tests and fixes
 
 2003-10-22    melvin
-        * imcc moved from parrot/languages/ to parrot/
+	* imcc moved from parrot/languages/ to parrot/
 
 2003-09-20    sfink
 
@@ -493,7 +497,7 @@
 
 2003-06-14 13:50 dan
 	* Moved the registers out of the context structure, since they
-          really aren't context
+	  really aren't context
 	* Changed the register stack frames to hold only 16 registers
 	  rather than 32, added half-set push and pop ops, and reworked
 	  the full set push/pops to do two half-set push/pops. Should
@@ -506,7 +510,7 @@
 
 	* Various files
 	  Update Yet Another copyright statements to reflect the (no longer
-          so) shiny new year.
+	  so) shiny new year.
 
 2003-03-11 22:06  chip
 

Modified: branches/gsoc_past_optimization/DEPRECATED.pod
==============================================================================
--- branches/gsoc_past_optimization/DEPRECATED.pod	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/DEPRECATED.pod	Wed Jun 23 00:34:17 2010	(r47770)
@@ -156,15 +156,6 @@
 for Sub, Exception, and related PMC types will instead be handled by
 get_label and set_label.
 
-=item All bitwise ops [eligible in 2.1]
-
-All bitwise ops (all ops containing C<bitwise> in their names) will be provided
-by dynops.  B<NOTE>: Before removing the bitwise ops, make sure that the
-equivalent dynops are available and that the major HLLs (Rakudo, Partcl, Lua,
-etc) have switched to using them.
-
-L<https://trac.parrot.org/parrot/ticket/1260>
-
 =item get_results opcode order and features [eligible in 2.1]
 
 get_results no longer used to fetch exception object.
@@ -319,6 +310,12 @@
 
 L<https://trac.parrot.org/parrot/ticket/443>
 
+=item C<Parrot_find_global_s> and C<Parrot_store_global_s>
+
+This function is not used or tested anywhere.
+
+http://trac.parrot.org/parrot/ticket/1660
+
 =item PMC Attributes Allocation Functions [experimental]
 
  Parrot_gc_allocate_pmc_attributes
@@ -348,6 +345,12 @@
 
 L<https://trac.parrot.org/parrot/ticket/1628>
 
+=item Parrot_get_runtime_prefix [eligible in 2.7]
+
+Use Parrot_get_runtime_path instead.
+
+L<https://trac.parrot.org/parrot/ticket/1191>
+
 =back
 
 =head1 Compiler tools

Modified: branches/gsoc_past_optimization/MANIFEST
==============================================================================
--- branches/gsoc_past_optimization/MANIFEST	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/MANIFEST	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1,7 +1,7 @@
 # ex: set ro:
 # $Id$
 #
-# generated by tools/dev/mk_manifest_and_skip.pl Sat Jun 19 02:30:23 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Wed Jun 23 00:09:53 2010 UT
 #
 # See below for documentation on the format of this file.
 #
@@ -968,7 +968,6 @@
 include/parrot/exit.h                                       [main]include
 include/parrot/extend.h                                     [main]include
 include/parrot/gc_api.h                                     [main]include
-include/parrot/global.h                                     [main]include
 include/parrot/global_setup.h                               [main]include
 include/parrot/hash.h                                       [main]include
 include/parrot/hll.h                                        [main]include
@@ -984,6 +983,7 @@
 include/parrot/memory.h                                     [main]include
 include/parrot/misc.h                                       [main]include
 include/parrot/multidispatch.h                              [main]include
+include/parrot/namespace.h                                  [main]include
 include/parrot/nci.h                                        [main]include
 include/parrot/oo.h                                         [main]include
 include/parrot/oo_private.h                                 [main]include
@@ -1240,6 +1240,7 @@
 runtime/parrot/library/Test/Class.pir                       [library]
 runtime/parrot/library/Test/More.pir                        [library]
 runtime/parrot/library/URI.pir                              [library]
+runtime/parrot/library/URI/Escape.pir                       [library]
 runtime/parrot/library/YAML/Dumper.pir                      [library]
 runtime/parrot/library/YAML/Dumper/Base.pir                 [library]
 runtime/parrot/library/YAML/Dumper/Default.pir              [library]
@@ -1312,7 +1313,6 @@
 src/gc/malloc_trace.c                                       []
 src/gc/mark_sweep.c                                         []
 src/gc/system.c                                             []
-src/global.c                                                []
 src/global_setup.c                                          []
 src/hash.c                                                  []
 src/hll.c                                                   []
@@ -1338,6 +1338,7 @@
 src/main.c                                                  []
 src/misc.c                                                  []
 src/multidispatch.c                                         []
+src/namespace.c                                             []
 src/nci/api.c                                               []
 src/nci/core_thunks.c                                       []
 src/nci/core_thunks.nci                                     []
@@ -1373,6 +1374,7 @@
 src/pmc/bigint.pmc                                          []
 src/pmc/bignum.pmc                                          []
 src/pmc/boolean.pmc                                         []
+src/pmc/bytebuffer.pmc                                      []
 src/pmc/callcontext.pmc                                     []
 src/pmc/capture.pmc                                         []
 src/pmc/class.pmc                                           []
@@ -1675,6 +1677,7 @@
 t/dynoplibs/bit.t                                           [test]
 t/dynoplibs/debug.t                                         [test]
 t/dynoplibs/deprecated.t                                    [test]
+t/dynoplibs/io-old.t                                        [test]
 t/dynoplibs/io.t                                            [test]
 t/dynoplibs/math.t                                          [test]
 t/dynoplibs/obscure.t                                       [test]
@@ -1749,6 +1752,7 @@
 t/library/test_class.t                                      [test]
 t/library/test_more.t                                       [test]
 t/library/uri.t                                             [test]
+t/library/uri_escape.t                                      [test]
 t/library/uuid.t                                            [test]
 t/library/yaml_dumper.t                                     [test]
 t/manifest/01-basic.t                                       [test]
@@ -1799,6 +1803,7 @@
 t/oo/names.t                                                [test]
 t/oo/new-old.t                                              [test]
 t/oo/new.t                                                  [test]
+t/oo/objects.t                                              [test]
 t/oo/ops.t                                                  [test]
 t/oo/proxy.t                                                [test]
 t/oo/root_new.t                                             [test]
@@ -1865,11 +1870,13 @@
 t/pharness/04-Usage.t                                       [test]
 t/pir/macro.t                                               [test]
 t/pir/registernames.t                                       [test]
+t/pir/timer_exit.t                                          [test]
 t/pmc/addrregistry.t                                        [test]
 t/pmc/arrayiterator.t                                       [test]
 t/pmc/bigint.t                                              [test]
 t/pmc/bignum.t                                              [test]
 t/pmc/boolean.t                                             [test]
+t/pmc/bytebuffer.t                                          [test]
 t/pmc/callcontext.t                                         [test]
 t/pmc/capture.t                                             [test]
 t/pmc/class.t                                               [test]
@@ -1922,7 +1929,6 @@
 t/pmc/object-meths.t                                        [test]
 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]
@@ -2091,6 +2097,7 @@
 t/tools/install/testlib/src/pmc/pmc_object.h                [test]
 t/tools/install/testlib/tools/build/ops2c.pl                [test]
 t/tools/install/testlib/vtable.dump                         [test]
+t/tools/parrot_config.t                                     [test]
 t/tools/parrot_debugger.t                                   [test]
 t/tools/pbc_disassemble.t                                   [test]
 t/tools/pbc_dump.t                                          [test]

Modified: branches/gsoc_past_optimization/MANIFEST.SKIP
==============================================================================
--- branches/gsoc_past_optimization/MANIFEST.SKIP	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/MANIFEST.SKIP	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1,6 +1,6 @@
 # ex: set ro:
 # $Id$
-# generated by tools/dev/mk_manifest_and_skip.pl Wed Jun  9 18:58:33 2010 UT
+# generated by tools/dev/mk_manifest_and_skip.pl Wed Jun 23 00:09:53 2010 UT
 #
 # This file should contain a transcript of the svn:ignore properties
 # of the directories in the Parrot subversion repository. (Needed for
@@ -598,6 +598,8 @@
 # generated from svn:ignore of 'runtime/parrot/library/PAST/Pattern/'
 ^runtime/parrot/library/PAST/Pattern/.*\.pbc$
 ^runtime/parrot/library/PAST/Pattern/.*\.pbc/
+^runtime/parrot/library/PAST/Pattern/Any\.pir$
+^runtime/parrot/library/PAST/Pattern/Any\.pir/
 ^runtime/parrot/library/PAST/Pattern/Closure\.pir$
 ^runtime/parrot/library/PAST/Pattern/Closure\.pir/
 ^runtime/parrot/library/PAST/Pattern/Constant\.pir$
@@ -646,6 +648,9 @@
 # generated from svn:ignore of 'runtime/parrot/library/Test/Builder/'
 ^runtime/parrot/library/Test/Builder/.*\.pbc$
 ^runtime/parrot/library/Test/Builder/.*\.pbc/
+# generated from svn:ignore of 'runtime/parrot/library/URI/'
+^runtime/parrot/library/URI/.*\.pbc$
+^runtime/parrot/library/URI/.*\.pbc/
 # generated from svn:ignore of 'runtime/parrot/library/YAML/'
 ^runtime/parrot/library/YAML/.*\.pbc$
 ^runtime/parrot/library/YAML/.*\.pbc/

Modified: branches/gsoc_past_optimization/MANIFEST.generated
==============================================================================
--- branches/gsoc_past_optimization/MANIFEST.generated	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/MANIFEST.generated	Wed Jun 23 00:34:17 2010	(r47770)
@@ -2,11 +2,11 @@
 # 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.4.0.dylib                   [main]lib
+blib/lib/libparrot.2.5.0.dylib                   [main]lib
 blib/lib/libparrot.a                             [main]lib
 blib/lib/libparrot.dylib                         [main]lib
 blib/lib/libparrot.so                            [main]lib
-blib/lib/libparrot.so.2.4.0                      [main]lib
+blib/lib/libparrot.so.2.5.0                      [main]lib
 compilers/data_json/data_json.pbc                [data_json]
 config/gen/call_list/opengl.in                   []
 docs/ops/bit.pod                                 [doc]
@@ -42,6 +42,7 @@
 include/pmc/pmc_bigint.h                         [devel]include
 include/pmc/pmc_bignum.h                         [devel]include
 include/pmc/pmc_boolean.h                        [devel]include
+include/pmc/pmc_bytebuffer.h                     [devel]include
 include/pmc/pmc_callcontext.h                    [devel]include
 include/pmc/pmc_capture.h                        [devel]include
 include/pmc/pmc_class.h                          [devel]include
@@ -305,7 +306,7 @@
 runtime/parrot/library/TAP/Formatter.pbc         [main]
 runtime/parrot/library/TAP/Harness.pbc           [main]
 runtime/parrot/library/TAP/Parser.pbc            [main]
-runtime/parrot/library/TGE.pbc			 [main]
+runtime/parrot/library/TGE.pbc                   [main]
 runtime/parrot/library/Tcl/Glob.pbc              [main]
 runtime/parrot/library/TclLibrary.pbc            [main]
 runtime/parrot/library/Test/Builder.pbc          [main]
@@ -346,6 +347,7 @@
 src/pmc/bigint.dump                              [devel]src
 src/pmc/bignum.dump                              [devel]src
 src/pmc/boolean.dump                             [devel]src
+src/pmc/bytebuffer.dump                          [devel]src
 src/pmc/callcontext.dump                         [devel]src
 src/pmc/capture.dump                             [devel]src
 src/pmc/class.dump                               [devel]src

Modified: branches/gsoc_past_optimization/NEWS
==============================================================================
--- branches/gsoc_past_optimization/NEWS	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/NEWS	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1,8 +1,26 @@
 # $Id$
 
 New in 2.5.0
+- Core
+  + Added ByteBuffer PMC to allow direct byte manipulation
+  + Modified some PMC vtable functions to reduce complexity, simplifying coverage.
+  + Modified PAST to generate symbolic PASM constants in PIR output.
+  + General STRING API cleanups
+  + Increased test coverage of core PMCs
+  + Fixed up 'exit' opcode, added CONTROL_EXIT exception type.
+  + Experimental 'unroll' opcode renamed to 'finalize'
+- NQP-rx
+  + Added proper support for multisubs and multimethods
+  + Fixed sigspace handling ** quantifier in regexes
+  + Added \e strings
+  + Added use of inversion lists for charclass lists in regexes
 - Platforms
   + EPEL (Extra Packages for Enterprise Linux) packages for RHEL6.beta are available
+- Begin moving towards Lorito, the ops refactor to enable pervasive self-hosting and JIT compilation.
+  + All ops are now built with the self-hosted opsc compiler.
+  + For more Information about Lorito see:
+      http://trac.parrot.org/parrot/wiki/Lorito
+      http://trac.parrot.org/parrot/wiki/LoritoRoadmap
 
 New in 2.4.0
 - Core

Modified: branches/gsoc_past_optimization/PBC_COMPAT
==============================================================================
--- branches/gsoc_past_optimization/PBC_COMPAT	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/PBC_COMPAT	Wed Jun 23 00:34:17 2010	(r47770)
@@ -28,6 +28,7 @@
 
 # please insert tab separated entries at the top of the list
 
+6.21	2010.06.09	NotFound	add ByteBuffer PMC
 6.20	2010.05.29	plobsing	eliminate unused fixup type 'label'
 6.19	2010.05.27	plobsing	removed numerous core ops (TT #449)
 6.18	2010.05.25	cotto	removed ops.num

Modified: branches/gsoc_past_optimization/README
==============================================================================
--- branches/gsoc_past_optimization/README	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/README	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1,4 +1,4 @@
-This is Parrot, version 2.4.0
+This is Parrot, version 2.5.0
 ------------------------------
 
 Parrot is Copyright (C) 2001-2010, Parrot Foundation.
@@ -79,7 +79,7 @@
 By default, this installs in /usr/local, with the Parrot executable in
 /usr/local/bin. If you want to install Parrot into another location use:
 
-    perl Configure.pl --prefix=/Users/foo/parrot-0.7.0
+    perl Configure.pl --prefix=/home/joe/bird
     make install
 
 But please note that dynamic libs will not be found for non-standard

Modified: branches/gsoc_past_optimization/VERSION
==============================================================================
--- branches/gsoc_past_optimization/VERSION	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/VERSION	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1 +1 @@
-2.4.0
+2.5.0

Modified: branches/gsoc_past_optimization/compilers/imcc/pbc.c
==============================================================================
--- branches/gsoc_past_optimization/compilers/imcc/pbc.c	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/compilers/imcc/pbc.c	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1507,7 +1507,7 @@
     else
         sub->ns_entry_name = sub->name;
 
-    Parrot_store_sub_in_namespace(interp, sub_pmc);
+    Parrot_ns_store_sub(interp, sub_pmc);
 
     /*
      * store the sub's strings
@@ -2090,10 +2090,10 @@
 e_pbc_end_sub(PARROT_INTERP, SHIM(void *param), ARGIN(IMC_Unit *unit))
 {
     ASSERT_ARGS(e_pbc_end_sub)
-    Instruction *ins;
+    Instruction *ins = unit->instructions;
     int          pragma;
 
-    if (!unit->instructions)
+    if (!ins)
         return 0;
 
     /*
@@ -2101,7 +2101,6 @@
      * This is *dangerous*: all possible global state can be messed
      * up, e.g. when that sub starts loading bytecode
      */
-    ins   = unit->instructions;
 
     /* we run only PCC subs */
     if (!ins->symregs[0] || !ins->symregs[0]->pcc_sub)

Modified: branches/gsoc_past_optimization/compilers/opsc/src/Ops/Op.pm
==============================================================================
--- branches/gsoc_past_optimization/compilers/opsc/src/Ops/Op.pm	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/compilers/opsc/src/Ops/Op.pm	Wed Jun 23 00:34:17 2010	(r47770)
@@ -284,61 +284,54 @@
 }
 
 # Recursively process body chunks returning string.
-# Ideally bunch of multisubs, but...
-method process_body_chunk($trans, $chunk) {
-    my $what := $chunk.WHAT;
-    # Poor man multis...
-    if $what eq 'PAST::Var()' {
-        my $n := +$chunk.name;
-        return $trans.access_arg( self.arg_type($n - 1), $n);
+
+our multi method process_body_chunk($trans, PAST::Var $chunk) {
+    my $n := +$chunk.name;
+    $trans.access_arg( self.arg_type($n - 1), $n);
+}
+
+our multi method process_body_chunk($trans, PAST::Op $chunk) {
+    my $type := $chunk.pasttype;
+    #say('OP ' ~ $type);
+    if $type eq 'inline' {
+        #_dumper($chunk);
+        #pir::say('RET ' ~ $chunk<inline>);
+        return $chunk.inline;
     }
-    elsif $what eq 'PAST::Op()' {
-        my $type := $chunk.pasttype;
-        #say('OP ' ~ $type);
-        if $type eq 'inline' {
-            #_dumper($chunk);
-            #pir::say('RET ' ~ $chunk<inline>);
-            return $chunk.inline;
+    elsif $type eq 'call' {
+        my $name     := $chunk.name;
+        #say('NAME '~$name ~ ' ' ~ $is_next);
+        if $name eq 'OPSIZE' {
+            #say('is_next');
+            return ~self.size;
         }
-        elsif $type eq 'call' {
-            my $name     := $chunk.name;
-            #say('NAME '~$name ~ ' ' ~ $is_next);
-            if $name eq 'OPSIZE' {
-                #say('is_next');
-                return ~self.size;
-            }
-
-            my @children := list();
-            for @($chunk) {
-                @children.push(self.process_body_chunk($trans, $_));
-            }
-            my $children := join('', |@children);
-
-            #pir::say('children ' ~ $children);
-            my $ret := Q:PIR<
-                $P0 = find_lex '$trans'
-                $P1 = find_lex '$name'
-                $S0 = $P1
-                $P1 = find_lex '$children'
-                %r  = $P0.$S0($P1)
-            >;
-            #pir::say('RET ' ~ $ret);
-            return $ret;
-        }
-    }
-    elsif $what eq 'PAST::Stmts()' {
+
         my @children := list();
         for @($chunk) {
             @children.push(self.process_body_chunk($trans, $_));
         }
         my $children := join('', |@children);
-        return $children;
-    }
-    else {
-        pir::die('HOLEY');
+
+        #pir::say('children ' ~ $children);
+        my $ret := Q:PIR<
+            $P0 = find_lex '$trans'
+            $P1 = find_lex '$name'
+            $S0 = $P1
+            $P1 = find_lex '$children'
+            %r  = $P0.$S0($P1)
+        >;
+        #pir::say('RET ' ~ $ret);
+        return $ret;
     }
 }
 
+our multi method process_body_chunk($trans, PAST::Stmts $chunk) {
+    my @children := list();
+    for @($chunk) {
+        @children.push(self.process_body_chunk($trans, $_));
+    }
+    join('', |@children);
+}
 
 =begin
 

Modified: branches/gsoc_past_optimization/compilers/opsc/src/Ops/Trans/C.pm
==============================================================================
--- branches/gsoc_past_optimization/compilers/opsc/src/Ops/Trans/C.pm	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/compilers/opsc/src/Ops/Trans/C.pm	Wed Jun 23 00:34:17 2010	(r47770)
@@ -95,7 +95,7 @@
 
 method expr_address($addr) { $addr; }
 
-method expr_offset($offset) { "cur_opcode + $offset"; }
+method expr_offset($offset) { " cur_opcode + $offset"; }
 
 =begin
 

Modified: branches/gsoc_past_optimization/compilers/pct/src/PAST/Compiler.pir
==============================================================================
--- branches/gsoc_past_optimization/compilers/pct/src/PAST/Compiler.pir	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/compilers/pct/src/PAST/Compiler.pir	Wed Jun 23 00:34:17 2010	(r47770)
@@ -109,7 +109,7 @@
     piropsig['shl']        = 'PP+'
     piropsig['shr']        = 'PP+'
     piropsig['sleep']      = 'v+'
-    piropsig['splice']     = 'PPii'
+    piropsig['splice']     = '0PPii'
     piropsig['split']      = 'Pss'
     piropsig['sub']        = 'PP+'
     piropsig['substr']     = 'Ssii'

Modified: branches/gsoc_past_optimization/compilers/pirc/src/bcgen.c
==============================================================================
--- branches/gsoc_past_optimization/compilers/pirc/src/bcgen.c	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/compilers/pirc/src/bcgen.c	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1271,7 +1271,7 @@
      * XXX must this be done always? (this w.r.t. the recent discussion about :vtable/:method
      * and being :anon etc.
      */
-    Parrot_store_sub_in_namespace(bc->interp, sub_pmc);
+    Parrot_ns_store_sub(bc->interp, sub_pmc);
     subconst_index = add_pmc_const(bc, sub_pmc);
 
     /* Add a new fixup entry in the fixup table for this sub. */

Modified: branches/gsoc_past_optimization/config/gen/config_pm.pm
==============================================================================
--- branches/gsoc_past_optimization/config/gen/config_pm.pm	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/config/gen/config_pm.pm	Wed Jun 23 00:34:17 2010	(r47770)
@@ -119,7 +119,11 @@
                     # String
                     $v =~ s/(["\\])/\\$1/g;
                     $v =~ s/\n/\\n/g;
-                    print {$OUT} qq(    set \$P0["$k"], "$v"\n);
+                    my $charset = q{};
+                    if ($v =~ /[^[:ascii:]]/) {
+                        $charset = 'binary:';
+                    }
+                    print {$OUT} qq(    set \$P0["$k"], $charset"$v"\n);
                 }
                 else {
                     # Null

Modified: branches/gsoc_past_optimization/config/gen/makefiles/root.in
==============================================================================
--- branches/gsoc_past_optimization/config/gen/makefiles/root.in	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/config/gen/makefiles/root.in	Wed Jun 23 00:34:17 2010	(r47770)
@@ -331,6 +331,7 @@
     $(LIBRARY_DIR)/Tcl/Glob.pbc \
     $(LIBRARY_DIR)/TclLibrary.pbc \
     $(LIBRARY_DIR)/URI.pbc \
+    $(LIBRARY_DIR)/URI/Escape.pbc \
     $(LIBRARY_DIR)/uuid.pbc \
     $(LIBRARY_DIR)/YAML/Dumper/Base.pbc \
     $(LIBRARY_DIR)/YAML/Dumper/Default.pbc \
@@ -401,7 +402,7 @@
 	$(INC_DIR)/vtables.h \
 	$(INC_DIR)/multidispatch.h \
 	$(INC_DIR)/library.h \
-	$(INC_DIR)/global.h \
+	$(INC_DIR)/namespace.h \
 	$(INC_DIR)/stat.h \
 	$(INC_DIR)/hll.h \
 	$(INC_DIR)/pbcversion.h \
@@ -462,7 +463,6 @@
     src/gc/gc_inf$(O) \
     src/gc/mark_sweep$(O) \
     src/gc/system$(O) \
-    src/global$(O) \
     src/global_setup$(O) \
     src/hash$(O) \
     src/hll$(O) \
@@ -479,6 +479,7 @@
     src/longopt$(O) \
     src/misc$(O) \
     src/multidispatch$(O) \
+    src/namespace$(O) \
     src/frame_builder$(O) \
     src/nci/api$(O) \
     src/nci/core_thunks$(O) \
@@ -646,9 +647,10 @@
 
 $(LIBRARY_DIR)/Configure/genfile.pbc: $(DYNEXT_DIR)/sys_ops$(LOAD_EXT)
 
-$(LIBRARY_DIR)/HTTP/Message.pbc: $(DYNEXT_DIR)/sys_ops$(LOAD_EXT)
+# Message.pbc and distutils.pbc load io_ops to work around TT #1663
+638	$(LIBRARY_DIR)/HTTP/Message.pbc: $(DYNEXT_DIR)/sys_ops$(LOAD_EXT) $(DYNEXT_DIR)/io_ops$(LOAD_EXT)
 
-$(LIBRARY_DIR)/distutils.pbc: $(DYNEXT_DIR)/sys_ops$(LOAD_EXT)
+$(LIBRARY_DIR)/distutils.pbc: $(DYNEXT_DIR)/sys_ops$(LOAD_EXT) $(DYNEXT_DIR)/io_ops$(LOAD_EXT)
 
 $(LIBRARY_DIR)/pcre.pbc: $(DYNEXT_DIR)/sys_ops$(LOAD_EXT)
 
@@ -672,7 +674,6 @@
     src/debug.str \
     src/dynext.str \
     src/exceptions.str \
-    src/global.str \
     src/global_setup.str \
     src/hll.str \
     src/call/pcc.str \
@@ -684,6 +685,7 @@
     src/key.str \
     src/library.str \
     src/multidispatch.str \
+    src/namespace.str \
     src/frame_builder.str \
     src/nci/api.str \
     src/nci/core_thunks.str \
@@ -1324,7 +1326,7 @@
 
 src/global_setup$(O) : $(PARROT_H_HEADERS) src/global_setup.str src/global_setup.c
 
-src/global$(O) : $(PARROT_H_HEADERS) src/global.str src/global.c \
+src/namespace$(O) : $(PARROT_H_HEADERS) src/namespace.str src/namespace.c \
 	include/pmc/pmc_sub.h
 
 src/pmc$(O) : include/pmc/pmc_class.h src/pmc.c \
@@ -1869,7 +1871,7 @@
 manifest_tests :
 	$(PERL) t/harness $(MANIFEST_TEST_FILES)
 
-examples_tests :
+examples_tests : test_prep
 	$(PERL) t/harness $(EXAMPLES_TEST_FILES)
 
 # benchmark tests

Modified: branches/gsoc_past_optimization/config/gen/opengl.pm
==============================================================================
--- branches/gsoc_past_optimization/config/gen/opengl.pm	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/config/gen/opengl.pm	Wed Jun 23 00:34:17 2010	(r47770)
@@ -245,6 +245,7 @@
     GLsizeiptr              => 'ptrdiff_t',
     GLintptrARB             => 'ptrdiff_t',
     GLsizeiptrARB           => 'ptrdiff_t',
+    GLvdpauSurfaceNV        => 'ptrdiff_t',
 );
 
 my %NCI_TYPE = (
@@ -265,6 +266,7 @@
     'short*'     => 'p',
     'int*'       => 'p',
     'long*'      => 'p',
+    'ptrdiff_t*' => 'p',
     'longlong*'  => 'p',
     'float*'     => 'p',
     'double*'    => 'p',

Modified: branches/gsoc_past_optimization/docs/book/pir/ch07_objects.pod
==============================================================================
--- branches/gsoc_past_optimization/docs/book/pir/ch07_objects.pod	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/docs/book/pir/ch07_objects.pod	Wed Jun 23 00:34:17 2010	(r47770)
@@ -94,6 +94,53 @@
 
 =end PIR_FRAGMENT
 
+=head2 Instantiation
+
+With a created class, we can use the C<new> opcode to instantiate an object of
+that class in the same way we can instantiate a new PMC.
+
+=begin PIR_FRAGMENT
+
+    $P0 = newclass "Foo"
+    $P1 = new $P0
+
+=end PIR_FRAGMENT
+
+Or, if we don't have the class object handy, we can do it by name too:
+
+=begin PIR_FRAGMENT
+
+    $P1 = new "Foo"
+
+=end PIR_FRAGMENT
+
+PMCs have two VTABLE interface functions for dealing with instantiating a new
+object: C<init> and C<init_pmc>. The former is called when a new PMC is
+created, the later is called when a new PMC is created with an initialization
+argument.
+
+=begin PIR
+
+    .namespace ["Foo"]
+    .sub 'init' :vtable
+        say "Creating a new Foo"
+    .end
+
+    .sub 'init_pmc' :vtable
+        .param pmc args
+        print "Creating a new Foo with argument "
+        say args
+    .end
+
+    .namespace[]
+    .sub 'main' :main
+        $P1 = new ['Foo']       # init
+        $P2 = new ['Foo'], $P1  # init_pmc
+    .end
+
+=end PIR
+
+
 =head2 Methods
 
 X<methods>
@@ -346,7 +393,7 @@
 Classes defined in PIR using the C<newclass> opcode are instances of the
 C<Class> PMCX<Class PMC>. This PMC contains all the meta-information for
 the class, such as attribute definitions, methods, vtable overrides, and
-its inheritance hierarchy. The opcode C<inspect>X<inspect opcode> 
+its inheritance hierarchy. The opcode C<inspect>X<inspect opcode>
 provides a way to peek behind the curtain of encapsulation to see what
 makes a class tick. When called with no arguments, C<inspect> returns an
 associative array containing data on all characteristics of the class

Modified: branches/gsoc_past_optimization/docs/embed.pod
==============================================================================
--- branches/gsoc_past_optimization/docs/embed.pod	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/docs/embed.pod	Wed Jun 23 00:34:17 2010	(r47770)
@@ -288,12 +288,12 @@
 
 =over 4
 
-=item C<Parrot_PMC Parrot_find_global_cur(PARROT_INTERP, Parrot_String name)>
+=item C<Parrot_PMC Parrot_ns_find_current_namespace_global(PARROT_INTERP, Parrot_String name)>
 
 Find and return a global called C<name> in the current namespace.  Returns
 C<PMCNULL> if not found.
 
-=item C<Parrot_PMC Parrot_find_global_n(PARROT_INTERP, PMC namespace, Parrot_String name)>
+=item C<Parrot_PMC Parrot_ns_find_namespace_global(PARROT_INTERP, PMC namespace, Parrot_String name)>
 
 Search the namespace PMC C<namespace> for an object with name C<globalname>.
 Return the object, or NULL if not found.
@@ -303,7 +303,7 @@
 Find and return a global called C<name> in the namespace C<namespace>.  Returns
 C<PMCNULL> if not found.
 
-=item C<void Parrot_store_global_n(PARROT_INTERP, PMC namespace, Parrot_String name, Parrot_PMC val)>
+=item C<void Parrot_ns_store_global(PARROT_INTERP, PMC namespace, Parrot_String name, Parrot_PMC val)>
 
 Store the PMC C<val> into the namespace PMC C<namespace> with name C<globalname>.
 
@@ -467,7 +467,7 @@
 
         /* find the subroutine named "foo" in the global namespace */
         pstr = string_from_literal(interp, "foo");
-        sub = Parrot_find_global_cur(interp, pstr);
+        sub = Parrot_ns_find_current_namespace_global(interp, pstr);
 
         /* run foo(), which returns nothing */
 	Parrot_ext_call(interp, sub, "->");
@@ -709,13 +709,13 @@
 
 =item C<Parrot_find_encoding_converter>
 
-=item C<Parrot_find_global_cur>
+=item C<Parrot_ns_find_current_namespace_global>
 
 =item C<Parrot_find_global_k>
 
-=item C<Parrot_find_global_n>
+=item C<Parrot_ns_find_namespace_global>
 
-=item C<Parrot_find_global_op>
+=item C<Parrot_ns_find_global_from_op>
 
 =item C<Parrot_find_global_s>
 
@@ -725,7 +725,7 @@
 
 =item C<Parrot_find_method_with_cache>
 
-=item C<Parrot_find_name_op>
+=item C<Parrot_ns_find_named_item>
 
 =item C<Parrot_float_rand>
 
@@ -761,7 +761,7 @@
 
 =item C<Parrot_get_encoding>
 
-=item C<Parrot_get_global>
+=item C<Parrot_ns_get_global>
 
 =item C<Parrot_get_HLL_id>
 
@@ -775,9 +775,9 @@
 
 =item C<Parrot_get_namespace_autobase>
 
-=item C<Parrot_get_namespace_keyed>
+=item C<Parrot_ns_get_namespace_keyed>
 
-=item C<Parrot_get_namespace_keyed_str>
+=item C<Parrot_ns_get_namespace_keyed_str>
 
 =item C<Parrot_get_numreg>
 
@@ -949,11 +949,11 @@
 
 =item C<Parrot_make_default_encoding>
 
-=item C<Parrot_make_namespace_autobase>
+=item C<Parrot_ns_make_namespace_autobase>
 
-=item C<Parrot_make_namespace_keyed>
+=item C<Parrot_ns_make_namespace_keyed>
 
-=item C<Parrot_make_namespace_keyed_str>
+=item C<Parrot_ns_make_namespace_keyed_str>
 
 =item C<Parrot_mmd_cache_create>
 
@@ -1105,12 +1105,6 @@
 
 =item C<Parrot_PMC_get_integer_keyed_str>
 
-=item C<Parrot_PMC_get_intval>
-
-=item C<Parrot_PMC_get_intval_intkey>
-
-=item C<Parrot_PMC_get_intval_pmckey>
-
 =item C<Parrot_PMC_get_iter>
 
 =item C<Parrot_PMC_get_namespace>
@@ -1503,7 +1497,7 @@
 
 =item C<Parrot_set_flag>
 
-=item C<Parrot_set_global>
+=item C<Parrot_ns_set_global>
 
 =item C<Parrot_set_intreg>
 
@@ -1533,11 +1527,11 @@
 
 =item C<Parrot_srand>
 
-=item C<Parrot_store_global_n>
+=item C<Parrot_ns_store_global>
 
 =item C<Parrot_store_global_s>
 
-=item C<Parrot_store_sub_in_namespace>
+=item C<Parrot_ns_store_sub>
 
 =item C<Parrot_str_boolean>
 

Modified: branches/gsoc_past_optimization/docs/parrothist.pod
==============================================================================
--- branches/gsoc_past_optimization/docs/parrothist.pod	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/docs/parrothist.pod	Wed Jun 23 00:34:17 2010	(r47770)
@@ -109,5 +109,6 @@
 
  Gerd        2.3.0 *        2010-Apr-20     "Samoan Lory"
  Whiteknight 2.4.0          2010-May-18     "Sulfer Crest"
+ Gerd        2.5.0          2010-Jun-15     "Cheops"
 
 =cut

Modified: branches/gsoc_past_optimization/docs/pdds/draft/pdd06_pasm.pod
==============================================================================
--- branches/gsoc_past_optimization/docs/pdds/draft/pdd06_pasm.pod	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/docs/pdds/draft/pdd06_pasm.pod	Wed Jun 23 00:34:17 2010	(r47770)
@@ -18,9 +18,7 @@
 language for it for those people who may need to generate bytecode directly,
 rather than indirectly through a high-level language.
 
-{{ NOTE: out-of-date and incomplete. It seems that it would be more
-useful as a specification of the format of PASM than as a comprehensive
-listing of all opcodes. }}
+{{ NOTE: out-of-date and incomplete. }}
 
 =head2 Questions
 
@@ -84,7 +82,9 @@
 PC.
 
 All registers have a type prefix of P, S, I, or N, for PMC, string, integer,
-and number respectively.
+and number respectively. While parrot bytecode does not have a fixed limit
+on the number of registers, PASM has an implementation limit on the number of
+addressable registers of each type, currently set at 100 (0-99).
 
 =head2 Assembly Syntax
 
@@ -158,7 +158,7 @@
 
 =head2 Opcode List
 
-In the following list, there may be multiple (but unlisted) versions of an
+There may be multiple (but unlisted) versions of an
 opcode. If an opcode takes a register that might be keyed, the keyed version
 of the opcode has a _k suffix. If an opcode might take multiple types of
 registers for a single parameter, the opcode function really has a _x suffix,
@@ -184,831 +184,7 @@
 either a register or constant of the appropriate type (PMC, string, integer,
 or number)
 
-=head3 Control flow
-
-The control flow opcodes check conditions and manage program flow.
-
-=over 4
-
-=item if tx, ix
-
-Check register tx. If true, branch by X.
-
-=item unless tx, ix
-
-Check register tx. If false, branch by X.
-
-=item jump tx
-
-Jump to the address held in register x (Px, Sx, or Ix).
-
-=item branch tx
-
-Branch forward or backward by the amount in register x. (X may be either Ix,
-Nx, or Px) Branch offset may also be an integer constant.
-
-=back
-
-=head3 Data manipulation
-
-These ops handle manipulating the data in registers
-
-=over 4
-
-=item new Px, iy
-
-Create a new PMC of class y stored in PMC register x.
-
-=item destroy Px
-
-Destroy the PMC in register X, leaving it undef
-
-=item set tx, ty
-
-Copies y into x. Note that strings and PMCs are referred to by pointer, so if
-you do something like:
-
-   set S0, S1
-
-this will copy the pointer in S1 into S0, leaving B<both> registers pointing
-at the same string.
-
-=item exchange tx, ty
-
-Exchange the contents of registers X and Y, which must be of the same type.
-(Generally cheaper than using the stack as an intermediary when setting up
-registers for function calls)
-
-=item assign Px, ty
-
-Takes the contents of Y and assigns them into the existing PMC in X.
-
-While set just copies pointers from one register to another, assign actually
-does a value assignment, as:
-
-    $foo = $bar;
-
-X's assign vtable function is invoked and it does whatever is appropriate.
-
-=item clone Px, Py
-
-=item clone Sx, xy
-
-Performs a "deeper" copy of y into x, using the vtable appropriate to the
-class of Py if cloning a PMC.
-
-=item tostring Sx, ty, Iz
-
-Take the value in register y and convert it to a string of type z, storing the
-result in string register x.
-
-=item add tx, ty, tz *
-
-Add registers y and z and store the result in register x. (x = y + z) The
-registers must all be the same type, PMC, integer, or number.
-
-=item sub tx, ty, tz *
-
-Subtract register z from register y and store the result in register x. (x = y
-- z) The registers must all be the same type, PMC, integer, or number.
-
-=item mul tx, ty, tz *
-
-Multiply register y by register z and store the results in register x. The
-registers must be the same type.
-
-=item div tx, ty, tz *
-
-Divide register y by register z, and store the result in register x.
-
-=item inc tx, nn *
-
-Increment register x by nn. nn is an integer constant. If nn is omitted,
-increment is 1.
-
-=item dec tx, nn *
-
-Decrement register x by nn. nn is an integer constant. If nn is omitted,
-decrement by 1.
-
-=item length Ix, Sy
-
-Put the length of string y into integer register x.
-
-=item concat Sx, Sy
-
-Add string y to the end of string x.
-
-=item repeat Sx, Sy, iz
-
-Copies string y z times into string x.
-
-=back
-
-=head3 Transcendental operations
-
-These opcodes handle the transcendental math functions. The destination
-register here must always be either a numeric or a PMC register.
-
-=over 4
-
-=item sin nx, ty
-
-Return the sine of the number in Y
-
-=item cos nx, ty
-
-Return the cosine of the number in Y
-
-=item tan nx, ty
-
-Return the tangent of the number in Y
-
-=item sec nx, ty
-
-Return the secant of the number in Y
-
-=item atan nx, ty
-
-Return the arctangent of Y
-
-=item atan2 nx, ty
-
-Return the result of atan2 of Y
-
-=item asin nx, ty
-
-Return the arcsine of y
-
-=item acos nx, ty
-
-Return the arccosine of y
-
-=item asec nx, ty
-
-Return the arcsecant of y
-
-=item cosh nx, ty
-
-Return the hyperbolic cosine of y
-
-=item sinh nx, ty
-
-Return the hyperbolic sine of y
-
-=item tanh nx, ty
-
-Return the hyperbolic tangent of y
-
-=item sech nx, ty
-
-Return the hyperbolic secant of y
-
-=item log2 nx, ty
-
-Return the base 2 log of y
-
-=item log10 nx, ty
-
-Return the base 10 log of y
-
-=item ln Nx, ty
-
-Return the base e log of y
-
-=item log nx, ty, tz
-
-Return the base Z log of Y
-
-=item pow nx, ty, tz
-
-Return Y to the Z power
-
-=item exp nx, ty
-
-Return e to the Y power
-
-=back
-
-=head3 Register and stack ops
-
-These opcodes deal with registers and stacks
-
-=over 4
-
-=item clearp
-
-Clean out the current set of PMC registers, setting them to NULL
-
-=item cleari
-
-Clean out the current set of I registers, setting them to 0
-
-=item clears
-
-Clean out the current set of S registers, setting them to NULL
-
-=item clearn
-
-Clean out the current set of N registers, setting them to 0
-
-=item null tx
-
-Set register X to a null value; for S and P registers, this will be NULL,
-while for I and N registers it is 0
-
-=item save tx
-
-Push register or constant X onto the generic stack
-
-=item restore tx
-
-Restore register X from the generic stack by popping off the topmost entry.
-The type of this entry must match the register type.
-
-=item entrytype Ix, iy
-
-Put the type of generic stack entry Y into integer register X
-
-=item depth Ix
-
-Get the current depth of the generic stack
-
-=item lookback tx, iy
-
-Fetch the entry that's at position Y from the top of the generic stack. This
-does not remove an entry from the stack, merely fetches the entry off it.
-
-0 is the entry at the top of the stack, 1 is the entry immediately previous to
-that, and so on. Entry -1 is the very bottom-most entry in the stack. (While
-the stack may be a tree when looked at from the bottom up,  you don't have
-access to any other branches when looking this way).
-
-=back
-
-=head3 Names, pads, and globals
-
-These operations are responsible for finding names in lexical or global
-scopes, as well as storing data into those slots.  A static scope is captured
-by a scratchpad.  The current dynamic scope is represented by the state of the
-lexical stack (which contains scratchpads).  For more detail on these ops see
-the inline POD documentation in F<ops/var.ops>.
-
-=over 4
-
-=item store_lex sx, Py
-
-=item find_lex Px, sy
-
-Instructions for storing in, and retrieving from, the scratchpad associated
-with the current context.
-
-=item find_global Px, sy, sz
-
-Find the PMC for the global variable sy from the table sz and store it in
-register X
-
-{{ DEPRECATED: op find_global was deprecated }}
-
-=item find_global Px, sy
-
-Find the PMC for the global in the default table and put it in X.
-
-{{ DEPRECATED: op find_global was deprecated }}
-
-=item find_global_table Px, sy
-
-Find the global symbol table Y and store its PMC in X
-
-=item find_global_slot ix, Py, sz
-
-Find the slot in the global table Y for the global named Z, and store its slot
-in register X.
-
-=item fetch_global Px, Py, iz
-
-Fetch the global in slot Z of the symbol table pointed to by Y
-
-=item store_global Px, sy
-
-Store X in the default global symbol table with a name of Y.
-
-{{ DEPRECATED: op store_global was deprecated }}
-
-=back
-
-=head3 Exceptions
-
-These opcodes deal with exception handling at the lowest level. Exception
-handlers are dynamically scoped, and any exception handler set in a scope will
-be removed when that scope is exited.
-
-=over 4
-
-=item set_eh Px
-
-Sets an exception handler in place. The code referred to by register Px will
-get called if an exception is thrown while the exception handler is in scope.
-
-=item pop_eh
-
-Pop the most recently placed exception off the handler stack.
-
-=item throw Px
-
-Throw an exception represented by the object in PMC register x.
-
-=item rethrow Px
-
-Only valid inside an exception handler. Rethrow the exception represented by
-the object in PMC register x. This object may have been altered by the
-exception handler.
-
-=back
-
-=head3 Object things
-
-These opcodes deal with PMCs as objects, rather than as opaque data items.
-
-=over 4
-
-=item find_method Px, Py, tz
-
-Find the method Z for object Y, and return a PMC for it in X.
-
-=item callmethod Px, ty
-
-=item set_attribute Px, ty, tz
-
-=item can Ix, Py, sz
-
-Sets X to TRUE if object Y can perform method Z; otherwise, X is set to FALSE.
-
-=item does Ix, Py, sz
-
-Sets X to TRUE if object Y can implements interface Z; otherwise, X is  set to
-FALSE.
-
-=item isa Px, ty
-
-=back
-
-=head3 Module handling
-
-These opcodes deal with loading in bytecode or executable code libraries, and
-fetching info about those libraries. This is all dealing with precompiled
-bytecode or shared libraries.
-
-=over 4
-
-=item load_bytecode sx
-
-Load in the bytecode in file X. Search the library path if need be.
-
-=item load_opcode_lib sx, iy
-
-Load in the opcode library X, starting at opcode number Y. Search the path if
-needed.
-
-=item load_string_lib sx
-
-Load in the string handling library named X
-
-=item get_op_count sx
-
-Return the number of opcodes in opcode library X
-
-=item get_string_name sx
-
-Get the name of the string encoding that the library X handles
-
-=item find_string_lib sx, sy
-
-Find the string library that handles strings of type Y. Return its name in X.
-
-=back
-
-=head3 I/O operations
-
-Reads and writes read and write records, for some value of record.
-
-=over 4
-
-=item new_fh px
-
-Create a new filehandle px
-
-=item open px, sy
-
-Open the file Y on filehandle X
-
-=item read px, py, pz
-
-Issue a read on the filehandle in y, and put the result in PMC X. PMC Z is the
-sync object.
-
-=item write px, sy, pz
-
-Write the string Y to filehandle X. PMC Z is the sync object.
-
-=item wait px
-
-Wait for the I/O operation represented by sync object X to finish
-
-=item readw px, py
-
-Read from filehandle Y and put the results in PMC X. Blocks until the read
-completes.
-
-=item writew px, sy
-
-Write string Y to filehandle X, waiting for the write to complete.
-
-=item seek px, ty
-
-Seek filehandle X to position Y.
-
-=item tell tx, py
-
-Return the current position of filehandle Y and put it in X. Returns -1 for
-filehandles where this can't be determined. (Such as stream connections)
-
-=item status px, py, tz
-
-Get informational item Z for filehandle Y and put the result in X. This
-fetches things like the number of entries in the IO pipe, number of
-outstanding I/O ops, number of ops on the filehandle, and so forth.
-
-=back
-
-=head3 Threading ops
-
-=over 4
-
-=item lock Px
-
-Take out a high-level lock on the PMC in register X
-
-=item unlock Px
-
-Unlock the PMC in register X
-
-=item pushunlock Px
-
-Push an unlock request on the stack
-
-=back
-
-=head3 Interpreter ops
-
-=over 4
-
-=item newinterp Px, flags
-
-Create a new interpreter in X, using the passed flags.
-
-=item runinterp Px, iy
-
-Jump into interpreter X and run the code starting at offset Y from the current
-location. (This is temporary until we get something better)
-
-=item callout Pw, Px, sy, pz
-
-Call routine Y in interpreter x, passing it the list of parameters Z. W is a
-synchronization object returned. It can be waited on like the sync objects
-returned from async I/O routines.
-
-=item interpinfo Ix, iy
-
-Get information item Y and put it in register X. Currently defined are:
-
-=over 4
-
-=item 1 TOTAL_MEM_ALLOC
-
-The total amount of system memory allocated for later parceling out to
-Buffers.  Doesn't include any housekeeping memory, memory for Buffer or PMC
-structs, or things of that nature.
-
-=item 2 GC_MARK_RUNS
-
-The total number of garbage collection mark runs that have been made.
-
-=item 3 GC_COLLECT_RUNS
-
-The total number of garbage collection sweep runs that have been made.
-
-=item 4 ACTIVE_PMCS
-
-The number of PMCs considered active. This means the GC scan hasn't noted
-them as dead.
-
-=item 5 ACTIVE_BUFFERS
-
-The number of Buffers (usually STRINGs but could be other things) considered
-active.
-
-=item 6 TOTAL_PMCS
-
-The total number of PMCs the interpreter has available. Includes both active
-and free PMCs
-
-=item 7 TOTAL_BUFFERS
-
-The total number of Buffer structs the interpreter has available.
-
-=item 8 HEADERS_ALLOC_SINCE_COLLECT
-
-The number of new Buffer header block allocations that have been made since
-the last GC mark run. (Buffers, when allocated, are allocated in chunks)
-
-=item 9 MEM_ALLOCS_SINCE_COLLECT
-
-The number of times we've requested a block of memory from the system for
-allocation to Buffers since the last time we compacted the memory heap.
-
-=back
-
-=back
-
-=head3 Garbage collection
-
-=over 4
-
-=item sweep
-
-Fire off a dead object sweep
-
-=item collect
-
-Fire off a garbage collection sweep
-
-=item pausecollect
-
-Pause the garbage collector. No collections will be done for this interpreter
-until the collector is unpaused.
-
-=item resumecollect
-
-Unpause the collector. This doesn't necessarily do a GC run, merely allows the
-interpreter to fire one off when it deems it necessary.
-
-=back
-
-=head3 Key operations
-
-Keys are used to get access to individual elements of an aggregate variable.
-This is done to allow for opaque, packed, and multidimensional aggregate
-types.
-
-A key entry may be an integer, string, or PMC. Integers are used for array
-lookups, strings for hash lookups, and PMCs for either.
-
-=over 4
-
-=item new_key Sx
-
-Create a new key structure and put a pointer to it in register X.
-
-=item clone_key Sx, ky
-
-Make a copy of the key Y and put a pointer to it in register X. Y may be
-either an S register or a constant.
-
-=item size_key Sx, iy
-
-Make the key structure X large enough to hold Y key entries
-
-=item key_size Ix, ky
-
-Put the number of elements in key Y into integer register X.
-
-=item toss_key Sx
-
-Nuke key X. Throws the structure away and invalidates the register.
-
-=item ke_type Ix, ky, iz
-
-Put the type of key Y's entry Z in register X. Current values are 0, 1, and 2
-for Integer, String, and PMC, respectively.
-
-=item ke_value tx, ky, iz
-
-Put the value from key Y, entry Z into register X.
-
-=item chop_key Sx
-
-Toss the topmost entry from key X.
-
-=item inc_key Sx, iy
-
-Increment entry Y of key X by one.
-
-=item set_key Sw, [isp]x, iy[, iz]
-
-Set key W, offset Y, to value X. If X is a PMC, then the fourth operand must
-be specified. It can have a value of 0, 1, or 2, corresponding to integer,
-string, or object. Aggregates use this to figure out how to treat the key
-entry.
-
-=back
-
-=head3 Properties
-
-Properties are a sort of runtime note attached to a PMC. Any PMC can have
-properties on it. Properties live in a flat namespace, and they are not in any
-way associated with the class of the PMC that they are attached to.
-
-Properties may be used for runtime notes on variables, or other metadata that
-may change. They are not for object attributes.
-
-=over 4
-
-=item setprop Px, sy, Pz
-
-Set the property named Y of PMC X to the PMC in Z
-
-=item getprop Px, sy, Pz
-
-Get the property named Y from PMC Z and put the result in register X. Returns
-a NULL if the property doesn't exist.
-
-=item delprop Px, sy
-
-Delete the property Y from PMC X
-
-=item prophash Px, Py
-
-Fetch the properties from Y, put them in a Hash, and put the Hash in X.
-
-=back
-
-=head3 Symbolic support for HLLs
-
-=over 4
-
-=item setline ix
-
-Sets the 'current line' marker.
-
-=item setfile sx
-
-Sets the 'current file' marker.
-
-=item setpackage sx
-
-Sets the 'current package' marker.
-
-=item getline ix
-
-Fetches the 'current line' marker.
-
-=item getfile sx
-
-Fetches the 'current file' marker.
-
-=item getpackage sx
-
-Fetches the 'current package' marker.
-
-=back
-
-=head3 Foreign library access
-
-These are the ops we use to load in and interface to non-parrot libraries.
-
-=over 4
-
-=item loadlib Px, Sy
-
-Load in the library whose name is specified by y, and put a handle to it into
-P register x.
-
-=item dlfunc Pw, Px, Sy, Sz
-
-Find a routine named Y, in library X (which you did, of course, open with
-loadlib), and put a sub PMC onto W for it. You can call this sub as if it were
-any other parrot subroutine.
-
-Z has the function signature, which tells Parrot how to build the interface
-from parrot (and parrot's calling conventions) to the calling conventions of
-the library routine. Yes, this does mean that you must know the function
-signature, but if you don't know that why the heck would you be invoking the
-function, right?
-
-The signature is a series of 1 or more characters, representing the types for
-the call. The first character is the return type, while the rest are the
-parameters. The types are:
-
-=over 4
-
-=item v
-
-Void. As a return type indicates that there I<is> no return type. As a
-parameter indicates that there are no parameters. Can't be mixed with other
-parameter types.
-
-=item c
-
-Char. This is an integer type, taken from (or put into) an I register.
-
-=item s
-
-short. An integer type, taken from 0 or put into an I register
-
-=item i
-
-int. An integer type.
-
-=item l
-
-long. An integer type. You know the drill.
-
-=item f
-
-float. F register denizen.
-
-=item d
-
-double. F register, double-precision floating point type
-
-=item p
-
-PMC thingie. A generic pointer, taken from or stuck into a PMC's data pointer.
-If this is a return type, parrot will create a new UnManagedStruct PMC type,
-which is just a generic "pointer so some damn thing or other" PMC type which
-Parrot does I<no> management of.
-
-=item t
-
-string pointer. Taken from, or stuck into, a string register. (Converted to a
-null-terminated C string before passing in)
-
-=back
-
-So the signature for, for example, this SDL routine:
-
-   int SDL_BlitSurface(SDL_Surface *src,
-                       SDL_Rect    *srcrect,
-                       SDL_Surface *dst,
-                       SDL_Rect    *dstrect);
-
-would be C<ipppp>, since it returns an integer and takes four pointers.
-Presumably previous calls would have set those pointers up properly.
-
-Do note that parrot makes no guarantees as to the behaviour of the libraries,
-and currently does no type checking on the input parameters. We will fix that
-later.
-
-The generated routine follows the calling conventions in PDD03. Note that int,
-string, pmc, and float parameters are counted separately. So if you have a
-signature of C<ippiidd> the return goes into I5, and the parameters come from
-P5, P6, I5, I6, N5, and N6, respectively. A signature of C<ipdiidp> has the
-identical same set of registers used (and in the same order).
-
-=item invoke
-
-Invoke a subroutine in P0. Presumes that all the registers are set up right
-for the call. The invoked subroutine I<must> preserve any registers that are
-not explicitly return parameters or calling convention metadata parameters.
-(Such as the number of I reg parameters, for example)
-
-=back
-
-=head3 Runtime compilation
-
-These opcodes deal with runtime creation of bytecode and compilation of source
-code.
-
-=over 4
-
-=item compile Px, Py, Sz
-
-Compile source string Z, with compiler unit Y, and stick a handle to a
-subroutine for the resulting bytecode segment (already loaded into the current
-interpreter) into X.
-
-Y is a assembler/compiler object of some sort, as registered with the
-B<compreg> opcode or the Parrot_compreg function. This will be something like
-"Perl5", "Perl6", "Perl5RE", "Perl6RE", "Python", "Ruby"... you get the
-picture.
-
-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
-execution of the resulting code.
-
-=item compreg Px, Sy
-
-Get a compiler for source type Y.
-
-=item compreg Sx, Py
-
-Register the sub Y as a parser/compiler function named X. It will be called
-whenever anyone invokes the compile op with the name X.
-
-=back
+L<docs/ops> for a list of current parrot opcodes, 
 
 =head2 References
 

Modified: branches/gsoc_past_optimization/docs/pdds/draft/pdd11_extending.pod
==============================================================================
--- branches/gsoc_past_optimization/docs/pdds/draft/pdd11_extending.pod	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/docs/pdds/draft/pdd11_extending.pod	Wed Jun 23 00:34:17 2010	(r47770)
@@ -73,13 +73,13 @@
 A keyed version of C<Parrot_PMC_get_pointer>. Returns the pointer value of
 whatever is stored at the element of the PMC indexed by C<key>.
 
-=item C<Parrot_PMC_get_intval(interp, pmc)>
+=item C<Parrot_PMC_get_integer(interp, pmc)>
 
 Returns the integer value of the PMC.
 
-=item C<Parrot_PMC_get_intval_intkey(interp, pmc, Parrot_Int key)>
+=item C<Parrot_PMC_get_integer_keyed_int(interp, pmc, Parrot_Int key)>
 
-A keyed version of C<Parrot_PMC_get_intval>. Returns the integer value of
+A keyed version of C<Parrot_PMC_get_integer>. Returns the integer value of
 whatever is stored at the element of the PMC indexed by C<key>.
 
 =item C<Parrot_PMC_get_numval(interp, pmc)>

Modified: branches/gsoc_past_optimization/docs/pdds/pdd28_strings.pod
==============================================================================
--- branches/gsoc_past_optimization/docs/pdds/pdd28_strings.pod	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/docs/pdds/pdd28_strings.pod	Wed Jun 23 00:34:17 2010	(r47770)
@@ -583,7 +583,7 @@
 =head4 string_make
 
 A crippled version of a string initializer, now replaced with the full version
-C<Parrot_string_new_init>.
+C<Parrot_str_new_init>.
 
 =head4 string_capacity
 

Modified: branches/gsoc_past_optimization/docs/project/release_manager_guide.pod
==============================================================================
--- branches/gsoc_past_optimization/docs/project/release_manager_guide.pod	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/docs/project/release_manager_guide.pod	Wed Jun 23 00:34:17 2010	(r47770)
@@ -118,10 +118,23 @@
 
 =item f
 
+In the two files F<src/ops/core_ops.c> and F<include/parrot/oplib/core_ops.h>
+is the function C<Parrot_DynOp_core_a_b_c>, which has a name that includes
+the version number. a_b_c is the version number. You have to update this
+version number on two places in the file F<src/ops/core_ops.c>.
+In the file F<include/parrot/oplib/core_ops.h> you have to change this line:
+
+ op_lib_t *Parrot_DynOp_core_a_b_c(PARROT_INTERP, long init);
+
+Ignore the warning to not edit this files. It is necessary to edit this files,
+so that "make" builds with the increased version number.
+
+=item g
+
 Configure parrot and run C<make distro_tests>, and either fix
 what those tests complain about, or fix them so they don't complain.
 
-=item g
+=item h
 
 If this is a developer release, or there have been no new entries to the
 F<PBC_COMPAT> file, skip this step.
@@ -142,7 +155,7 @@
 built for this to work, and that this script will reconfigure and rebuild
 Parrot with various primitive size options.
 
-=item h
+=item i
 
 Make sure everything works:
 
@@ -394,7 +407,6 @@
 visible at
 L<http://www.google.com/calendar/render?cid=ldhctdamsgfg5a1cord52po9h8@group.calendar.google.com>.
 
- - Jun 15, 2010 - 2.5  - gerd
  - Jul 20, 2010 - 2.6* - coke
  - Aug 17, 2010 - 2.7  - ??
  - Sep 21, 2010 - 2.8  - gerd

Modified: branches/gsoc_past_optimization/editor/mk_skeleton.pir
==============================================================================
--- branches/gsoc_past_optimization/editor/mk_skeleton.pir	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/editor/mk_skeleton.pir	Wed Jun 23 00:34:17 2010	(r47770)
@@ -4,6 +4,7 @@
 # Generate a skeleton PIR file that adheres to parrot developer standards.
 # intended for people who hack on parrot itself, not users of parrot.
 
+.loadlib 'sys_ops'
 .include 'tm.pasm'
 
 .sub 'main' :main

Modified: branches/gsoc_past_optimization/examples/embed/cotorra.c
==============================================================================
--- branches/gsoc_past_optimization/examples/embed/cotorra.c	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/examples/embed/cotorra.c	Wed Jun 23 00:34:17 2010	(r47770)
@@ -227,18 +227,18 @@
     if (stname) {
         Parrot_PMC rootns = Parrot_get_root_namespace(interp);
         Parrot_String parrotname = create_string(interp, "parrot");
-        Parrot_PMC parrotns = Parrot_PMC_get_pmc_strkey(interp, rootns, parrotname);
+        Parrot_PMC parrotns = Parrot_PMC_get_pmc_keyed_str(interp, rootns, parrotname);
         Parrot_String name = create_string(interp, stname);
-        Parrot_PMC start = Parrot_PMC_get_pmc_strkey(interp, parrotns, name);
+        Parrot_PMC start = Parrot_PMC_get_pmc_keyed_str(interp, parrotns, name);
         if (Parrot_pmc_is_null(interp, start))
             fail("start sub not found");
         if (i < argc) {
             int pos;
             Parrot_PMC arg = Parrot_PMC_new(interp,
                     Parrot_PMC_typenum(interp, "FixedStringArray"));
-            Parrot_PMC_set_intval(interp, arg, argc - i);
+            Parrot_PMC_set_integer_native(interp, arg, argc - i);
             for (pos = 0; i < argc; ++i, ++pos) {
-                Parrot_PMC_set_string_intkey(interp, arg, pos, create_string(interp, argv[i]));
+                Parrot_PMC_set_string_keyed_int(interp, arg, pos, create_string(interp, argv[i]));
             }
             Parrot_ext_call(interp, start, "P->", arg);
         }

Modified: branches/gsoc_past_optimization/examples/io/http.pir
==============================================================================
--- branches/gsoc_past_optimization/examples/io/http.pir	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/examples/io/http.pir	Wed Jun 23 00:34:17 2010	(r47770)
@@ -13,9 +13,7 @@
 
 HTTP client, connects to WWW port and grabs a page (L<http://www.ibm.com>).
 
-You should be running the echo service on your box (port 7). Be sure to
-set C<PARROT_NET_DEVEL> to 1 in F<io/io_private.h> and rebuld Parrot or
-the network layer won't exist.
+You should be running the echo service on your box (port 7).
 
 =cut
 

Modified: branches/gsoc_past_optimization/examples/io/httpd.pir
==============================================================================
--- branches/gsoc_past_optimization/examples/io/httpd.pir	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/examples/io/httpd.pir	Wed Jun 23 00:34:17 2010	(r47770)
@@ -270,7 +270,6 @@
 
 ERR_NO_SOCKET:
     print "Could not open socket.\n"
-    print "Did you enable PARROT_NET_DEVEL in include/io_private.h?\n"
     end
 ERR_bind:
     print "bind failed\n"

Modified: branches/gsoc_past_optimization/examples/pir/make_hello_pbc.pir
==============================================================================
--- branches/gsoc_past_optimization/examples/pir/make_hello_pbc.pir	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/examples/pir/make_hello_pbc.pir	Wed Jun 23 00:34:17 2010	(r47770)
@@ -66,6 +66,7 @@
     $P0['ns_entry_name']= 'hello'
     $P0['method']       = ''
     $P0['HLL_id']       = 0
+    $P0['vtable_index'] = -1 # It required to store sub in namespace
 
     $P1 = new 'Sub', $P0
     # and store it in PackfileConstantTable
@@ -78,7 +79,7 @@
 
     $P1 = new 'PackfileFixupEntry'
     $P1 = 'hello'
-    $P1.'set_type'(2)
+    $P1.'set_type'(1)
     $P1 = 5 # offset
     pffixup[0] = $P1
 

Modified: branches/gsoc_past_optimization/ext/Parrot-Embed/lib/Parrot/Embed.xs
==============================================================================
--- branches/gsoc_past_optimization/ext/Parrot-Embed/lib/Parrot/Embed.xs	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/ext/Parrot-Embed/lib/Parrot/Embed.xs	Wed Jun 23 00:34:17 2010	(r47770)
@@ -153,26 +153,26 @@
             ns_str += 2;
 
             if (!ns)
-                ns = Parrot_find_global_cur(real_interp,
+                ns = Parrot_ns_find_current_namespace_global(real_interp,
                     Parrot_str_new_constant(real_interp, prev));
             else
-                ns = Parrot_find_global_n(real_interp, ns,
+                ns = Parrot_ns_find_namespace_global(real_interp, ns,
                     Parrot_str_new_constant(real_interp, prev));
             prev    = ns_str;
         }
 
         if (!ns)
-            ns = Parrot_find_global_cur(real_interp,
+            ns = Parrot_ns_find_current_namespace_global(real_interp,
                 Parrot_str_new_constant(real_interp, prev));
         else
-            ns = Parrot_find_global_n(real_interp, ns,
+            ns = Parrot_ns_find_namespace_global(real_interp, ns,
                 Parrot_str_new_constant(real_interp, prev));
 
-        pmc          = Parrot_find_global_n(real_interp, ns, p_global);
+        pmc          = Parrot_ns_find_namespace_global(real_interp, ns, p_global);
         Safefree(ns_copy);
     }
     else
-        pmc         = Parrot_find_global_cur( real_interp, p_global );
+        pmc         = Parrot_ns_find_current_namespace_global( real_interp, p_global );
 
     RETVAL = make_pmc( aTHX_ ST(0), pmc );
 OUTPUT:

Modified: branches/gsoc_past_optimization/ext/nqp-rx/src/stage0/HLL-s0.pir
==============================================================================
--- branches/gsoc_past_optimization/ext/nqp-rx/src/stage0/HLL-s0.pir	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/ext/nqp-rx/src/stage0/HLL-s0.pir	Wed Jun 23 00:34:17 2010	(r47770)
@@ -902,7 +902,7 @@
 ### .include 'gen/hllgrammar-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1275811471.14938")
+.sub "_block11"  :anon :subid("10_1276996299.39152")
 .annotate 'line', 0
     get_hll_global $P14, ["HLL";"Grammar"], "_block13" 
     capture_lex $P14
@@ -919,15 +919,15 @@
     $P348 = $P14()
 .annotate 'line', 1
     .return ($P348)
-    .const 'Sub' $P350 = "106_1275811471.14938" 
+    .const 'Sub' $P350 = "106_1276996299.39152" 
     .return ($P350)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post107") :outer("10_1275811471.14938")
+.sub "" :load :init :subid("post107") :outer("10_1276996299.39152")
 .annotate 'line', 0
-    .const 'Sub' $P12 = "10_1275811471.14938" 
+    .const 'Sub' $P12 = "10_1276996299.39152" 
     .local pmc block
     set block, $P12
     $P353 = get_root_global ["parrot"], "P6metaclass"
@@ -936,83 +936,83 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block13"  :subid("11_1275811471.14938") :outer("10_1275811471.14938")
+.sub "_block13"  :subid("11_1276996299.39152") :outer("10_1276996299.39152")
 .annotate 'line', 5
-    .const 'Sub' $P334 = "103_1275811471.14938" 
+    .const 'Sub' $P334 = "103_1276996299.39152" 
     capture_lex $P334
-    .const 'Sub' $P327 = "101_1275811471.14938" 
+    .const 'Sub' $P327 = "101_1276996299.39152" 
     capture_lex $P327
-    .const 'Sub' $P314 = "98_1275811471.14938" 
+    .const 'Sub' $P314 = "98_1276996299.39152" 
     capture_lex $P314
-    .const 'Sub' $P282 = "93_1275811471.14938" 
+    .const 'Sub' $P282 = "93_1276996299.39152" 
     capture_lex $P282
-    .const 'Sub' $P276 = "91_1275811471.14938" 
+    .const 'Sub' $P276 = "91_1276996299.39152" 
     capture_lex $P276
-    .const 'Sub' $P271 = "89_1275811471.14938" 
+    .const 'Sub' $P271 = "89_1276996299.39152" 
     capture_lex $P271
-    .const 'Sub' $P265 = "87_1275811471.14938" 
+    .const 'Sub' $P265 = "87_1276996299.39152" 
     capture_lex $P265
-    .const 'Sub' $P259 = "85_1275811471.14938" 
+    .const 'Sub' $P259 = "85_1276996299.39152" 
     capture_lex $P259
-    .const 'Sub' $P254 = "83_1275811471.14938" 
+    .const 'Sub' $P254 = "83_1276996299.39152" 
     capture_lex $P254
-    .const 'Sub' $P249 = "81_1275811471.14938" 
+    .const 'Sub' $P249 = "81_1276996299.39152" 
     capture_lex $P249
-    .const 'Sub' $P244 = "79_1275811471.14938" 
+    .const 'Sub' $P244 = "79_1276996299.39152" 
     capture_lex $P244
-    .const 'Sub' $P239 = "77_1275811471.14938" 
+    .const 'Sub' $P239 = "77_1276996299.39152" 
     capture_lex $P239
-    .const 'Sub' $P234 = "75_1275811471.14938" 
+    .const 'Sub' $P234 = "75_1276996299.39152" 
     capture_lex $P234
-    .const 'Sub' $P229 = "73_1275811471.14938" 
+    .const 'Sub' $P229 = "73_1276996299.39152" 
     capture_lex $P229
-    .const 'Sub' $P224 = "71_1275811471.14938" 
+    .const 'Sub' $P224 = "71_1276996299.39152" 
     capture_lex $P224
-    .const 'Sub' $P219 = "69_1275811471.14938" 
+    .const 'Sub' $P219 = "69_1276996299.39152" 
     capture_lex $P219
-    .const 'Sub' $P208 = "65_1275811471.14938" 
+    .const 'Sub' $P208 = "65_1276996299.39152" 
     capture_lex $P208
-    .const 'Sub' $P195 = "63_1275811471.14938" 
+    .const 'Sub' $P195 = "63_1276996299.39152" 
     capture_lex $P195
-    .const 'Sub' $P183 = "61_1275811471.14938" 
+    .const 'Sub' $P183 = "61_1276996299.39152" 
     capture_lex $P183
-    .const 'Sub' $P176 = "59_1275811471.14938" 
+    .const 'Sub' $P176 = "59_1276996299.39152" 
     capture_lex $P176
-    .const 'Sub' $P167 = "57_1275811471.14938" 
+    .const 'Sub' $P167 = "57_1276996299.39152" 
     capture_lex $P167
-    .const 'Sub' $P160 = "55_1275811471.14938" 
+    .const 'Sub' $P160 = "55_1276996299.39152" 
     capture_lex $P160
-    .const 'Sub' $P151 = "53_1275811471.14938" 
+    .const 'Sub' $P151 = "53_1276996299.39152" 
     capture_lex $P151
-    .const 'Sub' $P144 = "51_1275811471.14938" 
+    .const 'Sub' $P144 = "51_1276996299.39152" 
     capture_lex $P144
-    .const 'Sub' $P135 = "49_1275811471.14938" 
+    .const 'Sub' $P135 = "49_1276996299.39152" 
     capture_lex $P135
-    .const 'Sub' $P128 = "47_1275811471.14938" 
+    .const 'Sub' $P128 = "47_1276996299.39152" 
     capture_lex $P128
-    .const 'Sub' $P121 = "45_1275811471.14938" 
+    .const 'Sub' $P121 = "45_1276996299.39152" 
     capture_lex $P121
-    .const 'Sub' $P111 = "43_1275811471.14938" 
+    .const 'Sub' $P111 = "43_1276996299.39152" 
     capture_lex $P111
-    .const 'Sub' $P103 = "41_1275811471.14938" 
+    .const 'Sub' $P103 = "41_1276996299.39152" 
     capture_lex $P103
-    .const 'Sub' $P93 = "40_1275811471.14938" 
+    .const 'Sub' $P93 = "40_1276996299.39152" 
     capture_lex $P93
-    .const 'Sub' $P87 = "38_1275811471.14938" 
+    .const 'Sub' $P87 = "38_1276996299.39152" 
     capture_lex $P87
-    .const 'Sub' $P82 = "36_1275811471.14938" 
+    .const 'Sub' $P82 = "36_1276996299.39152" 
     capture_lex $P82
-    .const 'Sub' $P74 = "34_1275811471.14938" 
+    .const 'Sub' $P74 = "34_1276996299.39152" 
     capture_lex $P74
-    .const 'Sub' $P68 = "32_1275811471.14938" 
+    .const 'Sub' $P68 = "32_1276996299.39152" 
     capture_lex $P68
-    .const 'Sub' $P62 = "30_1275811471.14938" 
+    .const 'Sub' $P62 = "30_1276996299.39152" 
     capture_lex $P62
-    .const 'Sub' $P56 = "28_1275811471.14938" 
+    .const 'Sub' $P56 = "28_1276996299.39152" 
     capture_lex $P56
-    .const 'Sub' $P23 = "14_1275811471.14938" 
+    .const 'Sub' $P23 = "14_1276996299.39152" 
     capture_lex $P23
-    .const 'Sub' $P15 = "12_1275811471.14938" 
+    .const 'Sub' $P15 = "12_1276996299.39152" 
     capture_lex $P15
     $P0 = find_dynamic_lex "$*CTXSAVE"
     if null $P0 goto ctxsave_done
@@ -1021,17 +1021,17 @@
     $P0."ctxsave"()
   ctxsave_done:
 .annotate 'line', 33
-    .const 'Sub' $P334 = "103_1275811471.14938" 
+    .const 'Sub' $P334 = "103_1276996299.39152" 
     capture_lex $P334
 .annotate 'line', 5
     .return ($P334)
-    .const 'Sub' $P345 = "105_1275811471.14938" 
+    .const 'Sub' $P345 = "105_1276996299.39152" 
     .return ($P345)
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "ws"  :subid("12_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "ws"  :subid("12_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 5
     .local string rx16_tgt
     .local int rx16_pos
@@ -1116,7 +1116,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__ws"  :subid("13_1275811471.14938") :method
+.sub "!PREFIX__ws"  :subid("13_1276996299.39152") :method
 .annotate 'line', 5
     new $P18, "ResizablePMCArray"
     push $P18, ""
@@ -1125,7 +1125,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "termish"  :subid("14_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "termish"  :subid("14_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 5
     .local string rx24_tgt
     .local int rx24_pos
@@ -1135,7 +1135,7 @@
     .local pmc rx24_cur
     (rx24_cur, rx24_pos, rx24_tgt) = self."!cursor_start"()
     rx24_cur."!cursor_debug"("START ", "termish")
-    rx24_cur."!cursor_caparray"("postfixish", "prefixish")
+    rx24_cur."!cursor_caparray"("prefixish", "postfixish")
     .lex unicode:"$\x{a2}", rx24_cur
     .local pmc match
     .lex "$/", match
@@ -1218,7 +1218,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__termish"  :subid("15_1275811471.14938") :method
+.sub "!PREFIX__termish"  :subid("15_1276996299.39152") :method
 .annotate 'line', 5
     new $P26, "ResizablePMCArray"
     push $P26, ""
@@ -1227,7 +1227,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "term"  :subid("16_1275811471.14938") :method
+.sub "term"  :subid("16_1276996299.39152") :method
 .annotate 'line', 13
     $P33 = self."!protoregex"("term")
     .return ($P33)
@@ -1235,7 +1235,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term"  :subid("17_1275811471.14938") :method
+.sub "!PREFIX__term"  :subid("17_1276996299.39152") :method
 .annotate 'line', 13
     $P35 = self."!PREFIX__!protoregex"("term")
     .return ($P35)
@@ -1243,7 +1243,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "infix"  :subid("18_1275811471.14938") :method
+.sub "infix"  :subid("18_1276996299.39152") :method
 .annotate 'line', 14
     $P37 = self."!protoregex"("infix")
     .return ($P37)
@@ -1251,7 +1251,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infix"  :subid("19_1275811471.14938") :method
+.sub "!PREFIX__infix"  :subid("19_1276996299.39152") :method
 .annotate 'line', 14
     $P39 = self."!PREFIX__!protoregex"("infix")
     .return ($P39)
@@ -1259,7 +1259,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "prefix"  :subid("20_1275811471.14938") :method
+.sub "prefix"  :subid("20_1276996299.39152") :method
 .annotate 'line', 15
     $P41 = self."!protoregex"("prefix")
     .return ($P41)
@@ -1267,7 +1267,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefix"  :subid("21_1275811471.14938") :method
+.sub "!PREFIX__prefix"  :subid("21_1276996299.39152") :method
 .annotate 'line', 15
     $P43 = self."!PREFIX__!protoregex"("prefix")
     .return ($P43)
@@ -1275,7 +1275,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postfix"  :subid("22_1275811471.14938") :method
+.sub "postfix"  :subid("22_1276996299.39152") :method
 .annotate 'line', 16
     $P45 = self."!protoregex"("postfix")
     .return ($P45)
@@ -1283,7 +1283,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfix"  :subid("23_1275811471.14938") :method
+.sub "!PREFIX__postfix"  :subid("23_1276996299.39152") :method
 .annotate 'line', 16
     $P47 = self."!PREFIX__!protoregex"("postfix")
     .return ($P47)
@@ -1291,7 +1291,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "circumfix"  :subid("24_1275811471.14938") :method
+.sub "circumfix"  :subid("24_1276996299.39152") :method
 .annotate 'line', 17
     $P49 = self."!protoregex"("circumfix")
     .return ($P49)
@@ -1299,7 +1299,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__circumfix"  :subid("25_1275811471.14938") :method
+.sub "!PREFIX__circumfix"  :subid("25_1276996299.39152") :method
 .annotate 'line', 17
     $P51 = self."!PREFIX__!protoregex"("circumfix")
     .return ($P51)
@@ -1307,7 +1307,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postcircumfix"  :subid("26_1275811471.14938") :method
+.sub "postcircumfix"  :subid("26_1276996299.39152") :method
 .annotate 'line', 18
     $P53 = self."!protoregex"("postcircumfix")
     .return ($P53)
@@ -1315,7 +1315,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postcircumfix"  :subid("27_1275811471.14938") :method
+.sub "!PREFIX__postcircumfix"  :subid("27_1276996299.39152") :method
 .annotate 'line', 18
     $P55 = self."!PREFIX__!protoregex"("postcircumfix")
     .return ($P55)
@@ -1323,7 +1323,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "term:sym<circumfix>"  :subid("28_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "term:sym<circumfix>"  :subid("28_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 5
     .local string rx57_tgt
     .local int rx57_pos
@@ -1382,7 +1382,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__term:sym<circumfix>"  :subid("29_1275811471.14938") :method
+.sub "!PREFIX__term:sym<circumfix>"  :subid("29_1276996299.39152") :method
 .annotate 'line', 5
     $P59 = self."!PREFIX__!subrule"("circumfix", "")
     new $P60, "ResizablePMCArray"
@@ -1392,7 +1392,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "infixish"  :subid("30_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "infixish"  :subid("30_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 5
     .local string rx63_tgt
     .local int rx63_pos
@@ -1451,7 +1451,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__infixish"  :subid("31_1275811471.14938") :method
+.sub "!PREFIX__infixish"  :subid("31_1276996299.39152") :method
 .annotate 'line', 5
     $P65 = self."!PREFIX__!subrule"("infix", "")
     new $P66, "ResizablePMCArray"
@@ -1461,7 +1461,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "prefixish"  :subid("32_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "prefixish"  :subid("32_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 5
     .local string rx69_tgt
     .local int rx69_pos
@@ -1525,7 +1525,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__prefixish"  :subid("33_1275811471.14938") :method
+.sub "!PREFIX__prefixish"  :subid("33_1276996299.39152") :method
 .annotate 'line', 5
     $P71 = self."!PREFIX__!subrule"("prefix", "")
     new $P72, "ResizablePMCArray"
@@ -1535,7 +1535,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "postfixish"  :subid("34_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "postfixish"  :subid("34_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 5
     .local string rx75_tgt
     .local int rx75_pos
@@ -1610,7 +1610,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__postfixish"  :subid("35_1275811471.14938") :method
+.sub "!PREFIX__postfixish"  :subid("35_1276996299.39152") :method
 .annotate 'line', 5
     $P77 = self."!PREFIX__!subrule"("postcircumfix", "")
     $P78 = self."!PREFIX__!subrule"("postfix", "")
@@ -1622,7 +1622,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nullterm"  :subid("36_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "nullterm"  :subid("36_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 5
     .local string rx83_tgt
     .local int rx83_pos
@@ -1674,7 +1674,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm"  :subid("37_1275811471.14938") :method
+.sub "!PREFIX__nullterm"  :subid("37_1276996299.39152") :method
 .annotate 'line', 5
     new $P85, "ResizablePMCArray"
     push $P85, ""
@@ -1683,7 +1683,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "nullterm_alt"  :subid("38_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "nullterm_alt"  :subid("38_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 5
     .local string rx88_tgt
     .local int rx88_pos
@@ -1742,7 +1742,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__nullterm_alt"  :subid("39_1275811471.14938") :method
+.sub "!PREFIX__nullterm_alt"  :subid("39_1276996299.39152") :method
 .annotate 'line', 5
     $P90 = self."!PREFIX__!subrule"("nullterm", "")
     new $P91, "ResizablePMCArray"
@@ -1753,7 +1753,7 @@
 
 .namespace ["HLL";"Grammar"]
 .include "except_types.pasm"
-.sub "nulltermish"  :subid("40_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "nulltermish"  :subid("40_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     new $P95, 'ExceptionHandler'
     set_addr $P95, control_94
@@ -1780,7 +1780,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_delimited"  :subid("41_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "quote_delimited"  :subid("41_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx104_tgt
     .local int rx104_pos
@@ -1863,7 +1863,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_delimited"  :subid("42_1275811471.14938") :method
+.sub "!PREFIX__quote_delimited"  :subid("42_1276996299.39152") :method
 .annotate 'line', 33
     $P106 = self."!PREFIX__!subrule"("starter", "")
     new $P107, "ResizablePMCArray"
@@ -1873,7 +1873,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_atom"  :subid("43_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "quote_atom"  :subid("43_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx112_tgt
     .local int rx112_pos
@@ -1965,7 +1965,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_atom"  :subid("44_1275811471.14938") :method
+.sub "!PREFIX__quote_atom"  :subid("44_1276996299.39152") :method
 .annotate 'line', 33
     new $P114, "ResizablePMCArray"
     push $P114, ""
@@ -1974,7 +1974,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "decint"  :subid("45_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "decint"  :subid("45_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx122_tgt
     .local int rx122_pos
@@ -2047,7 +2047,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__decint"  :subid("46_1275811471.14938") :method
+.sub "!PREFIX__decint"  :subid("46_1276996299.39152") :method
 .annotate 'line', 33
     new $P124, "ResizablePMCArray"
     push $P124, ""
@@ -2056,7 +2056,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "decints"  :subid("47_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "decints"  :subid("47_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx129_tgt
     .local int rx129_pos
@@ -2141,7 +2141,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__decints"  :subid("48_1275811471.14938") :method
+.sub "!PREFIX__decints"  :subid("48_1276996299.39152") :method
 .annotate 'line', 33
     new $P131, "ResizablePMCArray"
     push $P131, ""
@@ -2150,7 +2150,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "hexint"  :subid("49_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "hexint"  :subid("49_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx136_tgt
     .local int rx136_pos
@@ -2232,7 +2232,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexint"  :subid("50_1275811471.14938") :method
+.sub "!PREFIX__hexint"  :subid("50_1276996299.39152") :method
 .annotate 'line', 33
     new $P138, "ResizablePMCArray"
     push $P138, ""
@@ -2241,7 +2241,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "hexints"  :subid("51_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "hexints"  :subid("51_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx145_tgt
     .local int rx145_pos
@@ -2326,7 +2326,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__hexints"  :subid("52_1275811471.14938") :method
+.sub "!PREFIX__hexints"  :subid("52_1276996299.39152") :method
 .annotate 'line', 33
     new $P147, "ResizablePMCArray"
     push $P147, ""
@@ -2335,7 +2335,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "octint"  :subid("53_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "octint"  :subid("53_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx152_tgt
     .local int rx152_pos
@@ -2417,7 +2417,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octint"  :subid("54_1275811471.14938") :method
+.sub "!PREFIX__octint"  :subid("54_1276996299.39152") :method
 .annotate 'line', 33
     new $P154, "ResizablePMCArray"
     push $P154, ""
@@ -2426,7 +2426,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "octints"  :subid("55_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "octints"  :subid("55_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx161_tgt
     .local int rx161_pos
@@ -2511,7 +2511,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__octints"  :subid("56_1275811471.14938") :method
+.sub "!PREFIX__octints"  :subid("56_1276996299.39152") :method
 .annotate 'line', 33
     new $P163, "ResizablePMCArray"
     push $P163, ""
@@ -2520,7 +2520,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "binint"  :subid("57_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "binint"  :subid("57_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx168_tgt
     .local int rx168_pos
@@ -2602,7 +2602,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binint"  :subid("58_1275811471.14938") :method
+.sub "!PREFIX__binint"  :subid("58_1276996299.39152") :method
 .annotate 'line', 33
     new $P170, "ResizablePMCArray"
     push $P170, ""
@@ -2611,7 +2611,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "binints"  :subid("59_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "binints"  :subid("59_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx177_tgt
     .local int rx177_pos
@@ -2696,7 +2696,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__binints"  :subid("60_1275811471.14938") :method
+.sub "!PREFIX__binints"  :subid("60_1276996299.39152") :method
 .annotate 'line', 33
     new $P179, "ResizablePMCArray"
     push $P179, ""
@@ -2705,7 +2705,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "integer"  :subid("61_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "integer"  :subid("61_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx184_tgt
     .local int rx184_pos
@@ -2854,7 +2854,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__integer"  :subid("62_1275811471.14938") :method
+.sub "!PREFIX__integer"  :subid("62_1276996299.39152") :method
 .annotate 'line', 33
     $P186 = self."!PREFIX__!subrule"("decint", "")
     $P187 = self."!PREFIX__!subrule"("decint", "0d")
@@ -2872,7 +2872,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "dec_number"  :subid("63_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "dec_number"  :subid("63_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx196_tgt
     .local int rx196_pos
@@ -3052,7 +3052,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__dec_number"  :subid("64_1275811471.14938") :method
+.sub "!PREFIX__dec_number"  :subid("64_1276996299.39152") :method
 .annotate 'line', 33
     new $P198, "ResizablePMCArray"
     push $P198, ""
@@ -3063,7 +3063,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "escale"  :subid("65_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "escale"  :subid("65_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx209_tgt
     .local int rx209_pos
@@ -3141,7 +3141,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__escale"  :subid("66_1275811471.14938") :method
+.sub "!PREFIX__escale"  :subid("66_1276996299.39152") :method
 .annotate 'line', 33
     new $P211, "ResizablePMCArray"
     push $P211, "e"
@@ -3151,7 +3151,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape"  :subid("67_1275811471.14938") :method
+.sub "quote_escape"  :subid("67_1276996299.39152") :method
 .annotate 'line', 79
     $P216 = self."!protoregex"("quote_escape")
     .return ($P216)
@@ -3159,7 +3159,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape"  :subid("68_1275811471.14938") :method
+.sub "!PREFIX__quote_escape"  :subid("68_1276996299.39152") :method
 .annotate 'line', 79
     $P218 = self."!PREFIX__!protoregex"("quote_escape")
     .return ($P218)
@@ -3167,7 +3167,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<backslash>"  :subid("69_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "quote_escape:sym<backslash>"  :subid("69_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx220_tgt
     .local int rx220_pos
@@ -3230,7 +3230,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<backslash>"  :subid("70_1275811471.14938") :method
+.sub "!PREFIX__quote_escape:sym<backslash>"  :subid("70_1276996299.39152") :method
 .annotate 'line', 33
     new $P222, "ResizablePMCArray"
     push $P222, "\\\\"
@@ -3239,7 +3239,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<stopper>"  :subid("71_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "quote_escape:sym<stopper>"  :subid("71_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx225_tgt
     .local int rx225_pos
@@ -3309,7 +3309,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<stopper>"  :subid("72_1275811471.14938") :method
+.sub "!PREFIX__quote_escape:sym<stopper>"  :subid("72_1276996299.39152") :method
 .annotate 'line', 33
     new $P227, "ResizablePMCArray"
     push $P227, "\\"
@@ -3318,7 +3318,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<bs>"  :subid("73_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "quote_escape:sym<bs>"  :subid("73_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx230_tgt
     .local int rx230_pos
@@ -3381,7 +3381,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<bs>"  :subid("74_1275811471.14938") :method
+.sub "!PREFIX__quote_escape:sym<bs>"  :subid("74_1276996299.39152") :method
 .annotate 'line', 33
     new $P232, "ResizablePMCArray"
     push $P232, "\\b"
@@ -3390,7 +3390,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<nl>"  :subid("75_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "quote_escape:sym<nl>"  :subid("75_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx235_tgt
     .local int rx235_pos
@@ -3453,7 +3453,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<nl>"  :subid("76_1275811471.14938") :method
+.sub "!PREFIX__quote_escape:sym<nl>"  :subid("76_1276996299.39152") :method
 .annotate 'line', 33
     new $P237, "ResizablePMCArray"
     push $P237, "\\n"
@@ -3462,7 +3462,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<cr>"  :subid("77_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "quote_escape:sym<cr>"  :subid("77_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx240_tgt
     .local int rx240_pos
@@ -3525,7 +3525,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<cr>"  :subid("78_1275811471.14938") :method
+.sub "!PREFIX__quote_escape:sym<cr>"  :subid("78_1276996299.39152") :method
 .annotate 'line', 33
     new $P242, "ResizablePMCArray"
     push $P242, "\\r"
@@ -3534,7 +3534,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<tab>"  :subid("79_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "quote_escape:sym<tab>"  :subid("79_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx245_tgt
     .local int rx245_pos
@@ -3597,7 +3597,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<tab>"  :subid("80_1275811471.14938") :method
+.sub "!PREFIX__quote_escape:sym<tab>"  :subid("80_1276996299.39152") :method
 .annotate 'line', 33
     new $P247, "ResizablePMCArray"
     push $P247, "\\t"
@@ -3606,7 +3606,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<ff>"  :subid("81_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "quote_escape:sym<ff>"  :subid("81_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx250_tgt
     .local int rx250_pos
@@ -3669,7 +3669,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<ff>"  :subid("82_1275811471.14938") :method
+.sub "!PREFIX__quote_escape:sym<ff>"  :subid("82_1276996299.39152") :method
 .annotate 'line', 33
     new $P252, "ResizablePMCArray"
     push $P252, "\\f"
@@ -3678,7 +3678,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<esc>"  :subid("83_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "quote_escape:sym<esc>"  :subid("83_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx255_tgt
     .local int rx255_pos
@@ -3741,7 +3741,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<esc>"  :subid("84_1275811471.14938") :method
+.sub "!PREFIX__quote_escape:sym<esc>"  :subid("84_1276996299.39152") :method
 .annotate 'line', 33
     new $P257, "ResizablePMCArray"
     push $P257, "\\e"
@@ -3750,7 +3750,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<hex>"  :subid("85_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "quote_escape:sym<hex>"  :subid("85_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx260_tgt
     .local int rx260_pos
@@ -3849,7 +3849,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<hex>"  :subid("86_1275811471.14938") :method
+.sub "!PREFIX__quote_escape:sym<hex>"  :subid("86_1276996299.39152") :method
 .annotate 'line', 33
     new $P262, "ResizablePMCArray"
     push $P262, unicode:"\\x"
@@ -3858,7 +3858,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<oct>"  :subid("87_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "quote_escape:sym<oct>"  :subid("87_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx266_tgt
     .local int rx266_pos
@@ -3957,7 +3957,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<oct>"  :subid("88_1275811471.14938") :method
+.sub "!PREFIX__quote_escape:sym<oct>"  :subid("88_1276996299.39152") :method
 .annotate 'line', 33
     new $P268, "ResizablePMCArray"
     push $P268, "\\o"
@@ -3966,7 +3966,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<chr>"  :subid("89_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "quote_escape:sym<chr>"  :subid("89_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx272_tgt
     .local int rx272_pos
@@ -4036,7 +4036,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<chr>"  :subid("90_1275811471.14938") :method
+.sub "!PREFIX__quote_escape:sym<chr>"  :subid("90_1276996299.39152") :method
 .annotate 'line', 33
     new $P274, "ResizablePMCArray"
     push $P274, "\\c"
@@ -4045,7 +4045,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<0>"  :subid("91_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "quote_escape:sym<0>"  :subid("91_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx277_tgt
     .local int rx277_pos
@@ -4129,7 +4129,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<0>"  :subid("92_1275811471.14938") :method
+.sub "!PREFIX__quote_escape:sym<0>"  :subid("92_1276996299.39152") :method
 .annotate 'line', 33
     new $P279, "ResizablePMCArray"
     push $P279, "\\0"
@@ -4138,13 +4138,13 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "quote_escape:sym<misc>"  :subid("93_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "quote_escape:sym<misc>"  :subid("93_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
-    .const 'Sub' $P302 = "97_1275811471.14938" 
+    .const 'Sub' $P302 = "97_1276996299.39152" 
     capture_lex $P302
-    .const 'Sub' $P295 = "96_1275811471.14938" 
+    .const 'Sub' $P295 = "96_1276996299.39152" 
     capture_lex $P295
-    .const 'Sub' $P290 = "95_1275811471.14938" 
+    .const 'Sub' $P290 = "95_1276996299.39152" 
     capture_lex $P290
     .local string rx283_tgt
     .local int rx283_pos
@@ -4181,7 +4181,7 @@
     find_lex $P287, unicode:"$\x{a2}"
     $P288 = $P287."MATCH"()
     store_lex "$/", $P288
-    .const 'Sub' $P290 = "95_1275811471.14938" 
+    .const 'Sub' $P290 = "95_1276996299.39152" 
     capture_lex $P290
     $P291 = $P290()
   # rx literal  "\\"
@@ -4207,7 +4207,7 @@
 .annotate 'line', 104
   # rx subrule $P295 subtype=capture negate=
     rx283_cur."!cursor_pos"(rx283_pos)
-    .const 'Sub' $P295 = "96_1275811471.14938" 
+    .const 'Sub' $P295 = "96_1276996299.39152" 
     capture_lex $P295
     $P10 = rx283_cur.$P295()
     unless $P10, rx283_fail
@@ -4241,7 +4241,7 @@
     find_lex $P299, unicode:"$\x{a2}"
     $P300 = $P299."MATCH"()
     store_lex "$/", $P300
-    .const 'Sub' $P302 = "97_1275811471.14938" 
+    .const 'Sub' $P302 = "97_1276996299.39152" 
     capture_lex $P302
     $P312 = $P302()
   alt293_end:
@@ -4287,7 +4287,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<misc>"  :subid("94_1275811471.14938") :method
+.sub "!PREFIX__quote_escape:sym<misc>"  :subid("94_1276996299.39152") :method
 .annotate 'line', 33
     new $P285, "ResizablePMCArray"
     push $P285, ""
@@ -4296,14 +4296,14 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block289"  :anon :subid("95_1275811471.14938") :outer("93_1275811471.14938")
+.sub "_block289"  :anon :subid("95_1276996299.39152") :outer("93_1276996299.39152")
 .annotate 'line', 100
     .return ()
 .end
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block294"  :anon :subid("96_1275811471.14938") :method :outer("93_1275811471.14938")
+.sub "_block294"  :anon :subid("96_1276996299.39152") :method :outer("93_1276996299.39152")
 .annotate 'line', 104
     .local string rx296_tgt
     .local int rx296_pos
@@ -4359,7 +4359,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block301"  :anon :subid("97_1275811471.14938") :outer("93_1275811471.14938")
+.sub "_block301"  :anon :subid("97_1276996299.39152") :outer("93_1276996299.39152")
 .annotate 'line', 105
     find_lex $P303, "$/"
     $P304 = $P303."CURSOR"()
@@ -4382,9 +4382,9 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charname"  :subid("98_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "charname"  :subid("98_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
-    .const 'Sub' $P324 = "100_1275811471.14938" 
+    .const 'Sub' $P324 = "100_1276996299.39152" 
     capture_lex $P324
     .local string rx315_tgt
     .local int rx315_pos
@@ -4463,7 +4463,7 @@
 .annotate 'line', 114
   # rx subrule "before" subtype=zerowidth negate=
     rx315_cur."!cursor_pos"(rx315_pos)
-    .const 'Sub' $P324 = "100_1275811471.14938" 
+    .const 'Sub' $P324 = "100_1276996299.39152" 
     capture_lex $P324
     $P10 = rx315_cur."before"($P324)
     unless $P10, rx315_fail
@@ -4488,7 +4488,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charname"  :subid("99_1275811471.14938") :method
+.sub "!PREFIX__charname"  :subid("99_1276996299.39152") :method
 .annotate 'line', 33
     $P317 = self."!PREFIX__!subrule"("integer", "")
     new $P318, "ResizablePMCArray"
@@ -4550,7 +4550,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block323"  :anon :subid("100_1275811471.14938") :method :outer("98_1275811471.14938")
+.sub "_block323"  :anon :subid("100_1276996299.39152") :method :outer("98_1276996299.39152")
 .annotate 'line', 114
     .local string rx325_tgt
     .local int rx325_pos
@@ -4611,7 +4611,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charnames"  :subid("101_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "charnames"  :subid("101_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx328_tgt
     .local int rx328_pos
@@ -4696,7 +4696,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charnames"  :subid("102_1275811471.14938") :method
+.sub "!PREFIX__charnames"  :subid("102_1276996299.39152") :method
 .annotate 'line', 33
     new $P330, "ResizablePMCArray"
     push $P330, ""
@@ -4705,7 +4705,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "charspec"  :subid("103_1275811471.14938") :method :outer("11_1275811471.14938")
+.sub "charspec"  :subid("103_1276996299.39152") :method :outer("11_1276996299.39152")
 .annotate 'line', 33
     .local string rx335_tgt
     .local int rx335_pos
@@ -4836,7 +4836,7 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "!PREFIX__charspec"  :subid("104_1275811471.14938") :method
+.sub "!PREFIX__charspec"  :subid("104_1276996299.39152") :method
 .annotate 'line', 33
     $P337 = self."!PREFIX__!subrule"("panic", "")
     $P338 = self."!PREFIX__!subrule"("charnames", "[")
@@ -4877,18 +4877,18 @@
 
 
 .namespace ["HLL";"Grammar"]
-.sub "_block344" :load :anon :subid("105_1275811471.14938")
+.sub "_block344" :load :anon :subid("105_1276996299.39152")
 .annotate 'line', 5
-    .const 'Sub' $P346 = "11_1275811471.14938" 
+    .const 'Sub' $P346 = "11_1276996299.39152" 
     $P347 = $P346()
     .return ($P347)
 .end
 
 
 .namespace []
-.sub "_block349" :load :anon :subid("106_1275811471.14938")
+.sub "_block349" :load :anon :subid("106_1276996299.39152")
 .annotate 'line', 1
-    .const 'Sub' $P351 = "10_1275811471.14938" 
+    .const 'Sub' $P351 = "10_1276996299.39152" 
     $P352 = $P351()
     .return ($P352)
 .end
@@ -4896,7 +4896,7 @@
 ### .include 'gen/hllgrammar-actions.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1275811473.30481")
+.sub "_block11"  :anon :subid("10_1276996302.48722")
 .annotate 'line', 0
     get_hll_global $P14, ["HLL";"Actions"], "_block13" 
     capture_lex $P14
@@ -4913,15 +4913,15 @@
     $P627 = $P14()
 .annotate 'line', 1
     .return ($P627)
-    .const 'Sub' $P629 = "55_1275811473.30481" 
+    .const 'Sub' $P629 = "55_1276996302.48722" 
     .return ($P629)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post56") :outer("10_1275811473.30481")
+.sub "" :load :init :subid("post56") :outer("10_1276996302.48722")
 .annotate 'line', 0
-    .const 'Sub' $P12 = "10_1275811473.30481" 
+    .const 'Sub' $P12 = "10_1276996302.48722" 
     .local pmc block
     set block, $P12
     $P632 = get_root_global ["parrot"], "P6metaclass"
@@ -4930,75 +4930,75 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block13"  :subid("11_1275811473.30481") :outer("10_1275811473.30481")
+.sub "_block13"  :subid("11_1276996302.48722") :outer("10_1276996302.48722")
 .annotate 'line', 3
-    .const 'Sub' $P605 = "53_1275811473.30481" 
+    .const 'Sub' $P605 = "53_1276996302.48722" 
     capture_lex $P605
-    .const 'Sub' $P580 = "51_1275811473.30481" 
+    .const 'Sub' $P580 = "51_1276996302.48722" 
     capture_lex $P580
-    .const 'Sub' $P550 = "50_1275811473.30481" 
+    .const 'Sub' $P550 = "50_1276996302.48722" 
     capture_lex $P550
-    .const 'Sub' $P531 = "49_1275811473.30481" 
+    .const 'Sub' $P531 = "49_1276996302.48722" 
     capture_lex $P531
-    .const 'Sub' $P524 = "48_1275811473.30481" 
+    .const 'Sub' $P524 = "48_1276996302.48722" 
     capture_lex $P524
-    .const 'Sub' $P514 = "47_1275811473.30481" 
+    .const 'Sub' $P514 = "47_1276996302.48722" 
     capture_lex $P514
-    .const 'Sub' $P497 = "46_1275811473.30481" 
+    .const 'Sub' $P497 = "46_1276996302.48722" 
     capture_lex $P497
-    .const 'Sub' $P480 = "45_1275811473.30481" 
+    .const 'Sub' $P480 = "45_1276996302.48722" 
     capture_lex $P480
-    .const 'Sub' $P473 = "44_1275811473.30481" 
+    .const 'Sub' $P473 = "44_1276996302.48722" 
     capture_lex $P473
-    .const 'Sub' $P466 = "43_1275811473.30481" 
+    .const 'Sub' $P466 = "43_1276996302.48722" 
     capture_lex $P466
-    .const 'Sub' $P459 = "42_1275811473.30481" 
+    .const 'Sub' $P459 = "42_1276996302.48722" 
     capture_lex $P459
-    .const 'Sub' $P452 = "41_1275811473.30481" 
+    .const 'Sub' $P452 = "41_1276996302.48722" 
     capture_lex $P452
-    .const 'Sub' $P445 = "40_1275811473.30481" 
+    .const 'Sub' $P445 = "40_1276996302.48722" 
     capture_lex $P445
-    .const 'Sub' $P438 = "39_1275811473.30481" 
+    .const 'Sub' $P438 = "39_1276996302.48722" 
     capture_lex $P438
-    .const 'Sub' $P428 = "38_1275811473.30481" 
+    .const 'Sub' $P428 = "38_1276996302.48722" 
     capture_lex $P428
-    .const 'Sub' $P421 = "37_1275811473.30481" 
+    .const 'Sub' $P421 = "37_1276996302.48722" 
     capture_lex $P421
-    .const 'Sub' $P405 = "36_1275811473.30481" 
+    .const 'Sub' $P405 = "36_1276996302.48722" 
     capture_lex $P405
-    .const 'Sub' $P330 = "34_1275811473.30481" 
+    .const 'Sub' $P330 = "34_1276996302.48722" 
     capture_lex $P330
-    .const 'Sub' $P267 = "31_1275811473.30481" 
+    .const 'Sub' $P267 = "31_1276996302.48722" 
     capture_lex $P267
-    .const 'Sub' $P258 = "30_1275811473.30481" 
+    .const 'Sub' $P258 = "30_1276996302.48722" 
     capture_lex $P258
-    .const 'Sub' $P249 = "29_1275811473.30481" 
+    .const 'Sub' $P249 = "29_1276996302.48722" 
     capture_lex $P249
-    .const 'Sub' $P240 = "28_1275811473.30481" 
+    .const 'Sub' $P240 = "28_1276996302.48722" 
     capture_lex $P240
-    .const 'Sub' $P231 = "27_1275811473.30481" 
+    .const 'Sub' $P231 = "27_1276996302.48722" 
     capture_lex $P231
-    .const 'Sub' $P222 = "26_1275811473.30481" 
+    .const 'Sub' $P222 = "26_1276996302.48722" 
     capture_lex $P222
-    .const 'Sub' $P212 = "25_1275811473.30481" 
+    .const 'Sub' $P212 = "25_1276996302.48722" 
     capture_lex $P212
-    .const 'Sub' $P202 = "24_1275811473.30481" 
+    .const 'Sub' $P202 = "24_1276996302.48722" 
     capture_lex $P202
-    .const 'Sub' $P194 = "23_1275811473.30481" 
+    .const 'Sub' $P194 = "23_1276996302.48722" 
     capture_lex $P194
-    .const 'Sub' $P184 = "22_1275811473.30481" 
+    .const 'Sub' $P184 = "22_1276996302.48722" 
     capture_lex $P184
-    .const 'Sub' $P174 = "21_1275811473.30481" 
+    .const 'Sub' $P174 = "21_1276996302.48722" 
     capture_lex $P174
-    .const 'Sub' $P73 = "18_1275811473.30481" 
+    .const 'Sub' $P73 = "18_1276996302.48722" 
     capture_lex $P73
-    .const 'Sub' $P35 = "15_1275811473.30481" 
+    .const 'Sub' $P35 = "15_1276996302.48722" 
     capture_lex $P35
-    .const 'Sub' $P28 = "14_1275811473.30481" 
+    .const 'Sub' $P28 = "14_1276996302.48722" 
     capture_lex $P28
-    .const 'Sub' $P22 = "13_1275811473.30481" 
+    .const 'Sub' $P22 = "13_1276996302.48722" 
     capture_lex $P22
-    .const 'Sub' $P15 = "12_1275811473.30481" 
+    .const 'Sub' $P15 = "12_1276996302.48722" 
     capture_lex $P15
     $P0 = find_dynamic_lex "$*CTXSAVE"
     if null $P0 goto ctxsave_done
@@ -5007,18 +5007,18 @@
     $P0."ctxsave"()
   ctxsave_done:
 .annotate 'line', 225
-    .const 'Sub' $P605 = "53_1275811473.30481" 
+    .const 'Sub' $P605 = "53_1276996302.48722" 
     newclosure $P622, $P605
 .annotate 'line', 3
     .return ($P622)
-    .const 'Sub' $P624 = "54_1275811473.30481" 
+    .const 'Sub' $P624 = "54_1276996302.48722" 
     .return ($P624)
 .end
 
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "string_to_int"  :subid("12_1275811473.30481") :outer("11_1275811473.30481")
+.sub "string_to_int"  :subid("12_1276996302.48722") :outer("11_1276996302.48722")
     .param pmc param_18
     .param pmc param_19
 .annotate 'line', 3
@@ -5072,7 +5072,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "ints_to_string"  :subid("13_1275811473.30481") :outer("11_1275811473.30481")
+.sub "ints_to_string"  :subid("13_1276996302.48722") :outer("11_1276996302.48722")
     .param pmc param_25
 .annotate 'line', 37
     new $P24, 'ExceptionHandler'
@@ -5114,7 +5114,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "CTXSAVE"  :subid("14_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "CTXSAVE"  :subid("14_1276996302.48722") :method :outer("11_1276996302.48722")
 .annotate 'line', 62
     new $P30, 'ExceptionHandler'
     set_addr $P30, control_29
@@ -5144,10 +5144,10 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "SET_BLOCK_OUTER_CTX"  :subid("15_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "SET_BLOCK_OUTER_CTX"  :subid("15_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_38
 .annotate 'line', 76
-    .const 'Sub' $P48 = "16_1275811473.30481" 
+    .const 'Sub' $P48 = "16_1276996302.48722" 
     capture_lex $P48
     new $P37, 'ExceptionHandler'
     set_addr $P37, control_36
@@ -5182,7 +5182,7 @@
     set $P43, $I46
     goto if_44_end
   if_44:
-    .const 'Sub' $P48 = "16_1275811473.30481" 
+    .const 'Sub' $P48 = "16_1276996302.48722" 
     capture_lex $P48
     $P71 = $P48()
     set $P43, $P71
@@ -5199,9 +5199,9 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "_block47"  :anon :subid("16_1275811473.30481") :outer("15_1275811473.30481")
+.sub "_block47"  :anon :subid("16_1276996302.48722") :outer("15_1276996302.48722")
 .annotate 'line', 78
-    .const 'Sub' $P62 = "17_1275811473.30481" 
+    .const 'Sub' $P62 = "17_1276996302.48722" 
     capture_lex $P62
 .annotate 'line', 79
     $P49 = root_new ['parrot';'ResizablePMCArray']
@@ -5231,7 +5231,7 @@
     unless $P56, loop68_done
     shift $P60, $P56
   loop68_redo:
-    .const 'Sub' $P62 = "17_1275811473.30481" 
+    .const 'Sub' $P62 = "17_1276996302.48722" 
     capture_lex $P62
     $P62($P60)
   loop68_next:
@@ -5251,7 +5251,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block61"  :anon :subid("17_1275811473.30481") :outer("16_1275811473.30481")
+.sub "_block61"  :anon :subid("17_1276996302.48722") :outer("16_1276996302.48722")
     .param pmc param_63
 .annotate 'line', 82
     .lex "$_", param_63
@@ -5267,14 +5267,14 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "EXPR"  :subid("18_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "EXPR"  :subid("18_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_76
     .param pmc param_77 :optional
     .param int has_param_77 :opt_flag
 .annotate 'line', 89
-    .const 'Sub' $P156 = "20_1275811473.30481" 
+    .const 'Sub' $P156 = "20_1276996302.48722" 
     capture_lex $P156
-    .const 'Sub' $P123 = "19_1275811473.30481" 
+    .const 'Sub' $P123 = "19_1276996302.48722" 
     capture_lex $P123
     new $P75, 'ExceptionHandler'
     set_addr $P75, control_74
@@ -5409,7 +5409,7 @@
     find_lex $P120, "$past"
     $P121 = $P120."name"()
     if $P121, unless_119_end
-    .const 'Sub' $P123 = "19_1275811473.30481" 
+    .const 'Sub' $P123 = "19_1276996302.48722" 
     capture_lex $P123
     $P123()
   unless_119_end:
@@ -5433,7 +5433,7 @@
     unless $P150, loop167_done
     shift $P154, $P150
   loop167_redo:
-    .const 'Sub' $P156 = "20_1275811473.30481" 
+    .const 'Sub' $P156 = "20_1276996302.48722" 
     capture_lex $P156
     $P156($P154)
   loop167_next:
@@ -5478,7 +5478,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block122"  :anon :subid("19_1275811473.30481") :outer("18_1275811473.30481")
+.sub "_block122"  :anon :subid("19_1276996302.48722") :outer("18_1276996302.48722")
 .annotate 'line', 98
     new $P124, "Undef"
     .lex "$name", $P124
@@ -5528,7 +5528,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block155"  :anon :subid("20_1275811473.30481") :outer("18_1275811473.30481")
+.sub "_block155"  :anon :subid("20_1276996302.48722") :outer("18_1276996302.48722")
     .param pmc param_157
 .annotate 'line', 109
     .lex "$_", param_157
@@ -5552,7 +5552,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<circumfix>"  :subid("21_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "term:sym<circumfix>"  :subid("21_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_177
 .annotate 'line', 114
     new $P176, 'ExceptionHandler'
@@ -5583,7 +5583,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "termish"  :subid("22_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "termish"  :subid("22_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_187
 .annotate 'line', 116
     new $P186, 'ExceptionHandler'
@@ -5614,7 +5614,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "nullterm"  :subid("23_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "nullterm"  :subid("23_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_197
 .annotate 'line', 117
     new $P196, 'ExceptionHandler'
@@ -5637,7 +5637,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "nullterm_alt"  :subid("24_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "nullterm_alt"  :subid("24_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_205
 .annotate 'line', 118
     new $P204, 'ExceptionHandler'
@@ -5668,7 +5668,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "integer"  :subid("25_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "integer"  :subid("25_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_215
 .annotate 'line', 120
     new $P214, 'ExceptionHandler'
@@ -5699,7 +5699,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "dec_number"  :subid("26_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "dec_number"  :subid("26_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_225
 .annotate 'line', 122
     new $P224, 'ExceptionHandler'
@@ -5723,7 +5723,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "decint"  :subid("27_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "decint"  :subid("27_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_234
 .annotate 'line', 124
     new $P233, 'ExceptionHandler'
@@ -5747,7 +5747,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "hexint"  :subid("28_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "hexint"  :subid("28_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_243
 .annotate 'line', 125
     new $P242, 'ExceptionHandler'
@@ -5771,7 +5771,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "octint"  :subid("29_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "octint"  :subid("29_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_252
 .annotate 'line', 126
     new $P251, 'ExceptionHandler'
@@ -5795,7 +5795,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "binint"  :subid("30_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "binint"  :subid("30_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_261
 .annotate 'line', 127
     new $P260, 'ExceptionHandler'
@@ -5819,10 +5819,10 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_EXPR"  :subid("31_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "quote_EXPR"  :subid("31_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_270
 .annotate 'line', 129
-    .const 'Sub' $P286 = "32_1275811473.30481" 
+    .const 'Sub' $P286 = "32_1276996302.48722" 
     capture_lex $P286
     new $P269, 'ExceptionHandler'
     set_addr $P269, control_268
@@ -5854,7 +5854,7 @@
     $P282 = $P280."ACCEPTS"($P281)
     if $P282, if_279
 .annotate 'line', 135
-    .const 'Sub' $P286 = "32_1275811473.30481" 
+    .const 'Sub' $P286 = "32_1276996302.48722" 
     capture_lex $P286
     $P286()
     goto if_279_end
@@ -5894,9 +5894,9 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "_block285"  :anon :subid("32_1275811473.30481") :outer("31_1275811473.30481")
+.sub "_block285"  :anon :subid("32_1276996302.48722") :outer("31_1276996302.48722")
 .annotate 'line', 135
-    .const 'Sub' $P305 = "33_1275811473.30481" 
+    .const 'Sub' $P305 = "33_1276996302.48722" 
     capture_lex $P305
 .annotate 'line', 136
     $P287 = root_new ['parrot';'ResizablePMCArray']
@@ -5909,7 +5909,7 @@
 .annotate 'line', 137
     find_lex $P294, "@words"
     set $N295, $P294
-    isgt $I296, $N295, 1.0
+    isne $I296, $N295, 1.0
     if $I296, if_293
 .annotate 'line', 142
     find_lex $P313, "@words"
@@ -5947,7 +5947,7 @@
     unless $P300, loop310_done
     shift $P303, $P300
   loop310_redo:
-    .const 'Sub' $P305 = "33_1275811473.30481" 
+    .const 'Sub' $P305 = "33_1276996302.48722" 
     capture_lex $P305
     $P305($P303)
   loop310_next:
@@ -5970,7 +5970,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block304"  :anon :subid("33_1275811473.30481") :outer("32_1275811473.30481")
+.sub "_block304"  :anon :subid("33_1276996302.48722") :outer("32_1276996302.48722")
     .param pmc param_306
 .annotate 'line', 139
     .lex "$_", param_306
@@ -5983,10 +5983,10 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_delimited"  :subid("34_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "quote_delimited"  :subid("34_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_333
 .annotate 'line', 152
-    .const 'Sub' $P345 = "35_1275811473.30481" 
+    .const 'Sub' $P345 = "35_1276996302.48722" 
     capture_lex $P345
     new $P332, 'ExceptionHandler'
     set_addr $P332, control_331
@@ -6029,7 +6029,7 @@
     unless $P339, loop377_done
     shift $P343, $P339
   loop377_redo:
-    .const 'Sub' $P345 = "35_1275811473.30481" 
+    .const 'Sub' $P345 = "35_1276996302.48722" 
     capture_lex $P345
     $P345($P343)
   loop377_next:
@@ -6107,7 +6107,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block344"  :anon :subid("35_1275811473.30481") :outer("34_1275811473.30481")
+.sub "_block344"  :anon :subid("35_1276996302.48722") :outer("34_1276996302.48722")
     .param pmc param_347
 .annotate 'line', 156
     new $P346, "Undef"
@@ -6177,7 +6177,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_atom"  :subid("36_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "quote_atom"  :subid("36_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_408
 .annotate 'line', 177
     new $P407, 'ExceptionHandler'
@@ -6227,7 +6227,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<backslash>"  :subid("37_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "quote_escape:sym<backslash>"  :subid("37_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_424
 .annotate 'line', 181
     new $P423, 'ExceptionHandler'
@@ -6249,7 +6249,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<stopper>"  :subid("38_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "quote_escape:sym<stopper>"  :subid("38_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_431
 .annotate 'line', 182
     new $P430, 'ExceptionHandler'
@@ -6280,7 +6280,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<bs>"  :subid("39_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "quote_escape:sym<bs>"  :subid("39_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_441
 .annotate 'line', 184
     new $P440, 'ExceptionHandler'
@@ -6302,7 +6302,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<nl>"  :subid("40_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "quote_escape:sym<nl>"  :subid("40_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_448
 .annotate 'line', 185
     new $P447, 'ExceptionHandler'
@@ -6324,7 +6324,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<cr>"  :subid("41_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "quote_escape:sym<cr>"  :subid("41_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_455
 .annotate 'line', 186
     new $P454, 'ExceptionHandler'
@@ -6346,7 +6346,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<tab>"  :subid("42_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "quote_escape:sym<tab>"  :subid("42_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_462
 .annotate 'line', 187
     new $P461, 'ExceptionHandler'
@@ -6368,7 +6368,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<ff>"  :subid("43_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "quote_escape:sym<ff>"  :subid("43_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_469
 .annotate 'line', 188
     new $P468, 'ExceptionHandler'
@@ -6390,7 +6390,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<esc>"  :subid("44_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "quote_escape:sym<esc>"  :subid("44_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_476
 .annotate 'line', 189
     new $P475, 'ExceptionHandler'
@@ -6412,7 +6412,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<hex>"  :subid("45_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "quote_escape:sym<hex>"  :subid("45_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_483
 .annotate 'line', 191
     new $P482, 'ExceptionHandler'
@@ -6471,7 +6471,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<oct>"  :subid("46_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "quote_escape:sym<oct>"  :subid("46_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_500
 .annotate 'line', 195
     new $P499, 'ExceptionHandler'
@@ -6530,7 +6530,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<chr>"  :subid("47_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "quote_escape:sym<chr>"  :subid("47_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_517
 .annotate 'line', 199
     new $P516, 'ExceptionHandler'
@@ -6563,7 +6563,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<0>"  :subid("48_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "quote_escape:sym<0>"  :subid("48_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_527
 .annotate 'line', 203
     new $P526, 'ExceptionHandler'
@@ -6587,7 +6587,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<misc>"  :subid("49_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "quote_escape:sym<misc>"  :subid("49_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_534
 .annotate 'line', 207
     new $P533, 'ExceptionHandler'
@@ -6646,7 +6646,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "charname"  :subid("50_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "charname"  :subid("50_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_553
 .annotate 'line', 211
     new $P552, 'ExceptionHandler'
@@ -6720,10 +6720,10 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "charnames"  :subid("51_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "charnames"  :subid("51_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_583
 .annotate 'line', 219
-    .const 'Sub' $P592 = "52_1275811473.30481" 
+    .const 'Sub' $P592 = "52_1276996302.48722" 
     capture_lex $P592
     new $P582, 'ExceptionHandler'
     set_addr $P582, control_581
@@ -6757,7 +6757,7 @@
     unless $P586, loop598_done
     shift $P590, $P586
   loop598_redo:
-    .const 'Sub' $P592 = "52_1275811473.30481" 
+    .const 'Sub' $P592 = "52_1276996302.48722" 
     capture_lex $P592
     $P592($P590)
   loop598_next:
@@ -6786,7 +6786,7 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block591"  :anon :subid("52_1275811473.30481") :outer("51_1275811473.30481")
+.sub "_block591"  :anon :subid("52_1276996302.48722") :outer("51_1276996302.48722")
     .param pmc param_593
 .annotate 'line', 221
     .lex "$_", param_593
@@ -6801,7 +6801,7 @@
 
 .namespace ["HLL";"Actions"]
 .include "except_types.pasm"
-.sub "charspec"  :subid("53_1275811473.30481") :method :outer("11_1275811473.30481")
+.sub "charspec"  :subid("53_1276996302.48722") :method :outer("11_1276996302.48722")
     .param pmc param_608
 .annotate 'line', 225
     new $P607, 'ExceptionHandler'
@@ -6851,18 +6851,18 @@
 
 
 .namespace ["HLL";"Actions"]
-.sub "_block623" :load :anon :subid("54_1275811473.30481")
+.sub "_block623" :load :anon :subid("54_1276996302.48722")
 .annotate 'line', 3
-    .const 'Sub' $P625 = "11_1275811473.30481" 
+    .const 'Sub' $P625 = "11_1276996302.48722" 
     $P626 = $P625()
     .return ($P626)
 .end
 
 
 .namespace []
-.sub "_block628" :load :anon :subid("55_1275811473.30481")
+.sub "_block628" :load :anon :subid("55_1276996302.48722")
 .annotate 'line', 1
-    .const 'Sub' $P630 = "10_1275811473.30481" 
+    .const 'Sub' $P630 = "10_1276996302.48722" 
     $P631 = $P630()
     .return ($P631)
 .end
@@ -6870,7 +6870,7 @@
 ### .include 'gen/hllcompiler.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1275811474.72541")
+.sub "_block11"  :anon :subid("10_1276996304.507")
 .annotate 'line', 0
     get_hll_global $P14, ["HLL";"Compiler"], "_block13" 
     capture_lex $P14
@@ -6887,15 +6887,15 @@
     $P492 = $P14()
 .annotate 'line', 1
     .return ($P492)
-    .const 'Sub' $P494 = "35_1275811474.72541" 
+    .const 'Sub' $P494 = "35_1276996304.507" 
     .return ($P494)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post36") :outer("10_1275811474.72541")
+.sub "" :load :init :subid("post36") :outer("10_1276996304.507")
 .annotate 'line', 0
-    .const 'Sub' $P12 = "10_1275811474.72541" 
+    .const 'Sub' $P12 = "10_1276996304.507" 
     .local pmc block
     set block, $P12
 .annotate 'line', 2
@@ -6909,36 +6909,36 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block13"  :subid("11_1275811474.72541") :outer("10_1275811474.72541")
+.sub "_block13"  :subid("11_1276996304.507") :outer("10_1276996304.507")
 .annotate 'line', 6
-    .const 'Sub' $P484 = "34_1275811474.72541" 
+    .const 'Sub' $P484 = "34_1276996304.507" 
     capture_lex $P484
-    .const 'Sub' $P442 = "32_1275811474.72541" 
+    .const 'Sub' $P442 = "32_1276996304.507" 
     capture_lex $P442
-    .const 'Sub' $P298 = "26_1275811474.72541" 
+    .const 'Sub' $P298 = "26_1276996304.507" 
     capture_lex $P298
-    .const 'Sub' $P283 = "25_1275811474.72541" 
+    .const 'Sub' $P283 = "25_1276996304.507" 
     capture_lex $P283
-    .const 'Sub' $P188 = "20_1275811474.72541" 
+    .const 'Sub' $P188 = "20_1276996304.507" 
     capture_lex $P188
-    .const 'Sub' $P153 = "18_1275811474.72541" 
+    .const 'Sub' $P153 = "18_1276996304.507" 
     capture_lex $P153
-    .const 'Sub' $P138 = "17_1275811474.72541" 
+    .const 'Sub' $P138 = "17_1276996304.507" 
     capture_lex $P138
-    .const 'Sub' $P122 = "16_1275811474.72541" 
+    .const 'Sub' $P122 = "16_1276996304.507" 
     capture_lex $P122
-    .const 'Sub' $P33 = "13_1275811474.72541" 
+    .const 'Sub' $P33 = "13_1276996304.507" 
     capture_lex $P33
-    .const 'Sub' $P15 = "12_1275811474.72541" 
+    .const 'Sub' $P15 = "12_1276996304.507" 
     capture_lex $P15
 .annotate 'line', 14
-    .const 'Sub' $P15 = "12_1275811474.72541" 
+    .const 'Sub' $P15 = "12_1276996304.507" 
     newclosure $P31, $P15
     .lex "value_type", $P31
 .annotate 'line', 10
     find_lex $P32, "value_type"
 .annotate 'line', 163
-    .const 'Sub' $P484 = "34_1275811474.72541" 
+    .const 'Sub' $P484 = "34_1276996304.507" 
     newclosure $P490, $P484
 .annotate 'line', 6
     .return ($P490)
@@ -6946,7 +6946,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "" :load :init :subid("post37") :outer("11_1275811474.72541")
+.sub "" :load :init :subid("post37") :outer("11_1276996304.507")
 .annotate 'line', 6
     get_hll_global $P14, ["HLL";"Compiler"], "_block13" 
     .local pmc block
@@ -6959,7 +6959,7 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "value_type"  :subid("12_1275811474.72541") :outer("11_1275811474.72541")
+.sub "value_type"  :subid("12_1276996304.507") :outer("11_1276996304.507")
     .param pmc param_18
 .annotate 'line', 14
     new $P17, 'ExceptionHandler'
@@ -7004,15 +7004,15 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "get_exports"  :subid("13_1275811474.72541") :method :outer("11_1275811474.72541")
+.sub "get_exports"  :subid("13_1276996304.507") :method :outer("11_1276996304.507")
     .param pmc param_36
     .param pmc param_39 :slurpy
     .param pmc param_37 :optional :named("tagset")
     .param int has_param_37 :opt_flag
 .annotate 'line', 20
-    .const 'Sub' $P105 = "15_1275811474.72541" 
+    .const 'Sub' $P105 = "15_1276996304.507" 
     capture_lex $P105
-    .const 'Sub' $P84 = "14_1275811474.72541" 
+    .const 'Sub' $P84 = "14_1276996304.507" 
     capture_lex $P84
     new $P35, 'ExceptionHandler'
     set_addr $P35, control_34
@@ -7118,7 +7118,7 @@
     unless $P100, loop117_done
     shift $P103, $P100
   loop117_redo:
-    .const 'Sub' $P105 = "15_1275811474.72541" 
+    .const 'Sub' $P105 = "15_1276996304.507" 
     capture_lex $P105
     $P105($P103)
   loop117_next:
@@ -7148,7 +7148,7 @@
     unless $P79, loop97_done
     shift $P82, $P79
   loop97_redo:
-    .const 'Sub' $P84 = "14_1275811474.72541" 
+    .const 'Sub' $P84 = "14_1276996304.507" 
     capture_lex $P84
     $P84($P82)
   loop97_next:
@@ -7176,7 +7176,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block104"  :anon :subid("15_1275811474.72541") :outer("13_1275811474.72541")
+.sub "_block104"  :anon :subid("15_1276996304.507") :outer("13_1276996304.507")
     .param pmc param_107
 .annotate 'line', 40
     new $P106, "Undef"
@@ -7208,7 +7208,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block83"  :anon :subid("14_1275811474.72541") :outer("13_1275811474.72541")
+.sub "_block83"  :anon :subid("14_1276996304.507") :outer("13_1276996304.507")
     .param pmc param_86
 .annotate 'line', 34
     new $P85, "Undef"
@@ -7248,7 +7248,7 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "get_module"  :subid("16_1275811474.72541") :method :outer("11_1275811474.72541")
+.sub "get_module"  :subid("16_1276996304.507") :method :outer("11_1276996304.507")
     .param pmc param_125
 .annotate 'line', 47
     new $P124, 'ExceptionHandler'
@@ -7289,7 +7289,7 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "language"  :subid("17_1275811474.72541") :method :outer("11_1275811474.72541")
+.sub "language"  :subid("17_1276996304.507") :method :outer("11_1276996304.507")
     .param pmc param_141 :optional
     .param int has_param_141 :opt_flag
 .annotate 'line', 53
@@ -7334,10 +7334,10 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "load_module"  :subid("18_1275811474.72541") :method :outer("11_1275811474.72541")
+.sub "load_module"  :subid("18_1276996304.507") :method :outer("11_1276996304.507")
     .param pmc param_156
 .annotate 'line', 61
-    .const 'Sub' $P166 = "19_1275811474.72541" 
+    .const 'Sub' $P166 = "19_1276996304.507" 
     capture_lex $P166
     new $P155, 'ExceptionHandler'
     set_addr $P155, control_154
@@ -7364,7 +7364,7 @@
     assign $P164, 0
     store_lex "$loaded", $P164
 .annotate 'line', 64
-    .const 'Sub' $P166 = "19_1275811474.72541" 
+    .const 'Sub' $P166 = "19_1276996304.507" 
     capture_lex $P166
     $P166()
 .annotate 'line', 65
@@ -7394,7 +7394,7 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "_block165"  :anon :subid("19_1275811474.72541") :outer("18_1275811474.72541")
+.sub "_block165"  :anon :subid("19_1276996304.507") :outer("18_1276996304.507")
 .annotate 'line', 64
     new $P173, 'ExceptionHandler'
     set_addr $P173, control_172
@@ -7428,11 +7428,11 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "import"  :subid("20_1275811474.72541") :method :outer("11_1275811474.72541")
+.sub "import"  :subid("20_1276996304.507") :method :outer("11_1276996304.507")
     .param pmc param_191
     .param pmc param_192
 .annotate 'line', 69
-    .const 'Sub' $P198 = "21_1275811474.72541" 
+    .const 'Sub' $P198 = "21_1276996304.507" 
     capture_lex $P198
     new $P190, 'ExceptionHandler'
     set_addr $P190, control_189
@@ -7454,7 +7454,7 @@
     unless $P193, loop279_done
     shift $P196, $P193
   loop279_redo:
-    .const 'Sub' $P198 = "21_1275811474.72541" 
+    .const 'Sub' $P198 = "21_1276996304.507" 
     capture_lex $P198
     $P198($P196)
   loop279_next:
@@ -7480,14 +7480,14 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "_block197"  :anon :subid("21_1275811474.72541") :outer("20_1275811474.72541")
+.sub "_block197"  :anon :subid("21_1276996304.507") :outer("20_1276996304.507")
     .param pmc param_201
 .annotate 'line', 70
-    .const 'Sub' $P268 = "24_1275811474.72541" 
+    .const 'Sub' $P268 = "24_1276996304.507" 
     capture_lex $P268
-    .const 'Sub' $P248 = "23_1275811474.72541" 
+    .const 'Sub' $P248 = "23_1276996304.507" 
     capture_lex $P248
-    .const 'Sub' $P219 = "22_1275811474.72541" 
+    .const 'Sub' $P219 = "22_1276996304.507" 
     capture_lex $P219
 .annotate 'line', 71
     new $P199, "Undef"
@@ -7535,7 +7535,7 @@
     unless $P263, loop276_done
     shift $P266, $P263
   loop276_redo:
-    .const 'Sub' $P268 = "24_1275811474.72541" 
+    .const 'Sub' $P268 = "24_1276996304.507" 
     capture_lex $P268
     $P268($P266)
   loop276_next:
@@ -7567,7 +7567,7 @@
     unless $P243, loop260_done
     shift $P246, $P243
   loop260_redo:
-    .const 'Sub' $P248 = "23_1275811474.72541" 
+    .const 'Sub' $P248 = "23_1276996304.507" 
     capture_lex $P248
     $P248($P246)
   loop260_next:
@@ -7601,7 +7601,7 @@
     unless $P214, loop232_done
     shift $P217, $P214
   loop232_redo:
-    .const 'Sub' $P219 = "22_1275811474.72541" 
+    .const 'Sub' $P219 = "22_1276996304.507" 
     capture_lex $P219
     $P219($P217)
   loop232_next:
@@ -7624,7 +7624,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block267"  :anon :subid("24_1275811474.72541") :outer("21_1275811474.72541")
+.sub "_block267"  :anon :subid("24_1276996304.507") :outer("21_1276996304.507")
     .param pmc param_269
 .annotate 'line', 80
     .lex "$_", param_269
@@ -7644,7 +7644,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block247"  :anon :subid("23_1275811474.72541") :outer("21_1275811474.72541")
+.sub "_block247"  :anon :subid("23_1276996304.507") :outer("21_1276996304.507")
     .param pmc param_249
 .annotate 'line', 77
     .lex "$_", param_249
@@ -7664,7 +7664,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block218"  :anon :subid("22_1275811474.72541") :outer("21_1275811474.72541")
+.sub "_block218"  :anon :subid("22_1276996304.507") :outer("21_1276996304.507")
     .param pmc param_220
 .annotate 'line', 74
     .lex "$_", param_220
@@ -7686,7 +7686,7 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "autoprint"  :subid("25_1275811474.72541") :method :outer("11_1275811474.72541")
+.sub "autoprint"  :subid("25_1276996304.507") :method :outer("11_1276996304.507")
     .param pmc param_286
 .annotate 'line', 85
     new $P285, 'ExceptionHandler'
@@ -7730,10 +7730,10 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "interactive"  :subid("26_1275811474.72541") :method :outer("11_1275811474.72541")
+.sub "interactive"  :subid("26_1276996304.507") :method :outer("11_1276996304.507")
     .param pmc param_301 :slurpy :named
 .annotate 'line', 90
-    .const 'Sub' $P331 = "27_1275811474.72541" 
+    .const 'Sub' $P331 = "27_1276996304.507" 
     capture_lex $P331
     new $P300, 'ExceptionHandler'
     set_addr $P300, control_299
@@ -7815,7 +7815,7 @@
     assign $P329, 1
     unless $P329, loop438_done
   loop438_redo:
-    .const 'Sub' $P331 = "27_1275811474.72541" 
+    .const 'Sub' $P331 = "27_1276996304.507" 
     capture_lex $P331
     $P331()
   loop438_next:
@@ -7840,9 +7840,9 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "_block330"  :anon :subid("27_1275811474.72541") :outer("26_1275811474.72541")
+.sub "_block330"  :anon :subid("27_1276996304.507") :outer("26_1276996304.507")
 .annotate 'line', 101
-    .const 'Sub' $P367 = "28_1275811474.72541" 
+    .const 'Sub' $P367 = "28_1276996304.507" 
     capture_lex $P367
 .annotate 'line', 104
     new $P332, "Undef"
@@ -7924,7 +7924,7 @@
     set $P363, $P365
     goto if_364_end
   if_364:
-    .const 'Sub' $P367 = "28_1275811474.72541" 
+    .const 'Sub' $P367 = "28_1276996304.507" 
     capture_lex $P367
     $P437 = $P367()
     set $P363, $P437
@@ -7936,11 +7936,11 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "_block366"  :anon :subid("28_1275811474.72541") :outer("27_1275811474.72541")
+.sub "_block366"  :anon :subid("28_1276996304.507") :outer("27_1276996304.507")
 .annotate 'line', 116
-    .const 'Sub' $P405 = "31_1275811474.72541" 
+    .const 'Sub' $P405 = "31_1276996304.507" 
     capture_lex $P405
-    .const 'Sub' $P373 = "29_1275811474.72541" 
+    .const 'Sub' $P373 = "29_1276996304.507" 
     capture_lex $P373
 .annotate 'line', 118
     new $P368, "Undef"
@@ -7951,7 +7951,7 @@
     store_lex "$code", $P370
     find_lex $P371, "$output"
 .annotate 'line', 119
-    .const 'Sub' $P373 = "29_1275811474.72541" 
+    .const 'Sub' $P373 = "29_1276996304.507" 
     capture_lex $P373
     $P373()
 .annotate 'line', 126
@@ -7984,7 +7984,7 @@
     unless $P399, loop412_done
     shift $P403, $P399
   loop412_redo:
-    .const 'Sub' $P405 = "31_1275811474.72541" 
+    .const 'Sub' $P405 = "31_1276996304.507" 
     capture_lex $P405
     $P405($P403)
   loop412_next:
@@ -8049,9 +8049,9 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "_block372"  :anon :subid("29_1275811474.72541") :outer("28_1275811474.72541")
+.sub "_block372"  :anon :subid("29_1276996304.507") :outer("28_1276996304.507")
 .annotate 'line', 119
-    .const 'Sub' $P385 = "30_1275811474.72541" 
+    .const 'Sub' $P385 = "30_1276996304.507" 
     capture_lex $P385
     new $P381, 'ExceptionHandler'
     set_addr $P381, control_380
@@ -8071,7 +8071,7 @@
 .annotate 'line', 121
     .local pmc exception 
     .get_results (exception) 
-    .const 'Sub' $P385 = "30_1275811474.72541" 
+    .const 'Sub' $P385 = "30_1276996304.507" 
     newclosure $P393, $P385
     $P393(exception)
     new $P394, 'Integer'
@@ -8091,7 +8091,7 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "_block384"  :anon :subid("30_1275811474.72541") :outer("29_1275811474.72541")
+.sub "_block384"  :anon :subid("30_1276996304.507") :outer("29_1276996304.507")
     .param pmc param_386
 .annotate 'line', 121
     .lex "$_", param_386
@@ -8113,7 +8113,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block404"  :anon :subid("31_1275811474.72541") :outer("28_1275811474.72541")
+.sub "_block404"  :anon :subid("31_1276996304.507") :outer("28_1276996304.507")
     .param pmc param_406
 .annotate 'line', 127
     .lex "$_", param_406
@@ -8135,12 +8135,12 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "eval"  :subid("32_1275811474.72541") :method :outer("11_1275811474.72541")
+.sub "eval"  :subid("32_1276996304.507") :method :outer("11_1276996304.507")
     .param pmc param_445
     .param pmc param_446 :slurpy
     .param pmc param_447 :slurpy :named
 .annotate 'line', 144
-    .const 'Sub' $P466 = "33_1275811474.72541" 
+    .const 'Sub' $P466 = "33_1276996304.507" 
     capture_lex $P466
     new $P444, 'ExceptionHandler'
     set_addr $P444, control_443
@@ -8187,7 +8187,7 @@
     set $P455, $I464
   if_456_end:
     unless $P455, if_454_end
-    .const 'Sub' $P466 = "33_1275811474.72541" 
+    .const 'Sub' $P466 = "33_1276996304.507" 
     capture_lex $P466
     $P466()
   if_454_end:
@@ -8204,7 +8204,7 @@
 
 
 .namespace ["HLL";"Compiler"]
-.sub "_block465"  :anon :subid("33_1275811474.72541") :outer("32_1275811474.72541")
+.sub "_block465"  :anon :subid("33_1276996304.507") :outer("32_1276996304.507")
 .annotate 'line', 150
     new $P467, "Undef"
     .lex "$outer_ctx", $P467
@@ -8258,7 +8258,7 @@
 
 .namespace ["HLL";"Compiler"]
 .include "except_types.pasm"
-.sub "ctxsave"  :subid("34_1275811474.72541") :method :outer("11_1275811474.72541")
+.sub "ctxsave"  :subid("34_1276996304.507") :method :outer("11_1276996304.507")
 .annotate 'line', 163
     new $P486, 'ExceptionHandler'
     set_addr $P486, control_485
@@ -8286,9 +8286,9 @@
 
 
 .namespace []
-.sub "_block493" :load :anon :subid("35_1275811474.72541")
+.sub "_block493" :load :anon :subid("35_1276996304.507")
 .annotate 'line', 1
-    .const 'Sub' $P495 = "10_1275811474.72541" 
+    .const 'Sub' $P495 = "10_1276996304.507" 
     $P496 = $P495()
     .return ($P496)
 .end

Modified: branches/gsoc_past_optimization/ext/nqp-rx/src/stage0/NQP-s0.pir
==============================================================================
--- branches/gsoc_past_optimization/ext/nqp-rx/src/stage0/NQP-s0.pir	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/ext/nqp-rx/src/stage0/NQP-s0.pir	Wed Jun 23 00:34:17 2010	(r47770)
@@ -15,7 +15,7 @@
 ### .include 'gen/nqp-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1275811487.95429")
+.sub "_block11"  :anon :subid("10_1276996322.81157")
 .annotate 'line', 0
     get_hll_global $P14, ["NQP";"Grammar"], "_block13" 
     capture_lex $P14
@@ -32,15 +32,15 @@
     $P1424 = $P14()
 .annotate 'line', 1
     .return ($P1424)
-    .const 'Sub' $P1426 = "363_1275811487.95429" 
+    .const 'Sub' $P1426 = "363_1276996322.81157" 
     .return ($P1426)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post364") :outer("10_1275811487.95429")
+.sub "" :load :init :subid("post364") :outer("10_1276996322.81157")
 .annotate 'line', 0
-    .const 'Sub' $P12 = "10_1275811487.95429" 
+    .const 'Sub' $P12 = "10_1276996322.81157" 
     .local pmc block
     set block, $P12
     $P1429 = get_root_global ["parrot"], "P6metaclass"
@@ -49,313 +49,313 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block13"  :subid("11_1275811487.95429") :outer("10_1275811487.95429")
+.sub "_block13"  :subid("11_1276996322.81157") :outer("10_1276996322.81157")
 .annotate 'line', 4
     get_hll_global $P1340, ["NQP";"Regex"], "_block1339" 
     capture_lex $P1340
-    .const 'Sub' $P1326 = "340_1275811487.95429" 
+    .const 'Sub' $P1326 = "340_1276996322.81157" 
     capture_lex $P1326
-    .const 'Sub' $P1320 = "338_1275811487.95429" 
+    .const 'Sub' $P1320 = "338_1276996322.81157" 
     capture_lex $P1320
-    .const 'Sub' $P1314 = "336_1275811487.95429" 
+    .const 'Sub' $P1314 = "336_1276996322.81157" 
     capture_lex $P1314
-    .const 'Sub' $P1308 = "334_1275811487.95429" 
+    .const 'Sub' $P1308 = "334_1276996322.81157" 
     capture_lex $P1308
-    .const 'Sub' $P1302 = "332_1275811487.95429" 
+    .const 'Sub' $P1302 = "332_1276996322.81157" 
     capture_lex $P1302
-    .const 'Sub' $P1296 = "330_1275811487.95429" 
+    .const 'Sub' $P1296 = "330_1276996322.81157" 
     capture_lex $P1296
-    .const 'Sub' $P1289 = "328_1275811487.95429" 
+    .const 'Sub' $P1289 = "328_1276996322.81157" 
     capture_lex $P1289
-    .const 'Sub' $P1282 = "326_1275811487.95429" 
+    .const 'Sub' $P1282 = "326_1276996322.81157" 
     capture_lex $P1282
-    .const 'Sub' $P1275 = "324_1275811487.95429" 
+    .const 'Sub' $P1275 = "324_1276996322.81157" 
     capture_lex $P1275
-    .const 'Sub' $P1268 = "322_1275811487.95429" 
+    .const 'Sub' $P1268 = "322_1276996322.81157" 
     capture_lex $P1268
-    .const 'Sub' $P1262 = "320_1275811487.95429" 
+    .const 'Sub' $P1262 = "320_1276996322.81157" 
     capture_lex $P1262
-    .const 'Sub' $P1255 = "318_1275811487.95429" 
+    .const 'Sub' $P1255 = "318_1276996322.81157" 
     capture_lex $P1255
-    .const 'Sub' $P1248 = "316_1275811487.95429" 
+    .const 'Sub' $P1248 = "316_1276996322.81157" 
     capture_lex $P1248
-    .const 'Sub' $P1241 = "314_1275811487.95429" 
+    .const 'Sub' $P1241 = "314_1276996322.81157" 
     capture_lex $P1241
-    .const 'Sub' $P1234 = "312_1275811487.95429" 
+    .const 'Sub' $P1234 = "312_1276996322.81157" 
     capture_lex $P1234
-    .const 'Sub' $P1227 = "310_1275811487.95429" 
+    .const 'Sub' $P1227 = "310_1276996322.81157" 
     capture_lex $P1227
-    .const 'Sub' $P1220 = "308_1275811487.95429" 
+    .const 'Sub' $P1220 = "308_1276996322.81157" 
     capture_lex $P1220
-    .const 'Sub' $P1213 = "306_1275811487.95429" 
+    .const 'Sub' $P1213 = "306_1276996322.81157" 
     capture_lex $P1213
-    .const 'Sub' $P1206 = "304_1275811487.95429" 
+    .const 'Sub' $P1206 = "304_1276996322.81157" 
     capture_lex $P1206
-    .const 'Sub' $P1199 = "302_1275811487.95429" 
+    .const 'Sub' $P1199 = "302_1276996322.81157" 
     capture_lex $P1199
-    .const 'Sub' $P1192 = "300_1275811487.95429" 
+    .const 'Sub' $P1192 = "300_1276996322.81157" 
     capture_lex $P1192
-    .const 'Sub' $P1185 = "298_1275811487.95429" 
+    .const 'Sub' $P1185 = "298_1276996322.81157" 
     capture_lex $P1185
-    .const 'Sub' $P1178 = "296_1275811487.95429" 
+    .const 'Sub' $P1178 = "296_1276996322.81157" 
     capture_lex $P1178
-    .const 'Sub' $P1171 = "294_1275811487.95429" 
+    .const 'Sub' $P1171 = "294_1276996322.81157" 
     capture_lex $P1171
-    .const 'Sub' $P1164 = "292_1275811487.95429" 
+    .const 'Sub' $P1164 = "292_1276996322.81157" 
     capture_lex $P1164
-    .const 'Sub' $P1157 = "290_1275811487.95429" 
+    .const 'Sub' $P1157 = "290_1276996322.81157" 
     capture_lex $P1157
-    .const 'Sub' $P1150 = "288_1275811487.95429" 
+    .const 'Sub' $P1150 = "288_1276996322.81157" 
     capture_lex $P1150
-    .const 'Sub' $P1143 = "286_1275811487.95429" 
+    .const 'Sub' $P1143 = "286_1276996322.81157" 
     capture_lex $P1143
-    .const 'Sub' $P1136 = "284_1275811487.95429" 
+    .const 'Sub' $P1136 = "284_1276996322.81157" 
     capture_lex $P1136
-    .const 'Sub' $P1129 = "282_1275811487.95429" 
+    .const 'Sub' $P1129 = "282_1276996322.81157" 
     capture_lex $P1129
-    .const 'Sub' $P1122 = "280_1275811487.95429" 
+    .const 'Sub' $P1122 = "280_1276996322.81157" 
     capture_lex $P1122
-    .const 'Sub' $P1115 = "278_1275811487.95429" 
+    .const 'Sub' $P1115 = "278_1276996322.81157" 
     capture_lex $P1115
-    .const 'Sub' $P1108 = "276_1275811487.95429" 
+    .const 'Sub' $P1108 = "276_1276996322.81157" 
     capture_lex $P1108
-    .const 'Sub' $P1101 = "274_1275811487.95429" 
+    .const 'Sub' $P1101 = "274_1276996322.81157" 
     capture_lex $P1101
-    .const 'Sub' $P1094 = "272_1275811487.95429" 
+    .const 'Sub' $P1094 = "272_1276996322.81157" 
     capture_lex $P1094
-    .const 'Sub' $P1087 = "270_1275811487.95429" 
+    .const 'Sub' $P1087 = "270_1276996322.81157" 
     capture_lex $P1087
-    .const 'Sub' $P1080 = "268_1275811487.95429" 
+    .const 'Sub' $P1080 = "268_1276996322.81157" 
     capture_lex $P1080
-    .const 'Sub' $P1074 = "266_1275811487.95429" 
+    .const 'Sub' $P1074 = "266_1276996322.81157" 
     capture_lex $P1074
-    .const 'Sub' $P1067 = "264_1275811487.95429" 
+    .const 'Sub' $P1067 = "264_1276996322.81157" 
     capture_lex $P1067
-    .const 'Sub' $P1060 = "262_1275811487.95429" 
+    .const 'Sub' $P1060 = "262_1276996322.81157" 
     capture_lex $P1060
-    .const 'Sub' $P1053 = "260_1275811487.95429" 
+    .const 'Sub' $P1053 = "260_1276996322.81157" 
     capture_lex $P1053
-    .const 'Sub' $P1046 = "258_1275811487.95429" 
+    .const 'Sub' $P1046 = "258_1276996322.81157" 
     capture_lex $P1046
-    .const 'Sub' $P1039 = "256_1275811487.95429" 
+    .const 'Sub' $P1039 = "256_1276996322.81157" 
     capture_lex $P1039
-    .const 'Sub' $P1032 = "254_1275811487.95429" 
+    .const 'Sub' $P1032 = "254_1276996322.81157" 
     capture_lex $P1032
-    .const 'Sub' $P1025 = "252_1275811487.95429" 
+    .const 'Sub' $P1025 = "252_1276996322.81157" 
     capture_lex $P1025
-    .const 'Sub' $P1019 = "250_1275811487.95429" 
+    .const 'Sub' $P1019 = "250_1276996322.81157" 
     capture_lex $P1019
-    .const 'Sub' $P1013 = "248_1275811487.95429" 
+    .const 'Sub' $P1013 = "248_1276996322.81157" 
     capture_lex $P1013
-    .const 'Sub' $P1008 = "246_1275811487.95429" 
+    .const 'Sub' $P1008 = "246_1276996322.81157" 
     capture_lex $P1008
-    .const 'Sub' $P1002 = "244_1275811487.95429" 
+    .const 'Sub' $P1002 = "244_1276996322.81157" 
     capture_lex $P1002
-    .const 'Sub' $P996 = "242_1275811487.95429" 
+    .const 'Sub' $P996 = "242_1276996322.81157" 
     capture_lex $P996
-    .const 'Sub' $P991 = "240_1275811487.95429" 
+    .const 'Sub' $P991 = "240_1276996322.81157" 
     capture_lex $P991
-    .const 'Sub' $P986 = "238_1275811487.95429" 
+    .const 'Sub' $P986 = "238_1276996322.81157" 
     capture_lex $P986
-    .const 'Sub' $P978 = "236_1275811487.95429" 
+    .const 'Sub' $P978 = "236_1276996322.81157" 
     capture_lex $P978
-    .const 'Sub' $P970 = "234_1275811487.95429" 
+    .const 'Sub' $P970 = "234_1276996322.81157" 
     capture_lex $P970
-    .const 'Sub' $P965 = "232_1275811487.95429" 
+    .const 'Sub' $P965 = "232_1276996322.81157" 
     capture_lex $P965
-    .const 'Sub' $P960 = "230_1275811487.95429" 
+    .const 'Sub' $P960 = "230_1276996322.81157" 
     capture_lex $P960
-    .const 'Sub' $P955 = "228_1275811487.95429" 
+    .const 'Sub' $P955 = "228_1276996322.81157" 
     capture_lex $P955
-    .const 'Sub' $P947 = "226_1275811487.95429" 
+    .const 'Sub' $P947 = "226_1276996322.81157" 
     capture_lex $P947
-    .const 'Sub' $P939 = "224_1275811487.95429" 
+    .const 'Sub' $P939 = "224_1276996322.81157" 
     capture_lex $P939
-    .const 'Sub' $P934 = "222_1275811487.95429" 
+    .const 'Sub' $P934 = "222_1276996322.81157" 
     capture_lex $P934
-    .const 'Sub' $P929 = "220_1275811487.95429" 
+    .const 'Sub' $P929 = "220_1276996322.81157" 
     capture_lex $P929
-    .const 'Sub' $P924 = "218_1275811487.95429" 
+    .const 'Sub' $P924 = "218_1276996322.81157" 
     capture_lex $P924
-    .const 'Sub' $P918 = "216_1275811487.95429" 
+    .const 'Sub' $P918 = "216_1276996322.81157" 
     capture_lex $P918
-    .const 'Sub' $P912 = "214_1275811487.95429" 
+    .const 'Sub' $P912 = "214_1276996322.81157" 
     capture_lex $P912
-    .const 'Sub' $P906 = "212_1275811487.95429" 
+    .const 'Sub' $P906 = "212_1276996322.81157" 
     capture_lex $P906
-    .const 'Sub' $P900 = "210_1275811487.95429" 
+    .const 'Sub' $P900 = "210_1276996322.81157" 
     capture_lex $P900
-    .const 'Sub' $P894 = "208_1275811487.95429" 
+    .const 'Sub' $P894 = "208_1276996322.81157" 
     capture_lex $P894
-    .const 'Sub' $P889 = "206_1275811487.95429" 
+    .const 'Sub' $P889 = "206_1276996322.81157" 
     capture_lex $P889
-    .const 'Sub' $P884 = "204_1275811487.95429" 
+    .const 'Sub' $P884 = "204_1276996322.81157" 
     capture_lex $P884
-    .const 'Sub' $P871 = "200_1275811487.95429" 
+    .const 'Sub' $P871 = "200_1276996322.81157" 
     capture_lex $P871
-    .const 'Sub' $P863 = "198_1275811487.95429" 
+    .const 'Sub' $P863 = "198_1276996322.81157" 
     capture_lex $P863
-    .const 'Sub' $P857 = "196_1275811487.95429" 
+    .const 'Sub' $P857 = "196_1276996322.81157" 
     capture_lex $P857
-    .const 'Sub' $P850 = "194_1275811487.95429" 
+    .const 'Sub' $P850 = "194_1276996322.81157" 
     capture_lex $P850
-    .const 'Sub' $P844 = "192_1275811487.95429" 
+    .const 'Sub' $P844 = "192_1276996322.81157" 
     capture_lex $P844
-    .const 'Sub' $P836 = "190_1275811487.95429" 
+    .const 'Sub' $P836 = "190_1276996322.81157" 
     capture_lex $P836
-    .const 'Sub' $P828 = "188_1275811487.95429" 
+    .const 'Sub' $P828 = "188_1276996322.81157" 
     capture_lex $P828
-    .const 'Sub' $P822 = "186_1275811487.95429" 
+    .const 'Sub' $P822 = "186_1276996322.81157" 
     capture_lex $P822
-    .const 'Sub' $P816 = "184_1275811487.95429" 
+    .const 'Sub' $P816 = "184_1276996322.81157" 
     capture_lex $P816
-    .const 'Sub' $P801 = "180_1275811487.95429" 
+    .const 'Sub' $P801 = "180_1276996322.81157" 
     capture_lex $P801
-    .const 'Sub' $P763 = "178_1275811487.95429" 
+    .const 'Sub' $P763 = "178_1276996322.81157" 
     capture_lex $P763
-    .const 'Sub' $P754 = "176_1275811487.95429" 
+    .const 'Sub' $P754 = "176_1276996322.81157" 
     capture_lex $P754
-    .const 'Sub' $P748 = "174_1275811487.95429" 
+    .const 'Sub' $P748 = "174_1276996322.81157" 
     capture_lex $P748
-    .const 'Sub' $P738 = "172_1275811487.95429" 
+    .const 'Sub' $P738 = "172_1276996322.81157" 
     capture_lex $P738
-    .const 'Sub' $P724 = "170_1275811487.95429" 
+    .const 'Sub' $P724 = "170_1276996322.81157" 
     capture_lex $P724
-    .const 'Sub' $P715 = "168_1275811487.95429" 
+    .const 'Sub' $P715 = "168_1276996322.81157" 
     capture_lex $P715
-    .const 'Sub' $P707 = "166_1275811487.95429" 
+    .const 'Sub' $P707 = "166_1276996322.81157" 
     capture_lex $P707
-    .const 'Sub' $P697 = "164_1275811487.95429" 
+    .const 'Sub' $P697 = "164_1276996322.81157" 
     capture_lex $P697
-    .const 'Sub' $P673 = "160_1275811487.95429" 
+    .const 'Sub' $P673 = "160_1276996322.81157" 
     capture_lex $P673
-    .const 'Sub' $P648 = "158_1275811487.95429" 
+    .const 'Sub' $P648 = "158_1276996322.81157" 
     capture_lex $P648
-    .const 'Sub' $P641 = "156_1275811487.95429" 
+    .const 'Sub' $P641 = "156_1276996322.81157" 
     capture_lex $P641
-    .const 'Sub' $P634 = "154_1275811487.95429" 
+    .const 'Sub' $P634 = "154_1276996322.81157" 
     capture_lex $P634
-    .const 'Sub' $P624 = "150_1275811487.95429" 
+    .const 'Sub' $P624 = "150_1276996322.81157" 
     capture_lex $P624
-    .const 'Sub' $P616 = "148_1275811487.95429" 
+    .const 'Sub' $P616 = "148_1276996322.81157" 
     capture_lex $P616
-    .const 'Sub' $P610 = "146_1275811487.95429" 
+    .const 'Sub' $P610 = "146_1276996322.81157" 
     capture_lex $P610
-    .const 'Sub' $P597 = "144_1275811487.95429" 
+    .const 'Sub' $P597 = "144_1276996322.81157" 
     capture_lex $P597
-    .const 'Sub' $P590 = "142_1275811487.95429" 
+    .const 'Sub' $P590 = "142_1276996322.81157" 
     capture_lex $P590
-    .const 'Sub' $P583 = "140_1275811487.95429" 
+    .const 'Sub' $P583 = "140_1276996322.81157" 
     capture_lex $P583
-    .const 'Sub' $P576 = "138_1275811487.95429" 
+    .const 'Sub' $P576 = "138_1276996322.81157" 
     capture_lex $P576
-    .const 'Sub' $P548 = "134_1275811487.95429" 
+    .const 'Sub' $P548 = "134_1276996322.81157" 
     capture_lex $P548
-    .const 'Sub' $P539 = "132_1275811487.95429" 
+    .const 'Sub' $P539 = "132_1276996322.81157" 
     capture_lex $P539
-    .const 'Sub' $P532 = "130_1275811487.95429" 
+    .const 'Sub' $P532 = "130_1276996322.81157" 
     capture_lex $P532
-    .const 'Sub' $P523 = "126_1275811487.95429" 
+    .const 'Sub' $P523 = "126_1276996322.81157" 
     capture_lex $P523
-    .const 'Sub' $P518 = "124_1275811487.95429" 
+    .const 'Sub' $P518 = "124_1276996322.81157" 
     capture_lex $P518
-    .const 'Sub' $P506 = "122_1275811487.95429" 
+    .const 'Sub' $P506 = "122_1276996322.81157" 
     capture_lex $P506
-    .const 'Sub' $P494 = "120_1275811487.95429" 
+    .const 'Sub' $P494 = "120_1276996322.81157" 
     capture_lex $P494
-    .const 'Sub' $P486 = "118_1275811487.95429" 
+    .const 'Sub' $P486 = "118_1276996322.81157" 
     capture_lex $P486
-    .const 'Sub' $P481 = "116_1275811487.95429" 
+    .const 'Sub' $P481 = "116_1276996322.81157" 
     capture_lex $P481
-    .const 'Sub' $P475 = "114_1275811487.95429" 
+    .const 'Sub' $P475 = "114_1276996322.81157" 
     capture_lex $P475
-    .const 'Sub' $P469 = "112_1275811487.95429" 
+    .const 'Sub' $P469 = "112_1276996322.81157" 
     capture_lex $P469
-    .const 'Sub' $P459 = "109_1275811487.95429" 
+    .const 'Sub' $P459 = "109_1276996322.81157" 
     capture_lex $P459
-    .const 'Sub' $P453 = "107_1275811487.95429" 
+    .const 'Sub' $P453 = "107_1276996322.81157" 
     capture_lex $P453
-    .const 'Sub' $P447 = "105_1275811487.95429" 
+    .const 'Sub' $P447 = "105_1276996322.81157" 
     capture_lex $P447
-    .const 'Sub' $P441 = "103_1275811487.95429" 
+    .const 'Sub' $P441 = "103_1276996322.81157" 
     capture_lex $P441
-    .const 'Sub' $P435 = "101_1275811487.95429" 
+    .const 'Sub' $P435 = "101_1276996322.81157" 
     capture_lex $P435
-    .const 'Sub' $P429 = "99_1275811487.95429" 
+    .const 'Sub' $P429 = "99_1276996322.81157" 
     capture_lex $P429
-    .const 'Sub' $P423 = "97_1275811487.95429" 
+    .const 'Sub' $P423 = "97_1276996322.81157" 
     capture_lex $P423
-    .const 'Sub' $P414 = "95_1275811487.95429" 
+    .const 'Sub' $P414 = "95_1276996322.81157" 
     capture_lex $P414
-    .const 'Sub' $P405 = "93_1275811487.95429" 
+    .const 'Sub' $P405 = "93_1276996322.81157" 
     capture_lex $P405
-    .const 'Sub' $P392 = "89_1275811487.95429" 
+    .const 'Sub' $P392 = "89_1276996322.81157" 
     capture_lex $P392
-    .const 'Sub' $P383 = "87_1275811487.95429" 
+    .const 'Sub' $P383 = "87_1276996322.81157" 
     capture_lex $P383
-    .const 'Sub' $P373 = "83_1275811487.95429" 
+    .const 'Sub' $P373 = "83_1276996322.81157" 
     capture_lex $P373
-    .const 'Sub' $P366 = "81_1275811487.95429" 
+    .const 'Sub' $P366 = "81_1276996322.81157" 
     capture_lex $P366
-    .const 'Sub' $P359 = "79_1275811487.95429" 
+    .const 'Sub' $P359 = "79_1276996322.81157" 
     capture_lex $P359
-    .const 'Sub' $P347 = "75_1275811487.95429" 
+    .const 'Sub' $P347 = "75_1276996322.81157" 
     capture_lex $P347
-    .const 'Sub' $P339 = "73_1275811487.95429" 
+    .const 'Sub' $P339 = "73_1276996322.81157" 
     capture_lex $P339
-    .const 'Sub' $P331 = "71_1275811487.95429" 
+    .const 'Sub' $P331 = "71_1276996322.81157" 
     capture_lex $P331
-    .const 'Sub' $P311 = "69_1275811487.95429" 
+    .const 'Sub' $P311 = "69_1276996322.81157" 
     capture_lex $P311
-    .const 'Sub' $P302 = "67_1275811487.95429" 
+    .const 'Sub' $P302 = "67_1276996322.81157" 
     capture_lex $P302
-    .const 'Sub' $P284 = "64_1275811487.95429" 
+    .const 'Sub' $P284 = "64_1276996322.81157" 
     capture_lex $P284
-    .const 'Sub' $P264 = "62_1275811487.95429" 
+    .const 'Sub' $P264 = "62_1276996322.81157" 
     capture_lex $P264
-    .const 'Sub' $P255 = "58_1275811487.95429" 
+    .const 'Sub' $P255 = "58_1276996322.81157" 
     capture_lex $P255
-    .const 'Sub' $P250 = "56_1275811487.95429" 
+    .const 'Sub' $P250 = "56_1276996322.81157" 
     capture_lex $P250
-    .const 'Sub' $P241 = "52_1275811487.95429" 
+    .const 'Sub' $P241 = "52_1276996322.81157" 
     capture_lex $P241
-    .const 'Sub' $P236 = "50_1275811487.95429" 
+    .const 'Sub' $P236 = "50_1276996322.81157" 
     capture_lex $P236
-    .const 'Sub' $P231 = "48_1275811487.95429" 
+    .const 'Sub' $P231 = "48_1276996322.81157" 
     capture_lex $P231
-    .const 'Sub' $P223 = "46_1275811487.95429" 
+    .const 'Sub' $P223 = "46_1276996322.81157" 
     capture_lex $P223
-    .const 'Sub' $P216 = "44_1275811487.95429" 
+    .const 'Sub' $P216 = "44_1276996322.81157" 
     capture_lex $P216
-    .const 'Sub' $P210 = "42_1275811487.95429" 
+    .const 'Sub' $P210 = "42_1276996322.81157" 
     capture_lex $P210
-    .const 'Sub' $P202 = "40_1275811487.95429" 
+    .const 'Sub' $P202 = "40_1276996322.81157" 
     capture_lex $P202
-    .const 'Sub' $P196 = "38_1275811487.95429" 
+    .const 'Sub' $P196 = "38_1276996322.81157" 
     capture_lex $P196
-    .const 'Sub' $P190 = "36_1275811487.95429" 
+    .const 'Sub' $P190 = "36_1276996322.81157" 
     capture_lex $P190
-    .const 'Sub' $P174 = "33_1275811487.95429" 
+    .const 'Sub' $P174 = "33_1276996322.81157" 
     capture_lex $P174
-    .const 'Sub' $P159 = "31_1275811487.95429" 
+    .const 'Sub' $P159 = "31_1276996322.81157" 
     capture_lex $P159
-    .const 'Sub' $P152 = "29_1275811487.95429" 
+    .const 'Sub' $P152 = "29_1276996322.81157" 
     capture_lex $P152
-    .const 'Sub' $P102 = "26_1275811487.95429" 
+    .const 'Sub' $P102 = "26_1276996322.81157" 
     capture_lex $P102
-    .const 'Sub' $P84 = "23_1275811487.95429" 
+    .const 'Sub' $P84 = "23_1276996322.81157" 
     capture_lex $P84
-    .const 'Sub' $P70 = "21_1275811487.95429" 
+    .const 'Sub' $P70 = "21_1276996322.81157" 
     capture_lex $P70
-    .const 'Sub' $P56 = "19_1275811487.95429" 
+    .const 'Sub' $P56 = "19_1276996322.81157" 
     capture_lex $P56
-    .const 'Sub' $P48 = "17_1275811487.95429" 
+    .const 'Sub' $P48 = "17_1276996322.81157" 
     capture_lex $P48
-    .const 'Sub' $P41 = "15_1275811487.95429" 
+    .const 'Sub' $P41 = "15_1276996322.81157" 
     capture_lex $P41
-    .const 'Sub' $P35 = "13_1275811487.95429" 
+    .const 'Sub' $P35 = "13_1276996322.81157" 
     capture_lex $P35
-    .const 'Sub' $P15 = "12_1275811487.95429" 
+    .const 'Sub' $P15 = "12_1276996322.81157" 
     capture_lex $P15
     $P0 = find_dynamic_lex "$*CTXSAVE"
     if null $P0 goto ctxsave_done
@@ -369,13 +369,13 @@
     $P1403 = $P1340()
 .annotate 'line', 4
     .return ($P1403)
-    .const 'Sub' $P1405 = "362_1275811487.95429" 
+    .const 'Sub' $P1405 = "362_1276996322.81157" 
     .return ($P1405)
 .end
 
 
 .namespace ["NQP";"Grammar"]
-.sub "" :load :init :subid("post365") :outer("11_1275811487.95429")
+.sub "" :load :init :subid("post365") :outer("11_1276996322.81157")
 .annotate 'line', 4
     get_hll_global $P14, ["NQP";"Grammar"], "_block13" 
     .local pmc block
@@ -433,7 +433,7 @@
 
 .namespace ["NQP";"Grammar"]
 .include "except_types.pasm"
-.sub "TOP"  :subid("12_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "TOP"  :subid("12_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     new $P17, 'ExceptionHandler'
     set_addr $P17, control_16
@@ -523,7 +523,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "identifier"  :subid("13_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "identifier"  :subid("13_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx36_tgt
     .local int rx36_pos
@@ -582,7 +582,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__identifier"  :subid("14_1275811487.95429") :method
+.sub "!PREFIX__identifier"  :subid("14_1276996322.81157") :method
 .annotate 'line', 4
     $P38 = self."!PREFIX__!subrule"("ident", "")
     new $P39, "ResizablePMCArray"
@@ -592,7 +592,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "name"  :subid("15_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "name"  :subid("15_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx42_tgt
     .local int rx42_pos
@@ -667,7 +667,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__name"  :subid("16_1275811487.95429") :method
+.sub "!PREFIX__name"  :subid("16_1276996322.81157") :method
 .annotate 'line', 4
     new $P44, "ResizablePMCArray"
     push $P44, ""
@@ -676,7 +676,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "deflongname"  :subid("17_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "deflongname"  :subid("17_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx49_tgt
     .local int rx49_pos
@@ -750,7 +750,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__deflongname"  :subid("18_1275811487.95429") :method
+.sub "!PREFIX__deflongname"  :subid("18_1276996322.81157") :method
 .annotate 'line', 4
     $P51 = self."!PREFIX__!subrule"("identifier", "")
     new $P52, "ResizablePMCArray"
@@ -760,7 +760,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "ENDSTMT"  :subid("19_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "ENDSTMT"  :subid("19_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx57_tgt
     .local int rx57_pos
@@ -893,7 +893,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ENDSTMT"  :subid("20_1275811487.95429") :method
+.sub "!PREFIX__ENDSTMT"  :subid("20_1276996322.81157") :method
 .annotate 'line', 4
     new $P59, "ResizablePMCArray"
     push $P59, ""
@@ -902,7 +902,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "ws"  :subid("21_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "ws"  :subid("21_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx71_tgt
     .local int rx71_pos
@@ -1058,7 +1058,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__ws"  :subid("22_1275811487.95429") :method
+.sub "!PREFIX__ws"  :subid("22_1276996322.81157") :method
 .annotate 'line', 4
     new $P73, "ResizablePMCArray"
     push $P73, ""
@@ -1068,9 +1068,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "unv"  :subid("23_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "unv"  :subid("23_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
-    .const 'Sub' $P92 = "25_1275811487.95429" 
+    .const 'Sub' $P92 = "25_1276996322.81157" 
     capture_lex $P92
     .local string rx85_tgt
     .local int rx85_pos
@@ -1117,7 +1117,7 @@
   rxanchor90_done:
   # rx subrule "before" subtype=zerowidth negate=
     rx85_cur."!cursor_pos"(rx85_pos)
-    .const 'Sub' $P92 = "25_1275811487.95429" 
+    .const 'Sub' $P92 = "25_1276996322.81157" 
     capture_lex $P92
     $P10 = rx85_cur."before"($P92)
     unless $P10, rx85_fail
@@ -1196,7 +1196,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__unv"  :subid("24_1275811487.95429") :method
+.sub "!PREFIX__unv"  :subid("24_1276996322.81157") :method
 .annotate 'line', 4
     new $P87, "ResizablePMCArray"
     push $P87, ""
@@ -1207,7 +1207,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block91"  :anon :subid("25_1275811487.95429") :method :outer("23_1275811487.95429")
+.sub "_block91"  :anon :subid("25_1276996322.81157") :method :outer("23_1276996322.81157")
 .annotate 'line', 46
     .local string rx93_tgt
     .local int rx93_pos
@@ -1298,9 +1298,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "pod_comment"  :subid("26_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "pod_comment"  :subid("26_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
-    .const 'Sub' $P143 = "28_1275811487.95429" 
+    .const 'Sub' $P143 = "28_1276996322.81157" 
     capture_lex $P143
     .local string rx103_tgt
     .local int rx103_pos
@@ -1787,7 +1787,7 @@
   rxanchor141_done:
   # rx subrule "before" subtype=zerowidth negate=
     rx103_cur."!cursor_pos"(rx103_pos)
-    .const 'Sub' $P143 = "28_1275811487.95429" 
+    .const 'Sub' $P143 = "28_1276996322.81157" 
     capture_lex $P143
     $P10 = rx103_cur."before"($P143)
     unless $P10, rx103_fail
@@ -1838,7 +1838,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__pod_comment"  :subid("27_1275811487.95429") :method
+.sub "!PREFIX__pod_comment"  :subid("27_1276996322.81157") :method
 .annotate 'line', 4
     new $P105, "ResizablePMCArray"
     push $P105, ""
@@ -1847,7 +1847,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block142"  :anon :subid("28_1275811487.95429") :method :outer("26_1275811487.95429")
+.sub "_block142"  :anon :subid("28_1276996322.81157") :method :outer("26_1276996322.81157")
 .annotate 'line', 69
     .local string rx144_tgt
     .local int rx144_pos
@@ -1967,7 +1967,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "comp_unit"  :subid("29_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "comp_unit"  :subid("29_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx153_tgt
     .local int rx153_pos
@@ -2053,7 +2053,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__comp_unit"  :subid("30_1275811487.95429") :method
+.sub "!PREFIX__comp_unit"  :subid("30_1276996322.81157") :method
 .annotate 'line', 4
     $P155 = self."!PREFIX__!subrule"("newpad", "")
     new $P156, "ResizablePMCArray"
@@ -2063,7 +2063,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statementlist"  :subid("31_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "statementlist"  :subid("31_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx160_tgt
     .local int rx160_pos
@@ -2172,7 +2172,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statementlist"  :subid("32_1275811487.95429") :method
+.sub "!PREFIX__statementlist"  :subid("32_1276996322.81157") :method
 .annotate 'line', 4
     $P162 = self."!PREFIX__!subrule"("ws", "")
     $P163 = self."!PREFIX__!subrule"("ws", "")
@@ -2184,9 +2184,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement"  :subid("33_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "statement"  :subid("33_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
-    .const 'Sub' $P180 = "35_1275811487.95429" 
+    .const 'Sub' $P180 = "35_1276996322.81157" 
     capture_lex $P180
     .local string rx175_tgt
     .local int rx175_pos
@@ -2222,7 +2222,7 @@
 .annotate 'line', 96
   # rx subrule "before" subtype=zerowidth negate=1
     rx175_cur."!cursor_pos"(rx175_pos)
-    .const 'Sub' $P180 = "35_1275811487.95429" 
+    .const 'Sub' $P180 = "35_1276996322.81157" 
     capture_lex $P180
     $P10 = rx175_cur."before"($P180)
     if $P10, rx175_fail
@@ -2327,7 +2327,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement"  :subid("34_1275811487.95429") :method
+.sub "!PREFIX__statement"  :subid("34_1276996322.81157") :method
 .annotate 'line', 4
     new $P177, "ResizablePMCArray"
     push $P177, ""
@@ -2336,7 +2336,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block179"  :anon :subid("35_1275811487.95429") :method :outer("33_1275811487.95429")
+.sub "_block179"  :anon :subid("35_1276996322.81157") :method :outer("33_1276996322.81157")
 .annotate 'line', 96
     .local string rx181_tgt
     .local int rx181_pos
@@ -2401,7 +2401,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "eat_terminator"  :subid("36_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "eat_terminator"  :subid("36_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx191_tgt
     .local int rx191_pos
@@ -2489,7 +2489,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__eat_terminator"  :subid("37_1275811487.95429") :method
+.sub "!PREFIX__eat_terminator"  :subid("37_1276996322.81157") :method
 .annotate 'line', 4
     new $P193, "ResizablePMCArray"
     push $P193, ""
@@ -2501,7 +2501,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "xblock"  :subid("38_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "xblock"  :subid("38_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx197_tgt
     .local int rx197_pos
@@ -2573,7 +2573,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__xblock"  :subid("39_1275811487.95429") :method
+.sub "!PREFIX__xblock"  :subid("39_1276996322.81157") :method
 .annotate 'line', 4
     $P199 = self."!PREFIX__!subrule"("EXPR", "")
     new $P200, "ResizablePMCArray"
@@ -2583,7 +2583,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "pblock"  :subid("40_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "pblock"  :subid("40_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx203_tgt
     .local int rx203_pos
@@ -2703,7 +2703,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__pblock"  :subid("41_1275811487.95429") :method
+.sub "!PREFIX__pblock"  :subid("41_1276996322.81157") :method
 .annotate 'line', 4
     $P205 = self."!PREFIX__!subrule"("panic", "")
     $P206 = self."!PREFIX__!subrule"("lambda", "")
@@ -2716,7 +2716,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "lambda"  :subid("42_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "lambda"  :subid("42_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx211_tgt
     .local int rx211_pos
@@ -2788,7 +2788,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__lambda"  :subid("43_1275811487.95429") :method
+.sub "!PREFIX__lambda"  :subid("43_1276996322.81157") :method
 .annotate 'line', 4
     new $P213, "ResizablePMCArray"
     push $P213, "<->"
@@ -2798,7 +2798,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "block"  :subid("44_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "block"  :subid("44_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx217_tgt
     .local int rx217_pos
@@ -2882,7 +2882,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__block"  :subid("45_1275811487.95429") :method
+.sub "!PREFIX__block"  :subid("45_1276996322.81157") :method
 .annotate 'line', 4
     $P219 = self."!PREFIX__!subrule"("panic", "")
     new $P220, "ResizablePMCArray"
@@ -2893,7 +2893,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "blockoid"  :subid("46_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "blockoid"  :subid("46_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx224_tgt
     .local int rx224_pos
@@ -2989,7 +2989,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__blockoid"  :subid("47_1275811487.95429") :method
+.sub "!PREFIX__blockoid"  :subid("47_1276996322.81157") :method
 .annotate 'line', 4
     $P226 = self."!PREFIX__!subrule"("finishpad", "")
     new $P227, "ResizablePMCArray"
@@ -2999,7 +2999,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "newpad"  :subid("48_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "newpad"  :subid("48_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx232_tgt
     .local int rx232_pos
@@ -3051,7 +3051,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__newpad"  :subid("49_1275811487.95429") :method
+.sub "!PREFIX__newpad"  :subid("49_1276996322.81157") :method
 .annotate 'line', 4
     new $P234, "ResizablePMCArray"
     push $P234, ""
@@ -3060,7 +3060,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "outerctx"  :subid("50_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "outerctx"  :subid("50_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx237_tgt
     .local int rx237_pos
@@ -3112,7 +3112,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__outerctx"  :subid("51_1275811487.95429") :method
+.sub "!PREFIX__outerctx"  :subid("51_1276996322.81157") :method
 .annotate 'line', 4
     new $P239, "ResizablePMCArray"
     push $P239, ""
@@ -3121,7 +3121,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "finishpad"  :subid("52_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "finishpad"  :subid("52_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx242_tgt
     .local int rx242_pos
@@ -3173,7 +3173,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__finishpad"  :subid("53_1275811487.95429") :method
+.sub "!PREFIX__finishpad"  :subid("53_1276996322.81157") :method
 .annotate 'line', 4
     new $P244, "ResizablePMCArray"
     push $P244, ""
@@ -3182,7 +3182,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "terminator"  :subid("54_1275811487.95429") :method
+.sub "terminator"  :subid("54_1276996322.81157") :method
 .annotate 'line', 148
     $P247 = self."!protoregex"("terminator")
     .return ($P247)
@@ -3190,7 +3190,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator"  :subid("55_1275811487.95429") :method
+.sub "!PREFIX__terminator"  :subid("55_1276996322.81157") :method
 .annotate 'line', 148
     $P249 = self."!PREFIX__!protoregex"("terminator")
     .return ($P249)
@@ -3198,7 +3198,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "terminator:sym<;>"  :subid("56_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "terminator:sym<;>"  :subid("56_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx251_tgt
     .local int rx251_pos
@@ -3256,7 +3256,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator:sym<;>"  :subid("57_1275811487.95429") :method
+.sub "!PREFIX__terminator:sym<;>"  :subid("57_1276996322.81157") :method
 .annotate 'line', 4
     new $P253, "ResizablePMCArray"
     push $P253, ";"
@@ -3265,7 +3265,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "terminator:sym<}>"  :subid("58_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "terminator:sym<}>"  :subid("58_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx256_tgt
     .local int rx256_pos
@@ -3323,7 +3323,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__terminator:sym<}>"  :subid("59_1275811487.95429") :method
+.sub "!PREFIX__terminator:sym<}>"  :subid("59_1276996322.81157") :method
 .annotate 'line', 4
     new $P258, "ResizablePMCArray"
     push $P258, "}"
@@ -3332,7 +3332,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control"  :subid("60_1275811487.95429") :method
+.sub "statement_control"  :subid("60_1276996322.81157") :method
 .annotate 'line', 155
     $P261 = self."!protoregex"("statement_control")
     .return ($P261)
@@ -3340,7 +3340,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control"  :subid("61_1275811487.95429") :method
+.sub "!PREFIX__statement_control"  :subid("61_1276996322.81157") :method
 .annotate 'line', 155
     $P263 = self."!PREFIX__!protoregex"("statement_control")
     .return ($P263)
@@ -3348,7 +3348,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<if>"  :subid("62_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "statement_control:sym<if>"  :subid("62_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx265_tgt
     .local int rx265_pos
@@ -3543,7 +3543,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<if>"  :subid("63_1275811487.95429") :method
+.sub "!PREFIX__statement_control:sym<if>"  :subid("63_1276996322.81157") :method
 .annotate 'line', 4
     new $P267, "ResizablePMCArray"
     push $P267, "if"
@@ -3552,9 +3552,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<unless>"  :subid("64_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "statement_control:sym<unless>"  :subid("64_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
-    .const 'Sub' $P295 = "66_1275811487.95429" 
+    .const 'Sub' $P295 = "66_1276996322.81157" 
     capture_lex $P295
     .local string rx285_tgt
     .local int rx285_pos
@@ -3643,7 +3643,7 @@
     rx285_pos = $P10."pos"()
   # rx subrule "before" subtype=zerowidth negate=1
     rx285_cur."!cursor_pos"(rx285_pos)
-    .const 'Sub' $P295 = "66_1275811487.95429" 
+    .const 'Sub' $P295 = "66_1276996322.81157" 
     capture_lex $P295
     $P10 = rx285_cur."before"($P295)
     if $P10, rx285_fail
@@ -3695,7 +3695,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<unless>"  :subid("65_1275811487.95429") :method
+.sub "!PREFIX__statement_control:sym<unless>"  :subid("65_1276996322.81157") :method
 .annotate 'line', 4
     new $P287, "ResizablePMCArray"
     push $P287, "unless"
@@ -3704,7 +3704,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block294"  :anon :subid("66_1275811487.95429") :method :outer("64_1275811487.95429")
+.sub "_block294"  :anon :subid("66_1276996322.81157") :method :outer("64_1276996322.81157")
 .annotate 'line', 167
     .local string rx296_tgt
     .local int rx296_pos
@@ -3761,7 +3761,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<while>"  :subid("67_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "statement_control:sym<while>"  :subid("67_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx303_tgt
     .local int rx303_pos
@@ -3872,7 +3872,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<while>"  :subid("68_1275811487.95429") :method
+.sub "!PREFIX__statement_control:sym<while>"  :subid("68_1276996322.81157") :method
 .annotate 'line', 4
     new $P305, "ResizablePMCArray"
     push $P305, "until"
@@ -3882,7 +3882,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<repeat>"  :subid("69_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "statement_control:sym<repeat>"  :subid("69_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx312_tgt
     .local int rx312_pos
@@ -4118,7 +4118,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<repeat>"  :subid("70_1275811487.95429") :method
+.sub "!PREFIX__statement_control:sym<repeat>"  :subid("70_1276996322.81157") :method
 .annotate 'line', 4
     new $P314, "ResizablePMCArray"
     push $P314, "repeat"
@@ -4127,7 +4127,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<for>"  :subid("71_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "statement_control:sym<for>"  :subid("71_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx332_tgt
     .local int rx332_pos
@@ -4225,7 +4225,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<for>"  :subid("72_1275811487.95429") :method
+.sub "!PREFIX__statement_control:sym<for>"  :subid("72_1276996322.81157") :method
 .annotate 'line', 4
     new $P334, "ResizablePMCArray"
     push $P334, "for"
@@ -4234,7 +4234,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<CATCH>"  :subid("73_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "statement_control:sym<CATCH>"  :subid("73_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx340_tgt
     .local int rx340_pos
@@ -4332,7 +4332,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<CATCH>"  :subid("74_1275811487.95429") :method
+.sub "!PREFIX__statement_control:sym<CATCH>"  :subid("74_1276996322.81157") :method
 .annotate 'line', 4
     new $P342, "ResizablePMCArray"
     push $P342, "CATCH"
@@ -4341,7 +4341,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_control:sym<CONTROL>"  :subid("75_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "statement_control:sym<CONTROL>"  :subid("75_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx348_tgt
     .local int rx348_pos
@@ -4439,7 +4439,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_control:sym<CONTROL>"  :subid("76_1275811487.95429") :method
+.sub "!PREFIX__statement_control:sym<CONTROL>"  :subid("76_1276996322.81157") :method
 .annotate 'line', 4
     new $P350, "ResizablePMCArray"
     push $P350, "CONTROL"
@@ -4448,7 +4448,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_prefix"  :subid("77_1275811487.95429") :method
+.sub "statement_prefix"  :subid("77_1276996322.81157") :method
 .annotate 'line', 198
     $P356 = self."!protoregex"("statement_prefix")
     .return ($P356)
@@ -4456,7 +4456,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix"  :subid("78_1275811487.95429") :method
+.sub "!PREFIX__statement_prefix"  :subid("78_1276996322.81157") :method
 .annotate 'line', 198
     $P358 = self."!PREFIX__!protoregex"("statement_prefix")
     .return ($P358)
@@ -4464,7 +4464,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_prefix:sym<INIT>"  :subid("79_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "statement_prefix:sym<INIT>"  :subid("79_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx360_tgt
     .local int rx360_pos
@@ -4544,7 +4544,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix:sym<INIT>"  :subid("80_1275811487.95429") :method
+.sub "!PREFIX__statement_prefix:sym<INIT>"  :subid("80_1276996322.81157") :method
 .annotate 'line', 4
     $P362 = self."!PREFIX__!subrule"("blorst", "INIT")
     new $P363, "ResizablePMCArray"
@@ -4554,7 +4554,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_prefix:sym<try>"  :subid("81_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "statement_prefix:sym<try>"  :subid("81_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx367_tgt
     .local int rx367_pos
@@ -4636,7 +4636,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_prefix:sym<try>"  :subid("82_1275811487.95429") :method
+.sub "!PREFIX__statement_prefix:sym<try>"  :subid("82_1276996322.81157") :method
 .annotate 'line', 4
     $P369 = self."!PREFIX__!subrule"("blorst", "try")
     new $P370, "ResizablePMCArray"
@@ -4646,7 +4646,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "blorst"  :subid("83_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "blorst"  :subid("83_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx374_tgt
     .local int rx374_pos
@@ -4736,7 +4736,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__blorst"  :subid("84_1275811487.95429") :method
+.sub "!PREFIX__blorst"  :subid("84_1276996322.81157") :method
 .annotate 'line', 4
     new $P376, "ResizablePMCArray"
     push $P376, ""
@@ -4745,7 +4745,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond"  :subid("85_1275811487.95429") :method
+.sub "statement_mod_cond"  :subid("85_1276996322.81157") :method
 .annotate 'line', 212
     $P380 = self."!protoregex"("statement_mod_cond")
     .return ($P380)
@@ -4753,7 +4753,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond"  :subid("86_1275811487.95429") :method
+.sub "!PREFIX__statement_mod_cond"  :subid("86_1276996322.81157") :method
 .annotate 'line', 212
     $P382 = self."!PREFIX__!protoregex"("statement_mod_cond")
     .return ($P382)
@@ -4761,7 +4761,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond:sym<if>"  :subid("87_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "statement_mod_cond:sym<if>"  :subid("87_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx384_tgt
     .local int rx384_pos
@@ -4851,7 +4851,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond:sym<if>"  :subid("88_1275811487.95429") :method
+.sub "!PREFIX__statement_mod_cond:sym<if>"  :subid("88_1276996322.81157") :method
 .annotate 'line', 4
     $P386 = self."!PREFIX__!subrule"("ws", "if")
     new $P387, "ResizablePMCArray"
@@ -4861,7 +4861,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_cond:sym<unless>"  :subid("89_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "statement_mod_cond:sym<unless>"  :subid("89_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx393_tgt
     .local int rx393_pos
@@ -4951,7 +4951,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_cond:sym<unless>"  :subid("90_1275811487.95429") :method
+.sub "!PREFIX__statement_mod_cond:sym<unless>"  :subid("90_1276996322.81157") :method
 .annotate 'line', 4
     $P395 = self."!PREFIX__!subrule"("ws", "unless")
     new $P396, "ResizablePMCArray"
@@ -4961,7 +4961,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop"  :subid("91_1275811487.95429") :method
+.sub "statement_mod_loop"  :subid("91_1276996322.81157") :method
 .annotate 'line', 217
     $P402 = self."!protoregex"("statement_mod_loop")
     .return ($P402)
@@ -4969,7 +4969,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop"  :subid("92_1275811487.95429") :method
+.sub "!PREFIX__statement_mod_loop"  :subid("92_1276996322.81157") :method
 .annotate 'line', 217
     $P404 = self."!PREFIX__!protoregex"("statement_mod_loop")
     .return ($P404)
@@ -4977,7 +4977,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop:sym<while>"  :subid("93_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "statement_mod_loop:sym<while>"  :subid("93_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx406_tgt
     .local int rx406_pos
@@ -5067,7 +5067,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop:sym<while>"  :subid("94_1275811487.95429") :method
+.sub "!PREFIX__statement_mod_loop:sym<while>"  :subid("94_1276996322.81157") :method
 .annotate 'line', 4
     $P408 = self."!PREFIX__!subrule"("ws", "while")
     new $P409, "ResizablePMCArray"
@@ -5077,7 +5077,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "statement_mod_loop:sym<until>"  :subid("95_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "statement_mod_loop:sym<until>"  :subid("95_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx415_tgt
     .local int rx415_pos
@@ -5167,7 +5167,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__statement_mod_loop:sym<until>"  :subid("96_1275811487.95429") :method
+.sub "!PREFIX__statement_mod_loop:sym<until>"  :subid("96_1276996322.81157") :method
 .annotate 'line', 4
     $P417 = self."!PREFIX__!subrule"("ws", "until")
     new $P418, "ResizablePMCArray"
@@ -5177,7 +5177,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<fatarrow>"  :subid("97_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "term:sym<fatarrow>"  :subid("97_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx424_tgt
     .local int rx424_pos
@@ -5236,7 +5236,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<fatarrow>"  :subid("98_1275811487.95429") :method
+.sub "!PREFIX__term:sym<fatarrow>"  :subid("98_1276996322.81157") :method
 .annotate 'line', 4
     $P426 = self."!PREFIX__!subrule"("fatarrow", "")
     new $P427, "ResizablePMCArray"
@@ -5246,7 +5246,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<colonpair>"  :subid("99_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "term:sym<colonpair>"  :subid("99_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx430_tgt
     .local int rx430_pos
@@ -5305,7 +5305,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<colonpair>"  :subid("100_1275811487.95429") :method
+.sub "!PREFIX__term:sym<colonpair>"  :subid("100_1276996322.81157") :method
 .annotate 'line', 4
     $P432 = self."!PREFIX__!subrule"("colonpair", "")
     new $P433, "ResizablePMCArray"
@@ -5315,7 +5315,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<variable>"  :subid("101_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "term:sym<variable>"  :subid("101_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx436_tgt
     .local int rx436_pos
@@ -5374,7 +5374,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<variable>"  :subid("102_1275811487.95429") :method
+.sub "!PREFIX__term:sym<variable>"  :subid("102_1276996322.81157") :method
 .annotate 'line', 4
     $P438 = self."!PREFIX__!subrule"("variable", "")
     new $P439, "ResizablePMCArray"
@@ -5384,7 +5384,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<package_declarator>"  :subid("103_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "term:sym<package_declarator>"  :subid("103_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx442_tgt
     .local int rx442_pos
@@ -5443,7 +5443,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<package_declarator>"  :subid("104_1275811487.95429") :method
+.sub "!PREFIX__term:sym<package_declarator>"  :subid("104_1276996322.81157") :method
 .annotate 'line', 4
     $P444 = self."!PREFIX__!subrule"("package_declarator", "")
     new $P445, "ResizablePMCArray"
@@ -5453,7 +5453,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<scope_declarator>"  :subid("105_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "term:sym<scope_declarator>"  :subid("105_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx448_tgt
     .local int rx448_pos
@@ -5512,7 +5512,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<scope_declarator>"  :subid("106_1275811487.95429") :method
+.sub "!PREFIX__term:sym<scope_declarator>"  :subid("106_1276996322.81157") :method
 .annotate 'line', 4
     $P450 = self."!PREFIX__!subrule"("scope_declarator", "")
     new $P451, "ResizablePMCArray"
@@ -5522,7 +5522,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<routine_declarator>"  :subid("107_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "term:sym<routine_declarator>"  :subid("107_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx454_tgt
     .local int rx454_pos
@@ -5581,7 +5581,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<routine_declarator>"  :subid("108_1275811487.95429") :method
+.sub "!PREFIX__term:sym<routine_declarator>"  :subid("108_1276996322.81157") :method
 .annotate 'line', 4
     $P456 = self."!PREFIX__!subrule"("routine_declarator", "")
     new $P457, "ResizablePMCArray"
@@ -5591,9 +5591,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<multi_declarator>"  :subid("109_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "term:sym<multi_declarator>"  :subid("109_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
-    .const 'Sub' $P465 = "111_1275811487.95429" 
+    .const 'Sub' $P465 = "111_1276996322.81157" 
     capture_lex $P465
     .local string rx460_tgt
     .local int rx460_pos
@@ -5628,7 +5628,7 @@
 .annotate 'line', 230
   # rx subrule "before" subtype=zerowidth negate=
     rx460_cur."!cursor_pos"(rx460_pos)
-    .const 'Sub' $P465 = "111_1275811487.95429" 
+    .const 'Sub' $P465 = "111_1276996322.81157" 
     capture_lex $P465
     $P10 = rx460_cur."before"($P465)
     unless $P10, rx460_fail
@@ -5658,7 +5658,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<multi_declarator>"  :subid("110_1275811487.95429") :method
+.sub "!PREFIX__term:sym<multi_declarator>"  :subid("110_1276996322.81157") :method
 .annotate 'line', 4
     new $P462, "ResizablePMCArray"
     push $P462, ""
@@ -5667,7 +5667,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block464"  :anon :subid("111_1275811487.95429") :method :outer("109_1275811487.95429")
+.sub "_block464"  :anon :subid("111_1276996322.81157") :method :outer("109_1276996322.81157")
 .annotate 'line', 230
     .local string rx466_tgt
     .local int rx466_pos
@@ -5748,7 +5748,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<regex_declarator>"  :subid("112_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "term:sym<regex_declarator>"  :subid("112_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx470_tgt
     .local int rx470_pos
@@ -5807,7 +5807,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<regex_declarator>"  :subid("113_1275811487.95429") :method
+.sub "!PREFIX__term:sym<regex_declarator>"  :subid("113_1276996322.81157") :method
 .annotate 'line', 4
     $P472 = self."!PREFIX__!subrule"("regex_declarator", "")
     new $P473, "ResizablePMCArray"
@@ -5817,7 +5817,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<statement_prefix>"  :subid("114_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "term:sym<statement_prefix>"  :subid("114_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx476_tgt
     .local int rx476_pos
@@ -5876,7 +5876,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<statement_prefix>"  :subid("115_1275811487.95429") :method
+.sub "!PREFIX__term:sym<statement_prefix>"  :subid("115_1276996322.81157") :method
 .annotate 'line', 4
     $P478 = self."!PREFIX__!subrule"("statement_prefix", "")
     new $P479, "ResizablePMCArray"
@@ -5886,7 +5886,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<lambda>"  :subid("116_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "term:sym<lambda>"  :subid("116_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx482_tgt
     .local int rx482_pos
@@ -5949,7 +5949,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<lambda>"  :subid("117_1275811487.95429") :method
+.sub "!PREFIX__term:sym<lambda>"  :subid("117_1276996322.81157") :method
 .annotate 'line', 4
     new $P484, "ResizablePMCArray"
     push $P484, ""
@@ -5958,7 +5958,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "fatarrow"  :subid("118_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "fatarrow"  :subid("118_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx487_tgt
     .local int rx487_pos
@@ -6052,7 +6052,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__fatarrow"  :subid("119_1275811487.95429") :method
+.sub "!PREFIX__fatarrow"  :subid("119_1276996322.81157") :method
 .annotate 'line', 4
     $P489 = self."!PREFIX__!subrule"("identifier", "")
     new $P490, "ResizablePMCArray"
@@ -6062,7 +6062,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "colonpair"  :subid("120_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "colonpair"  :subid("120_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx495_tgt
     .local int rx495_pos
@@ -6192,7 +6192,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__colonpair"  :subid("121_1275811487.95429") :method
+.sub "!PREFIX__colonpair"  :subid("121_1276996322.81157") :method
 .annotate 'line', 4
     $P497 = self."!PREFIX__!subrule"("circumfix", ":")
     $P498 = self."!PREFIX__!subrule"("identifier", ":")
@@ -6206,7 +6206,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "variable"  :subid("122_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "variable"  :subid("122_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx507_tgt
     .local int rx507_pos
@@ -6362,7 +6362,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__variable"  :subid("123_1275811487.95429") :method
+.sub "!PREFIX__variable"  :subid("123_1276996322.81157") :method
 .annotate 'line', 4
     $P509 = self."!PREFIX__!subrule"("sigil", "")
     $P510 = self."!PREFIX__!subrule"("sigil", "")
@@ -6377,7 +6377,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "sigil"  :subid("124_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "sigil"  :subid("124_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx519_tgt
     .local int rx519_pos
@@ -6436,7 +6436,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__sigil"  :subid("125_1275811487.95429") :method
+.sub "!PREFIX__sigil"  :subid("125_1276996322.81157") :method
 .annotate 'line', 4
     new $P521, "ResizablePMCArray"
     push $P521, "&"
@@ -6448,7 +6448,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "twigil"  :subid("126_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "twigil"  :subid("126_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx524_tgt
     .local int rx524_pos
@@ -6507,7 +6507,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__twigil"  :subid("127_1275811487.95429") :method
+.sub "!PREFIX__twigil"  :subid("127_1276996322.81157") :method
 .annotate 'line', 4
     new $P526, "ResizablePMCArray"
     push $P526, "?"
@@ -6518,7 +6518,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_declarator"  :subid("128_1275811487.95429") :method
+.sub "package_declarator"  :subid("128_1276996322.81157") :method
 .annotate 'line', 258
     $P529 = self."!protoregex"("package_declarator")
     .return ($P529)
@@ -6526,7 +6526,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator"  :subid("129_1275811487.95429") :method
+.sub "!PREFIX__package_declarator"  :subid("129_1276996322.81157") :method
 .annotate 'line', 258
     $P531 = self."!PREFIX__!protoregex"("package_declarator")
     .return ($P531)
@@ -6534,7 +6534,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_declarator:sym<module>"  :subid("130_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "package_declarator:sym<module>"  :subid("130_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx533_tgt
     .local int rx533_pos
@@ -6614,7 +6614,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator:sym<module>"  :subid("131_1275811487.95429") :method
+.sub "!PREFIX__package_declarator:sym<module>"  :subid("131_1276996322.81157") :method
 .annotate 'line', 4
     $P535 = self."!PREFIX__!subrule"("package_def", "module")
     new $P536, "ResizablePMCArray"
@@ -6624,7 +6624,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_declarator:sym<class>"  :subid("132_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "package_declarator:sym<class>"  :subid("132_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx540_tgt
     .local int rx540_pos
@@ -6717,7 +6717,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_declarator:sym<class>"  :subid("133_1275811487.95429") :method
+.sub "!PREFIX__package_declarator:sym<class>"  :subid("133_1276996322.81157") :method
 .annotate 'line', 4
     $P542 = self."!PREFIX__!subrule"("package_def", "grammar")
     $P543 = self."!PREFIX__!subrule"("package_def", "class")
@@ -6729,7 +6729,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "package_def"  :subid("134_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "package_def"  :subid("134_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx549_tgt
     .local int rx549_pos
@@ -6934,7 +6934,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__package_def"  :subid("135_1275811487.95429") :method
+.sub "!PREFIX__package_def"  :subid("135_1276996322.81157") :method
 .annotate 'line', 4
     $P551 = self."!PREFIX__!subrule"("ws", "")
     new $P552, "ResizablePMCArray"
@@ -6944,7 +6944,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator"  :subid("136_1275811487.95429") :method
+.sub "scope_declarator"  :subid("136_1276996322.81157") :method
 .annotate 'line', 272
     $P573 = self."!protoregex"("scope_declarator")
     .return ($P573)
@@ -6952,7 +6952,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator"  :subid("137_1275811487.95429") :method
+.sub "!PREFIX__scope_declarator"  :subid("137_1276996322.81157") :method
 .annotate 'line', 272
     $P575 = self."!PREFIX__!protoregex"("scope_declarator")
     .return ($P575)
@@ -6960,7 +6960,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<my>"  :subid("138_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "scope_declarator:sym<my>"  :subid("138_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx577_tgt
     .local int rx577_pos
@@ -7040,7 +7040,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<my>"  :subid("139_1275811487.95429") :method
+.sub "!PREFIX__scope_declarator:sym<my>"  :subid("139_1276996322.81157") :method
 .annotate 'line', 4
     $P579 = self."!PREFIX__!subrule"("scoped", "my")
     new $P580, "ResizablePMCArray"
@@ -7050,7 +7050,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<our>"  :subid("140_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "scope_declarator:sym<our>"  :subid("140_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx584_tgt
     .local int rx584_pos
@@ -7130,7 +7130,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<our>"  :subid("141_1275811487.95429") :method
+.sub "!PREFIX__scope_declarator:sym<our>"  :subid("141_1276996322.81157") :method
 .annotate 'line', 4
     $P586 = self."!PREFIX__!subrule"("scoped", "our")
     new $P587, "ResizablePMCArray"
@@ -7140,7 +7140,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scope_declarator:sym<has>"  :subid("142_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "scope_declarator:sym<has>"  :subid("142_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx591_tgt
     .local int rx591_pos
@@ -7220,7 +7220,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scope_declarator:sym<has>"  :subid("143_1275811487.95429") :method
+.sub "!PREFIX__scope_declarator:sym<has>"  :subid("143_1276996322.81157") :method
 .annotate 'line', 4
     $P593 = self."!PREFIX__!subrule"("scoped", "has")
     new $P594, "ResizablePMCArray"
@@ -7230,7 +7230,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "scoped"  :subid("144_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "scoped"  :subid("144_1276996322.81157") :method :outer("11_1276996322.81157")
     .param pmc param_598
 .annotate 'line', 277
     .lex "$*SCOPE", param_598
@@ -7328,7 +7328,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__scoped"  :subid("145_1275811487.95429") :method
+.sub "!PREFIX__scoped"  :subid("145_1276996322.81157") :method
 .annotate 'line', 4
     $P601 = self."!PREFIX__!subrule"("ws", "")
     $P602 = self."!PREFIX__!subrule"("ws", "")
@@ -7340,7 +7340,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "typename"  :subid("146_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "typename"  :subid("146_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx611_tgt
     .local int rx611_pos
@@ -7399,7 +7399,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__typename"  :subid("147_1275811487.95429") :method
+.sub "!PREFIX__typename"  :subid("147_1276996322.81157") :method
 .annotate 'line', 4
     $P613 = self."!PREFIX__!subrule"("name", "")
     new $P614, "ResizablePMCArray"
@@ -7409,7 +7409,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "declarator"  :subid("148_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "declarator"  :subid("148_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx617_tgt
     .local int rx617_pos
@@ -7484,7 +7484,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__declarator"  :subid("149_1275811487.95429") :method
+.sub "!PREFIX__declarator"  :subid("149_1276996322.81157") :method
 .annotate 'line', 4
     $P619 = self."!PREFIX__!subrule"("routine_declarator", "")
     $P620 = self."!PREFIX__!subrule"("variable_declarator", "")
@@ -7496,7 +7496,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "variable_declarator"  :subid("150_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "variable_declarator"  :subid("150_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx625_tgt
     .local int rx625_pos
@@ -7555,7 +7555,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__variable_declarator"  :subid("151_1275811487.95429") :method
+.sub "!PREFIX__variable_declarator"  :subid("151_1276996322.81157") :method
 .annotate 'line', 4
     $P627 = self."!PREFIX__!subrule"("variable", "")
     new $P628, "ResizablePMCArray"
@@ -7565,7 +7565,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_declarator"  :subid("152_1275811487.95429") :method
+.sub "routine_declarator"  :subid("152_1276996322.81157") :method
 .annotate 'line', 291
     $P631 = self."!protoregex"("routine_declarator")
     .return ($P631)
@@ -7573,7 +7573,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator"  :subid("153_1275811487.95429") :method
+.sub "!PREFIX__routine_declarator"  :subid("153_1276996322.81157") :method
 .annotate 'line', 291
     $P633 = self."!PREFIX__!protoregex"("routine_declarator")
     .return ($P633)
@@ -7581,7 +7581,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_declarator:sym<sub>"  :subid("154_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "routine_declarator:sym<sub>"  :subid("154_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx635_tgt
     .local int rx635_pos
@@ -7661,7 +7661,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator:sym<sub>"  :subid("155_1275811487.95429") :method
+.sub "!PREFIX__routine_declarator:sym<sub>"  :subid("155_1276996322.81157") :method
 .annotate 'line', 4
     $P637 = self."!PREFIX__!subrule"("routine_def", "sub")
     new $P638, "ResizablePMCArray"
@@ -7671,7 +7671,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_declarator:sym<method>"  :subid("156_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "routine_declarator:sym<method>"  :subid("156_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx642_tgt
     .local int rx642_pos
@@ -7751,7 +7751,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_declarator:sym<method>"  :subid("157_1275811487.95429") :method
+.sub "!PREFIX__routine_declarator:sym<method>"  :subid("157_1276996322.81157") :method
 .annotate 'line', 4
     $P644 = self."!PREFIX__!subrule"("method_def", "method")
     new $P645, "ResizablePMCArray"
@@ -7761,7 +7761,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "routine_def"  :subid("158_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "routine_def"  :subid("158_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx649_tgt
     .local int rx649_pos
@@ -7969,7 +7969,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__routine_def"  :subid("159_1275811487.95429") :method
+.sub "!PREFIX__routine_def"  :subid("159_1276996322.81157") :method
 .annotate 'line', 4
     $P651 = self."!PREFIX__!subrule"("ws", "")
     new $P652, "ResizablePMCArray"
@@ -7979,7 +7979,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "method_def"  :subid("160_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "method_def"  :subid("160_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx674_tgt
     .local int rx674_pos
@@ -8150,7 +8150,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__method_def"  :subid("161_1275811487.95429") :method
+.sub "!PREFIX__method_def"  :subid("161_1276996322.81157") :method
 .annotate 'line', 4
     $P676 = self."!PREFIX__!subrule"("ws", "")
     new $P677, "ResizablePMCArray"
@@ -8160,7 +8160,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "multi_declarator"  :subid("162_1275811487.95429") :method
+.sub "multi_declarator"  :subid("162_1276996322.81157") :method
 .annotate 'line', 311
     $P694 = self."!protoregex"("multi_declarator")
     .return ($P694)
@@ -8168,7 +8168,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__multi_declarator"  :subid("163_1275811487.95429") :method
+.sub "!PREFIX__multi_declarator"  :subid("163_1276996322.81157") :method
 .annotate 'line', 311
     $P696 = self."!PREFIX__!protoregex"("multi_declarator")
     .return ($P696)
@@ -8176,7 +8176,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "multi_declarator:sym<multi>"  :subid("164_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "multi_declarator:sym<multi>"  :subid("164_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 313
     new $P698, "Undef"
     .lex "$*MULTINESS", $P698
@@ -8293,7 +8293,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__multi_declarator:sym<multi>"  :subid("165_1275811487.95429") :method
+.sub "!PREFIX__multi_declarator:sym<multi>"  :subid("165_1276996322.81157") :method
 .annotate 'line', 4
     $P701 = self."!PREFIX__!subrule"("ws", "multi")
     new $P702, "ResizablePMCArray"
@@ -8303,7 +8303,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "multi_declarator:sym<null>"  :subid("166_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "multi_declarator:sym<null>"  :subid("166_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 318
     new $P708, "Undef"
     .lex "$*MULTINESS", $P708
@@ -8371,7 +8371,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__multi_declarator:sym<null>"  :subid("167_1275811487.95429") :method
+.sub "!PREFIX__multi_declarator:sym<null>"  :subid("167_1276996322.81157") :method
 .annotate 'line', 4
     $P711 = self."!PREFIX__!subrule"("declarator", "")
     new $P712, "ResizablePMCArray"
@@ -8381,7 +8381,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "signature"  :subid("168_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "signature"  :subid("168_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx716_tgt
     .local int rx716_pos
@@ -8472,7 +8472,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__signature"  :subid("169_1275811487.95429") :method
+.sub "!PREFIX__signature"  :subid("169_1276996322.81157") :method
 .annotate 'line', 4
     new $P718, "ResizablePMCArray"
     push $P718, ""
@@ -8481,7 +8481,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "parameter"  :subid("170_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "parameter"  :subid("170_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx725_tgt
     .local int rx725_pos
@@ -8664,7 +8664,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__parameter"  :subid("171_1275811487.95429") :method
+.sub "!PREFIX__parameter"  :subid("171_1276996322.81157") :method
 .annotate 'line', 4
     new $P727, "ResizablePMCArray"
     push $P727, ""
@@ -8673,7 +8673,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "param_var"  :subid("172_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "param_var"  :subid("172_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx739_tgt
     .local int rx739_pos
@@ -8782,7 +8782,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__param_var"  :subid("173_1275811487.95429") :method
+.sub "!PREFIX__param_var"  :subid("173_1276996322.81157") :method
 .annotate 'line', 4
     $P741 = self."!PREFIX__!subrule"("sigil", "")
     new $P742, "ResizablePMCArray"
@@ -8792,7 +8792,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "named_param"  :subid("174_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "named_param"  :subid("174_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx749_tgt
     .local int rx749_pos
@@ -8859,7 +8859,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__named_param"  :subid("175_1275811487.95429") :method
+.sub "!PREFIX__named_param"  :subid("175_1276996322.81157") :method
 .annotate 'line', 4
     $P751 = self."!PREFIX__!subrule"("param_var", ":")
     new $P752, "ResizablePMCArray"
@@ -8869,7 +8869,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "default_value"  :subid("176_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "default_value"  :subid("176_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx755_tgt
     .local int rx755_pos
@@ -8950,7 +8950,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__default_value"  :subid("177_1275811487.95429") :method
+.sub "!PREFIX__default_value"  :subid("177_1276996322.81157") :method
 .annotate 'line', 4
     $P757 = self."!PREFIX__!subrule"("ws", "")
     new $P758, "ResizablePMCArray"
@@ -8960,7 +8960,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "regex_declarator"  :subid("178_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "regex_declarator"  :subid("178_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx764_tgt
     .local int rx764_pos
@@ -9362,7 +9362,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__regex_declarator"  :subid("179_1275811487.95429") :method
+.sub "!PREFIX__regex_declarator"  :subid("179_1276996322.81157") :method
 .annotate 'line', 4
     $P766 = self."!PREFIX__!subrule"("ws", "")
     new $P767, "ResizablePMCArray"
@@ -9372,7 +9372,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "dotty"  :subid("180_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "dotty"  :subid("180_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx802_tgt
     .local int rx802_pos
@@ -9417,12 +9417,12 @@
 .annotate 'line', 363
     set_addr $I10, alt807_1
     rx802_cur."!mark_push"(0, rx802_pos, $I10)
-  # rx subrule "identifier" subtype=capture negate=
+  # rx subrule "deflongname" subtype=capture negate=
     rx802_cur."!cursor_pos"(rx802_pos)
-    $P10 = rx802_cur."identifier"()
+    $P10 = rx802_cur."deflongname"()
     unless $P10, rx802_fail
     rx802_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("longname=identifier")
+    $P10."!cursor_names"("longname=deflongname")
     rx802_pos = $P10."pos"()
     goto alt807_end
   alt807_1:
@@ -9529,9 +9529,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__dotty"  :subid("181_1275811487.95429") :method
+.sub "!PREFIX__dotty"  :subid("181_1276996322.81157") :method
 .annotate 'line', 4
-    $P804 = self."!PREFIX__!subrule"("identifier", ".")
+    $P804 = self."!PREFIX__!subrule"("deflongname", ".")
     new $P805, "ResizablePMCArray"
     push $P805, "'"
     push $P805, "\""
@@ -9541,7 +9541,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term"  :subid("182_1275811487.95429") :method
+.sub "term"  :subid("182_1276996322.81157") :method
 .annotate 'line', 375
     $P813 = self."!protoregex"("term")
     .return ($P813)
@@ -9549,7 +9549,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term"  :subid("183_1275811487.95429") :method
+.sub "!PREFIX__term"  :subid("183_1276996322.81157") :method
 .annotate 'line', 375
     $P815 = self."!PREFIX__!protoregex"("term")
     .return ($P815)
@@ -9557,7 +9557,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<self>"  :subid("184_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "term:sym<self>"  :subid("184_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx817_tgt
     .local int rx817_pos
@@ -9638,7 +9638,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<self>"  :subid("185_1275811487.95429") :method
+.sub "!PREFIX__term:sym<self>"  :subid("185_1276996322.81157") :method
 .annotate 'line', 4
     new $P819, "ResizablePMCArray"
     push $P819, "self"
@@ -9647,7 +9647,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<identifier>"  :subid("186_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "term:sym<identifier>"  :subid("186_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx823_tgt
     .local int rx823_pos
@@ -9680,12 +9680,12 @@
     rx823_cur."!mark_push"(0, rx823_pos, $I10)
   rxscan827_done:
 .annotate 'line', 380
-  # rx subrule "identifier" subtype=capture negate=
+  # rx subrule "deflongname" subtype=capture negate=
     rx823_cur."!cursor_pos"(rx823_pos)
-    $P10 = rx823_cur."identifier"()
+    $P10 = rx823_cur."deflongname"()
     unless $P10, rx823_fail
     rx823_cur."!mark_push"(0, -1, 0, $P10)
-    $P10."!cursor_names"("identifier")
+    $P10."!cursor_names"("deflongname")
     rx823_pos = $P10."pos"()
   # rx enumcharlist negate=0 zerowidth
     ge rx823_pos, rx823_eos, rx823_fail
@@ -9720,9 +9720,9 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<identifier>"  :subid("187_1275811487.95429") :method
+.sub "!PREFIX__term:sym<identifier>"  :subid("187_1276996322.81157") :method
 .annotate 'line', 4
-    $P825 = self."!PREFIX__!subrule"("identifier", "")
+    $P825 = self."!PREFIX__!subrule"("deflongname", "")
     new $P826, "ResizablePMCArray"
     push $P826, $P825
     .return ($P826)
@@ -9730,7 +9730,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<name>"  :subid("188_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "term:sym<name>"  :subid("188_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx829_tgt
     .local int rx829_pos
@@ -9804,7 +9804,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<name>"  :subid("189_1275811487.95429") :method
+.sub "!PREFIX__term:sym<name>"  :subid("189_1276996322.81157") :method
 .annotate 'line', 4
     $P831 = self."!PREFIX__!subrule"("name", "")
     new $P832, "ResizablePMCArray"
@@ -9814,7 +9814,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<pir::op>"  :subid("190_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "term:sym<pir::op>"  :subid("190_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx837_tgt
     .local int rx837_pos
@@ -9908,7 +9908,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<pir::op>"  :subid("191_1275811487.95429") :method
+.sub "!PREFIX__term:sym<pir::op>"  :subid("191_1276996322.81157") :method
 .annotate 'line', 4
     new $P839, "ResizablePMCArray"
     push $P839, "pir::"
@@ -9917,7 +9917,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "args"  :subid("192_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "args"  :subid("192_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx845_tgt
     .local int rx845_pos
@@ -9990,7 +9990,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__args"  :subid("193_1275811487.95429") :method
+.sub "!PREFIX__args"  :subid("193_1276996322.81157") :method
 .annotate 'line', 4
     $P847 = self."!PREFIX__!subrule"("arglist", "(")
     new $P848, "ResizablePMCArray"
@@ -10000,7 +10000,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "arglist"  :subid("194_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "arglist"  :subid("194_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx851_tgt
     .local int rx851_pos
@@ -10073,7 +10073,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__arglist"  :subid("195_1275811487.95429") :method
+.sub "!PREFIX__arglist"  :subid("195_1276996322.81157") :method
 .annotate 'line', 4
     $P853 = self."!PREFIX__!subrule"("ws", "")
     new $P854, "ResizablePMCArray"
@@ -10083,7 +10083,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<value>"  :subid("196_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "term:sym<value>"  :subid("196_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx858_tgt
     .local int rx858_pos
@@ -10142,7 +10142,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<value>"  :subid("197_1275811487.95429") :method
+.sub "!PREFIX__term:sym<value>"  :subid("197_1276996322.81157") :method
 .annotate 'line', 4
     $P860 = self."!PREFIX__!subrule"("value", "")
     new $P861, "ResizablePMCArray"
@@ -10152,7 +10152,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "value"  :subid("198_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "value"  :subid("198_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx864_tgt
     .local int rx864_pos
@@ -10227,7 +10227,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__value"  :subid("199_1275811487.95429") :method
+.sub "!PREFIX__value"  :subid("199_1276996322.81157") :method
 .annotate 'line', 4
     $P866 = self."!PREFIX__!subrule"("number", "")
     $P867 = self."!PREFIX__!subrule"("quote", "")
@@ -10239,7 +10239,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "number"  :subid("200_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "number"  :subid("200_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx872_tgt
     .local int rx872_pos
@@ -10340,7 +10340,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__number"  :subid("201_1275811487.95429") :method
+.sub "!PREFIX__number"  :subid("201_1276996322.81157") :method
 .annotate 'line', 4
     new $P874, "ResizablePMCArray"
     push $P874, ""
@@ -10349,7 +10349,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote"  :subid("202_1275811487.95429") :method
+.sub "quote"  :subid("202_1276996322.81157") :method
 .annotate 'line', 416
     $P881 = self."!protoregex"("quote")
     .return ($P881)
@@ -10357,7 +10357,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote"  :subid("203_1275811487.95429") :method
+.sub "!PREFIX__quote"  :subid("203_1276996322.81157") :method
 .annotate 'line', 416
     $P883 = self."!PREFIX__!protoregex"("quote")
     .return ($P883)
@@ -10365,7 +10365,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<apos>"  :subid("204_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "quote:sym<apos>"  :subid("204_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx885_tgt
     .local int rx885_pos
@@ -10430,7 +10430,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<apos>"  :subid("205_1275811487.95429") :method
+.sub "!PREFIX__quote:sym<apos>"  :subid("205_1276996322.81157") :method
 .annotate 'line', 4
     new $P887, "ResizablePMCArray"
     push $P887, "'"
@@ -10439,7 +10439,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<dblq>"  :subid("206_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "quote:sym<dblq>"  :subid("206_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx890_tgt
     .local int rx890_pos
@@ -10504,7 +10504,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<dblq>"  :subid("207_1275811487.95429") :method
+.sub "!PREFIX__quote:sym<dblq>"  :subid("207_1276996322.81157") :method
 .annotate 'line', 4
     new $P892, "ResizablePMCArray"
     push $P892, "\""
@@ -10513,7 +10513,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<q>"  :subid("208_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "quote:sym<q>"  :subid("208_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx895_tgt
     .local int rx895_pos
@@ -10598,7 +10598,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<q>"  :subid("209_1275811487.95429") :method
+.sub "!PREFIX__quote:sym<q>"  :subid("209_1276996322.81157") :method
 .annotate 'line', 4
     $P897 = self."!PREFIX__!subrule"("ws", "q")
     new $P898, "ResizablePMCArray"
@@ -10608,7 +10608,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<qq>"  :subid("210_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "quote:sym<qq>"  :subid("210_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx901_tgt
     .local int rx901_pos
@@ -10693,7 +10693,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<qq>"  :subid("211_1275811487.95429") :method
+.sub "!PREFIX__quote:sym<qq>"  :subid("211_1276996322.81157") :method
 .annotate 'line', 4
     $P903 = self."!PREFIX__!subrule"("ws", "qq")
     new $P904, "ResizablePMCArray"
@@ -10703,7 +10703,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<Q>"  :subid("212_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "quote:sym<Q>"  :subid("212_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx907_tgt
     .local int rx907_pos
@@ -10788,7 +10788,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<Q>"  :subid("213_1275811487.95429") :method
+.sub "!PREFIX__quote:sym<Q>"  :subid("213_1276996322.81157") :method
 .annotate 'line', 4
     $P909 = self."!PREFIX__!subrule"("ws", "Q")
     new $P910, "ResizablePMCArray"
@@ -10798,7 +10798,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym<Q:PIR>"  :subid("214_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "quote:sym<Q:PIR>"  :subid("214_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx913_tgt
     .local int rx913_pos
@@ -10869,7 +10869,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym<Q:PIR>"  :subid("215_1275811487.95429") :method
+.sub "!PREFIX__quote:sym<Q:PIR>"  :subid("215_1276996322.81157") :method
 .annotate 'line', 4
     $P915 = self."!PREFIX__!subrule"("ws", "Q:PIR")
     new $P916, "ResizablePMCArray"
@@ -10879,7 +10879,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote:sym</ />"  :subid("216_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "quote:sym</ />"  :subid("216_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx919_tgt
     .local int rx919_pos
@@ -10965,7 +10965,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote:sym</ />"  :subid("217_1275811487.95429") :method
+.sub "!PREFIX__quote:sym</ />"  :subid("217_1276996322.81157") :method
 .annotate 'line', 4
     $P921 = self."!PREFIX__!subrule"("newpad", "/")
     new $P922, "ResizablePMCArray"
@@ -10975,7 +10975,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<$>"  :subid("218_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "quote_escape:sym<$>"  :subid("218_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx925_tgt
     .local int rx925_pos
@@ -11044,7 +11044,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<$>"  :subid("219_1275811487.95429") :method
+.sub "!PREFIX__quote_escape:sym<$>"  :subid("219_1276996322.81157") :method
 .annotate 'line', 4
     new $P927, "ResizablePMCArray"
     push $P927, "$"
@@ -11053,7 +11053,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<{ }>"  :subid("220_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "quote_escape:sym<{ }>"  :subid("220_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx930_tgt
     .local int rx930_pos
@@ -11122,7 +11122,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<{ }>"  :subid("221_1275811487.95429") :method
+.sub "!PREFIX__quote_escape:sym<{ }>"  :subid("221_1276996322.81157") :method
 .annotate 'line', 4
     new $P932, "ResizablePMCArray"
     push $P932, "{"
@@ -11131,7 +11131,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "quote_escape:sym<esc>"  :subid("222_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "quote_escape:sym<esc>"  :subid("222_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx935_tgt
     .local int rx935_pos
@@ -11194,7 +11194,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__quote_escape:sym<esc>"  :subid("223_1275811487.95429") :method
+.sub "!PREFIX__quote_escape:sym<esc>"  :subid("223_1276996322.81157") :method
 .annotate 'line', 4
     new $P937, "ResizablePMCArray"
     push $P937, "\\e"
@@ -11203,7 +11203,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<( )>"  :subid("224_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "circumfix:sym<( )>"  :subid("224_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx940_tgt
     .local int rx940_pos
@@ -11288,7 +11288,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<( )>"  :subid("225_1275811487.95429") :method
+.sub "!PREFIX__circumfix:sym<( )>"  :subid("225_1276996322.81157") :method
 .annotate 'line', 4
     $P942 = self."!PREFIX__!subrule"("ws", "(")
     new $P943, "ResizablePMCArray"
@@ -11298,7 +11298,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<[ ]>"  :subid("226_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "circumfix:sym<[ ]>"  :subid("226_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx948_tgt
     .local int rx948_pos
@@ -11383,7 +11383,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<[ ]>"  :subid("227_1275811487.95429") :method
+.sub "!PREFIX__circumfix:sym<[ ]>"  :subid("227_1276996322.81157") :method
 .annotate 'line', 4
     $P950 = self."!PREFIX__!subrule"("ws", "[")
     new $P951, "ResizablePMCArray"
@@ -11393,7 +11393,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<ang>"  :subid("228_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "circumfix:sym<ang>"  :subid("228_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx956_tgt
     .local int rx956_pos
@@ -11458,7 +11458,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<ang>"  :subid("229_1275811487.95429") :method
+.sub "!PREFIX__circumfix:sym<ang>"  :subid("229_1276996322.81157") :method
 .annotate 'line', 4
     new $P958, "ResizablePMCArray"
     push $P958, "<"
@@ -11467,7 +11467,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("230_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("230_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx961_tgt
     .local int rx961_pos
@@ -11532,7 +11532,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub unicode:"!PREFIX__circumfix:sym<\x{ab} \x{bb}>"  :subid("231_1275811487.95429") :method
+.sub unicode:"!PREFIX__circumfix:sym<\x{ab} \x{bb}>"  :subid("231_1276996322.81157") :method
 .annotate 'line', 4
     new $P963, "ResizablePMCArray"
     push $P963, unicode:"\x{ab}"
@@ -11541,7 +11541,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<{ }>"  :subid("232_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "circumfix:sym<{ }>"  :subid("232_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx966_tgt
     .local int rx966_pos
@@ -11606,7 +11606,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<{ }>"  :subid("233_1275811487.95429") :method
+.sub "!PREFIX__circumfix:sym<{ }>"  :subid("233_1276996322.81157") :method
 .annotate 'line', 4
     new $P968, "ResizablePMCArray"
     push $P968, "{"
@@ -11615,7 +11615,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "circumfix:sym<sigil>"  :subid("234_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "circumfix:sym<sigil>"  :subid("234_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx971_tgt
     .local int rx971_pos
@@ -11706,7 +11706,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__circumfix:sym<sigil>"  :subid("235_1275811487.95429") :method
+.sub "!PREFIX__circumfix:sym<sigil>"  :subid("235_1276996322.81157") :method
 .annotate 'line', 4
     $P973 = self."!PREFIX__!subrule"("sigil", "")
     new $P974, "ResizablePMCArray"
@@ -11716,7 +11716,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "semilist"  :subid("236_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "semilist"  :subid("236_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 4
     .local string rx979_tgt
     .local int rx979_pos
@@ -11785,7 +11785,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__semilist"  :subid("237_1275811487.95429") :method
+.sub "!PREFIX__semilist"  :subid("237_1276996322.81157") :method
 .annotate 'line', 4
     $P981 = self."!PREFIX__!subrule"("ws", "")
     new $P982, "ResizablePMCArray"
@@ -11795,7 +11795,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infixish"  :subid("238_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infixish"  :subid("238_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx987_tgt
     .local int rx987_pos
@@ -11858,7 +11858,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infixish"  :subid("239_1275811487.95429") :method
+.sub "!PREFIX__infixish"  :subid("239_1276996322.81157") :method
 .annotate 'line', 446
     new $P989, "ResizablePMCArray"
     push $P989, ""
@@ -11867,7 +11867,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infixstopper"  :subid("240_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infixstopper"  :subid("240_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx992_tgt
     .local int rx992_pos
@@ -11923,7 +11923,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infixstopper"  :subid("241_1275811487.95429") :method
+.sub "!PREFIX__infixstopper"  :subid("241_1276996322.81157") :method
 .annotate 'line', 446
     new $P994, "ResizablePMCArray"
     push $P994, ""
@@ -11932,7 +11932,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<[ ]>"  :subid("242_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "postcircumfix:sym<[ ]>"  :subid("242_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx997_tgt
     .local int rx997_pos
@@ -12019,7 +12019,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<[ ]>"  :subid("243_1275811487.95429") :method
+.sub "!PREFIX__postcircumfix:sym<[ ]>"  :subid("243_1276996322.81157") :method
 .annotate 'line', 446
     $P999 = self."!PREFIX__!subrule"("ws", "[")
     new $P1000, "ResizablePMCArray"
@@ -12029,7 +12029,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<{ }>"  :subid("244_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "postcircumfix:sym<{ }>"  :subid("244_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1003_tgt
     .local int rx1003_pos
@@ -12116,7 +12116,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<{ }>"  :subid("245_1275811487.95429") :method
+.sub "!PREFIX__postcircumfix:sym<{ }>"  :subid("245_1276996322.81157") :method
 .annotate 'line', 446
     $P1005 = self."!PREFIX__!subrule"("ws", "{")
     new $P1006, "ResizablePMCArray"
@@ -12126,7 +12126,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<ang>"  :subid("246_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "postcircumfix:sym<ang>"  :subid("246_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1009_tgt
     .local int rx1009_pos
@@ -12200,7 +12200,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<ang>"  :subid("247_1275811487.95429") :method
+.sub "!PREFIX__postcircumfix:sym<ang>"  :subid("247_1276996322.81157") :method
 .annotate 'line', 446
     new $P1011, "ResizablePMCArray"
     push $P1011, "<"
@@ -12209,7 +12209,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postcircumfix:sym<( )>"  :subid("248_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "postcircumfix:sym<( )>"  :subid("248_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1014_tgt
     .local int rx1014_pos
@@ -12296,7 +12296,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postcircumfix:sym<( )>"  :subid("249_1275811487.95429") :method
+.sub "!PREFIX__postcircumfix:sym<( )>"  :subid("249_1276996322.81157") :method
 .annotate 'line', 446
     $P1016 = self."!PREFIX__!subrule"("ws", "(")
     new $P1017, "ResizablePMCArray"
@@ -12306,7 +12306,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postfix:sym<.>"  :subid("250_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "postfix:sym<.>"  :subid("250_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1020_tgt
     .local int rx1020_pos
@@ -12372,7 +12372,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<.>"  :subid("251_1275811487.95429") :method
+.sub "!PREFIX__postfix:sym<.>"  :subid("251_1276996322.81157") :method
 .annotate 'line', 446
     $P1022 = self."!PREFIX__!subrule"("dotty", "")
     new $P1023, "ResizablePMCArray"
@@ -12382,7 +12382,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<++>"  :subid("252_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "prefix:sym<++>"  :subid("252_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1026_tgt
     .local int rx1026_pos
@@ -12462,7 +12462,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<++>"  :subid("253_1275811487.95429") :method
+.sub "!PREFIX__prefix:sym<++>"  :subid("253_1276996322.81157") :method
 .annotate 'line', 446
     $P1028 = self."!PREFIX__!subrule"("O", "++")
     new $P1029, "ResizablePMCArray"
@@ -12472,7 +12472,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<-->"  :subid("254_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "prefix:sym<-->"  :subid("254_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1033_tgt
     .local int rx1033_pos
@@ -12552,7 +12552,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<-->"  :subid("255_1275811487.95429") :method
+.sub "!PREFIX__prefix:sym<-->"  :subid("255_1276996322.81157") :method
 .annotate 'line', 446
     $P1035 = self."!PREFIX__!subrule"("O", "--")
     new $P1036, "ResizablePMCArray"
@@ -12562,7 +12562,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postfix:sym<++>"  :subid("256_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "postfix:sym<++>"  :subid("256_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1040_tgt
     .local int rx1040_pos
@@ -12642,7 +12642,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<++>"  :subid("257_1275811487.95429") :method
+.sub "!PREFIX__postfix:sym<++>"  :subid("257_1276996322.81157") :method
 .annotate 'line', 446
     $P1042 = self."!PREFIX__!subrule"("O", "++")
     new $P1043, "ResizablePMCArray"
@@ -12652,7 +12652,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "postfix:sym<-->"  :subid("258_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "postfix:sym<-->"  :subid("258_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1047_tgt
     .local int rx1047_pos
@@ -12732,7 +12732,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__postfix:sym<-->"  :subid("259_1275811487.95429") :method
+.sub "!PREFIX__postfix:sym<-->"  :subid("259_1276996322.81157") :method
 .annotate 'line', 446
     $P1049 = self."!PREFIX__!subrule"("O", "--")
     new $P1050, "ResizablePMCArray"
@@ -12742,7 +12742,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<**>"  :subid("260_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<**>"  :subid("260_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1054_tgt
     .local int rx1054_pos
@@ -12822,7 +12822,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<**>"  :subid("261_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<**>"  :subid("261_1276996322.81157") :method
 .annotate 'line', 446
     $P1056 = self."!PREFIX__!subrule"("O", "**")
     new $P1057, "ResizablePMCArray"
@@ -12832,7 +12832,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<+>"  :subid("262_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "prefix:sym<+>"  :subid("262_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1061_tgt
     .local int rx1061_pos
@@ -12912,7 +12912,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<+>"  :subid("263_1275811487.95429") :method
+.sub "!PREFIX__prefix:sym<+>"  :subid("263_1276996322.81157") :method
 .annotate 'line', 446
     $P1063 = self."!PREFIX__!subrule"("O", "+")
     new $P1064, "ResizablePMCArray"
@@ -12922,7 +12922,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<~>"  :subid("264_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "prefix:sym<~>"  :subid("264_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1068_tgt
     .local int rx1068_pos
@@ -13002,7 +13002,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<~>"  :subid("265_1275811487.95429") :method
+.sub "!PREFIX__prefix:sym<~>"  :subid("265_1276996322.81157") :method
 .annotate 'line', 446
     $P1070 = self."!PREFIX__!subrule"("O", "~")
     new $P1071, "ResizablePMCArray"
@@ -13012,7 +13012,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<->"  :subid("266_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "prefix:sym<->"  :subid("266_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1075_tgt
     .local int rx1075_pos
@@ -13102,7 +13102,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<->"  :subid("267_1275811487.95429") :method
+.sub "!PREFIX__prefix:sym<->"  :subid("267_1276996322.81157") :method
 .annotate 'line', 446
     new $P1077, "ResizablePMCArray"
     push $P1077, "-"
@@ -13111,7 +13111,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<?>"  :subid("268_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "prefix:sym<?>"  :subid("268_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1081_tgt
     .local int rx1081_pos
@@ -13191,7 +13191,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<?>"  :subid("269_1275811487.95429") :method
+.sub "!PREFIX__prefix:sym<?>"  :subid("269_1276996322.81157") :method
 .annotate 'line', 446
     $P1083 = self."!PREFIX__!subrule"("O", "?")
     new $P1084, "ResizablePMCArray"
@@ -13201,7 +13201,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<!>"  :subid("270_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "prefix:sym<!>"  :subid("270_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1088_tgt
     .local int rx1088_pos
@@ -13281,7 +13281,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<!>"  :subid("271_1275811487.95429") :method
+.sub "!PREFIX__prefix:sym<!>"  :subid("271_1276996322.81157") :method
 .annotate 'line', 446
     $P1090 = self."!PREFIX__!subrule"("O", "!")
     new $P1091, "ResizablePMCArray"
@@ -13291,7 +13291,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<|>"  :subid("272_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "prefix:sym<|>"  :subid("272_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1095_tgt
     .local int rx1095_pos
@@ -13371,7 +13371,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<|>"  :subid("273_1275811487.95429") :method
+.sub "!PREFIX__prefix:sym<|>"  :subid("273_1276996322.81157") :method
 .annotate 'line', 446
     $P1097 = self."!PREFIX__!subrule"("O", "|")
     new $P1098, "ResizablePMCArray"
@@ -13381,7 +13381,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<*>"  :subid("274_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<*>"  :subid("274_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1102_tgt
     .local int rx1102_pos
@@ -13461,7 +13461,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<*>"  :subid("275_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<*>"  :subid("275_1276996322.81157") :method
 .annotate 'line', 446
     $P1104 = self."!PREFIX__!subrule"("O", "*")
     new $P1105, "ResizablePMCArray"
@@ -13471,7 +13471,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym</>"  :subid("276_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym</>"  :subid("276_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1109_tgt
     .local int rx1109_pos
@@ -13551,7 +13551,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym</>"  :subid("277_1275811487.95429") :method
+.sub "!PREFIX__infix:sym</>"  :subid("277_1276996322.81157") :method
 .annotate 'line', 446
     $P1111 = self."!PREFIX__!subrule"("O", "/")
     new $P1112, "ResizablePMCArray"
@@ -13561,7 +13561,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<%>"  :subid("278_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<%>"  :subid("278_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1116_tgt
     .local int rx1116_pos
@@ -13641,7 +13641,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<%>"  :subid("279_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<%>"  :subid("279_1276996322.81157") :method
 .annotate 'line', 446
     $P1118 = self."!PREFIX__!subrule"("O", "%")
     new $P1119, "ResizablePMCArray"
@@ -13651,7 +13651,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<+>"  :subid("280_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<+>"  :subid("280_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1123_tgt
     .local int rx1123_pos
@@ -13731,7 +13731,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<+>"  :subid("281_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<+>"  :subid("281_1276996322.81157") :method
 .annotate 'line', 446
     $P1125 = self."!PREFIX__!subrule"("O", "+")
     new $P1126, "ResizablePMCArray"
@@ -13741,7 +13741,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<->"  :subid("282_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<->"  :subid("282_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1130_tgt
     .local int rx1130_pos
@@ -13821,7 +13821,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<->"  :subid("283_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<->"  :subid("283_1276996322.81157") :method
 .annotate 'line', 446
     $P1132 = self."!PREFIX__!subrule"("O", "-")
     new $P1133, "ResizablePMCArray"
@@ -13831,7 +13831,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<~>"  :subid("284_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<~>"  :subid("284_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1137_tgt
     .local int rx1137_pos
@@ -13911,7 +13911,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<~>"  :subid("285_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<~>"  :subid("285_1276996322.81157") :method
 .annotate 'line', 446
     $P1139 = self."!PREFIX__!subrule"("O", "~")
     new $P1140, "ResizablePMCArray"
@@ -13921,7 +13921,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<==>"  :subid("286_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<==>"  :subid("286_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1144_tgt
     .local int rx1144_pos
@@ -14001,7 +14001,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<==>"  :subid("287_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<==>"  :subid("287_1276996322.81157") :method
 .annotate 'line', 446
     $P1146 = self."!PREFIX__!subrule"("O", "==")
     new $P1147, "ResizablePMCArray"
@@ -14011,7 +14011,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<!=>"  :subid("288_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<!=>"  :subid("288_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1151_tgt
     .local int rx1151_pos
@@ -14091,7 +14091,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<!=>"  :subid("289_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<!=>"  :subid("289_1276996322.81157") :method
 .annotate 'line', 446
     $P1153 = self."!PREFIX__!subrule"("O", "!=")
     new $P1154, "ResizablePMCArray"
@@ -14101,7 +14101,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<<=>"  :subid("290_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<<=>"  :subid("290_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1158_tgt
     .local int rx1158_pos
@@ -14181,7 +14181,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<<=>"  :subid("291_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<<=>"  :subid("291_1276996322.81157") :method
 .annotate 'line', 446
     $P1160 = self."!PREFIX__!subrule"("O", "<=")
     new $P1161, "ResizablePMCArray"
@@ -14191,7 +14191,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<>=>"  :subid("292_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<>=>"  :subid("292_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1165_tgt
     .local int rx1165_pos
@@ -14271,7 +14271,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<>=>"  :subid("293_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<>=>"  :subid("293_1276996322.81157") :method
 .annotate 'line', 446
     $P1167 = self."!PREFIX__!subrule"("O", ">=")
     new $P1168, "ResizablePMCArray"
@@ -14281,7 +14281,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<<>"  :subid("294_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<<>"  :subid("294_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1172_tgt
     .local int rx1172_pos
@@ -14361,7 +14361,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<<>"  :subid("295_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<<>"  :subid("295_1276996322.81157") :method
 .annotate 'line', 446
     $P1174 = self."!PREFIX__!subrule"("O", "<")
     new $P1175, "ResizablePMCArray"
@@ -14371,7 +14371,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<>>"  :subid("296_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<>>"  :subid("296_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1179_tgt
     .local int rx1179_pos
@@ -14451,7 +14451,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<>>"  :subid("297_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<>>"  :subid("297_1276996322.81157") :method
 .annotate 'line', 446
     $P1181 = self."!PREFIX__!subrule"("O", ">")
     new $P1182, "ResizablePMCArray"
@@ -14461,7 +14461,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<eq>"  :subid("298_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<eq>"  :subid("298_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1186_tgt
     .local int rx1186_pos
@@ -14541,7 +14541,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<eq>"  :subid("299_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<eq>"  :subid("299_1276996322.81157") :method
 .annotate 'line', 446
     $P1188 = self."!PREFIX__!subrule"("O", "eq")
     new $P1189, "ResizablePMCArray"
@@ -14551,7 +14551,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<ne>"  :subid("300_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<ne>"  :subid("300_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1193_tgt
     .local int rx1193_pos
@@ -14631,7 +14631,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<ne>"  :subid("301_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<ne>"  :subid("301_1276996322.81157") :method
 .annotate 'line', 446
     $P1195 = self."!PREFIX__!subrule"("O", "ne")
     new $P1196, "ResizablePMCArray"
@@ -14641,7 +14641,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<le>"  :subid("302_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<le>"  :subid("302_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1200_tgt
     .local int rx1200_pos
@@ -14721,7 +14721,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<le>"  :subid("303_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<le>"  :subid("303_1276996322.81157") :method
 .annotate 'line', 446
     $P1202 = self."!PREFIX__!subrule"("O", "le")
     new $P1203, "ResizablePMCArray"
@@ -14731,7 +14731,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<ge>"  :subid("304_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<ge>"  :subid("304_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1207_tgt
     .local int rx1207_pos
@@ -14811,7 +14811,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<ge>"  :subid("305_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<ge>"  :subid("305_1276996322.81157") :method
 .annotate 'line', 446
     $P1209 = self."!PREFIX__!subrule"("O", "ge")
     new $P1210, "ResizablePMCArray"
@@ -14821,7 +14821,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<lt>"  :subid("306_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<lt>"  :subid("306_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1214_tgt
     .local int rx1214_pos
@@ -14901,7 +14901,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<lt>"  :subid("307_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<lt>"  :subid("307_1276996322.81157") :method
 .annotate 'line', 446
     $P1216 = self."!PREFIX__!subrule"("O", "lt")
     new $P1217, "ResizablePMCArray"
@@ -14911,7 +14911,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<gt>"  :subid("308_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<gt>"  :subid("308_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1221_tgt
     .local int rx1221_pos
@@ -14991,7 +14991,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<gt>"  :subid("309_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<gt>"  :subid("309_1276996322.81157") :method
 .annotate 'line', 446
     $P1223 = self."!PREFIX__!subrule"("O", "gt")
     new $P1224, "ResizablePMCArray"
@@ -15001,7 +15001,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<=:=>"  :subid("310_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<=:=>"  :subid("310_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1228_tgt
     .local int rx1228_pos
@@ -15081,7 +15081,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<=:=>"  :subid("311_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<=:=>"  :subid("311_1276996322.81157") :method
 .annotate 'line', 446
     $P1230 = self."!PREFIX__!subrule"("O", "=:=")
     new $P1231, "ResizablePMCArray"
@@ -15091,7 +15091,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<~~>"  :subid("312_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<~~>"  :subid("312_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1235_tgt
     .local int rx1235_pos
@@ -15171,7 +15171,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<~~>"  :subid("313_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<~~>"  :subid("313_1276996322.81157") :method
 .annotate 'line', 446
     $P1237 = self."!PREFIX__!subrule"("O", "~~")
     new $P1238, "ResizablePMCArray"
@@ -15181,7 +15181,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<&&>"  :subid("314_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<&&>"  :subid("314_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1242_tgt
     .local int rx1242_pos
@@ -15261,7 +15261,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<&&>"  :subid("315_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<&&>"  :subid("315_1276996322.81157") :method
 .annotate 'line', 446
     $P1244 = self."!PREFIX__!subrule"("O", "&&")
     new $P1245, "ResizablePMCArray"
@@ -15271,7 +15271,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<||>"  :subid("316_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<||>"  :subid("316_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1249_tgt
     .local int rx1249_pos
@@ -15351,7 +15351,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<||>"  :subid("317_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<||>"  :subid("317_1276996322.81157") :method
 .annotate 'line', 446
     $P1251 = self."!PREFIX__!subrule"("O", "||")
     new $P1252, "ResizablePMCArray"
@@ -15361,7 +15361,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<//>"  :subid("318_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<//>"  :subid("318_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1256_tgt
     .local int rx1256_pos
@@ -15441,7 +15441,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<//>"  :subid("319_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<//>"  :subid("319_1276996322.81157") :method
 .annotate 'line', 446
     $P1258 = self."!PREFIX__!subrule"("O", "//")
     new $P1259, "ResizablePMCArray"
@@ -15451,7 +15451,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<?? !!>"  :subid("320_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<?? !!>"  :subid("320_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1263_tgt
     .local int rx1263_pos
@@ -15541,7 +15541,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<?? !!>"  :subid("321_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<?? !!>"  :subid("321_1276996322.81157") :method
 .annotate 'line', 446
     $P1265 = self."!PREFIX__!subrule"("ws", "??")
     new $P1266, "ResizablePMCArray"
@@ -15551,7 +15551,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<=>"  :subid("322_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<=>"  :subid("322_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1269_tgt
     .local int rx1269_pos
@@ -15630,7 +15630,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<=>"  :subid("323_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<=>"  :subid("323_1276996322.81157") :method
 .annotate 'line', 446
     $P1271 = self."!PREFIX__!subrule"("panic", "=")
     new $P1272, "ResizablePMCArray"
@@ -15640,7 +15640,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<:=>"  :subid("324_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<:=>"  :subid("324_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1276_tgt
     .local int rx1276_pos
@@ -15720,7 +15720,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<:=>"  :subid("325_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<:=>"  :subid("325_1276996322.81157") :method
 .annotate 'line', 446
     $P1278 = self."!PREFIX__!subrule"("O", ":=")
     new $P1279, "ResizablePMCArray"
@@ -15730,7 +15730,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<::=>"  :subid("326_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<::=>"  :subid("326_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1283_tgt
     .local int rx1283_pos
@@ -15810,7 +15810,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<::=>"  :subid("327_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<::=>"  :subid("327_1276996322.81157") :method
 .annotate 'line', 446
     $P1285 = self."!PREFIX__!subrule"("O", "::=")
     new $P1286, "ResizablePMCArray"
@@ -15820,7 +15820,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "infix:sym<,>"  :subid("328_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "infix:sym<,>"  :subid("328_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1290_tgt
     .local int rx1290_pos
@@ -15900,7 +15900,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__infix:sym<,>"  :subid("329_1275811487.95429") :method
+.sub "!PREFIX__infix:sym<,>"  :subid("329_1276996322.81157") :method
 .annotate 'line', 446
     $P1292 = self."!PREFIX__!subrule"("O", ",")
     new $P1293, "ResizablePMCArray"
@@ -15910,7 +15910,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<return>"  :subid("330_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "prefix:sym<return>"  :subid("330_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1297_tgt
     .local int rx1297_pos
@@ -15996,7 +15996,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<return>"  :subid("331_1275811487.95429") :method
+.sub "!PREFIX__prefix:sym<return>"  :subid("331_1276996322.81157") :method
 .annotate 'line', 446
     new $P1299, "ResizablePMCArray"
     push $P1299, "return"
@@ -16005,7 +16005,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "prefix:sym<make>"  :subid("332_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "prefix:sym<make>"  :subid("332_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1303_tgt
     .local int rx1303_pos
@@ -16091,7 +16091,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__prefix:sym<make>"  :subid("333_1275811487.95429") :method
+.sub "!PREFIX__prefix:sym<make>"  :subid("333_1276996322.81157") :method
 .annotate 'line', 446
     new $P1305, "ResizablePMCArray"
     push $P1305, "make"
@@ -16100,7 +16100,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<last>"  :subid("334_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "term:sym<last>"  :subid("334_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1309_tgt
     .local int rx1309_pos
@@ -16173,7 +16173,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<last>"  :subid("335_1275811487.95429") :method
+.sub "!PREFIX__term:sym<last>"  :subid("335_1276996322.81157") :method
 .annotate 'line', 446
     new $P1311, "ResizablePMCArray"
     push $P1311, "last"
@@ -16182,7 +16182,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<next>"  :subid("336_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "term:sym<next>"  :subid("336_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1315_tgt
     .local int rx1315_pos
@@ -16255,7 +16255,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<next>"  :subid("337_1275811487.95429") :method
+.sub "!PREFIX__term:sym<next>"  :subid("337_1276996322.81157") :method
 .annotate 'line', 446
     new $P1317, "ResizablePMCArray"
     push $P1317, "next"
@@ -16264,7 +16264,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "term:sym<redo>"  :subid("338_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "term:sym<redo>"  :subid("338_1276996322.81157") :method :outer("11_1276996322.81157")
 .annotate 'line', 446
     .local string rx1321_tgt
     .local int rx1321_pos
@@ -16337,7 +16337,7 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "!PREFIX__term:sym<redo>"  :subid("339_1275811487.95429") :method
+.sub "!PREFIX__term:sym<redo>"  :subid("339_1276996322.81157") :method
 .annotate 'line', 446
     new $P1323, "ResizablePMCArray"
     push $P1323, "redo"
@@ -16347,7 +16347,7 @@
 
 .namespace ["NQP";"Grammar"]
 .include "except_types.pasm"
-.sub "smartmatch"  :subid("340_1275811487.95429") :method :outer("11_1275811487.95429")
+.sub "smartmatch"  :subid("340_1276996322.81157") :method :outer("11_1276996322.81157")
     .param pmc param_1329
 .annotate 'line', 557
     new $P1328, 'ExceptionHandler'
@@ -16400,34 +16400,34 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1339"  :subid("341_1275811487.95429") :outer("11_1275811487.95429")
+.sub "_block1339"  :subid("341_1276996322.81157") :outer("11_1276996322.81157")
 .annotate 'line', 563
-    .const 'Sub' $P1397 = "360_1275811487.95429" 
+    .const 'Sub' $P1397 = "360_1276996322.81157" 
     capture_lex $P1397
-    .const 'Sub' $P1392 = "358_1275811487.95429" 
+    .const 'Sub' $P1392 = "358_1276996322.81157" 
     capture_lex $P1392
-    .const 'Sub' $P1379 = "355_1275811487.95429" 
+    .const 'Sub' $P1379 = "355_1276996322.81157" 
     capture_lex $P1379
-    .const 'Sub' $P1369 = "352_1275811487.95429" 
+    .const 'Sub' $P1369 = "352_1276996322.81157" 
     capture_lex $P1369
-    .const 'Sub' $P1364 = "350_1275811487.95429" 
+    .const 'Sub' $P1364 = "350_1276996322.81157" 
     capture_lex $P1364
-    .const 'Sub' $P1355 = "347_1275811487.95429" 
+    .const 'Sub' $P1355 = "347_1276996322.81157" 
     capture_lex $P1355
-    .const 'Sub' $P1350 = "345_1275811487.95429" 
+    .const 'Sub' $P1350 = "345_1276996322.81157" 
     capture_lex $P1350
-    .const 'Sub' $P1341 = "342_1275811487.95429" 
+    .const 'Sub' $P1341 = "342_1276996322.81157" 
     capture_lex $P1341
-    .const 'Sub' $P1397 = "360_1275811487.95429" 
+    .const 'Sub' $P1397 = "360_1276996322.81157" 
     capture_lex $P1397
     .return ($P1397)
 .end
 
 
 .namespace ["NQP";"Regex"]
-.sub "metachar:sym<:my>"  :subid("342_1275811487.95429") :method :outer("341_1275811487.95429")
+.sub "metachar:sym<:my>"  :subid("342_1276996322.81157") :method :outer("341_1276996322.81157")
 .annotate 'line', 563
-    .const 'Sub' $P1347 = "344_1275811487.95429" 
+    .const 'Sub' $P1347 = "344_1276996322.81157" 
     capture_lex $P1347
     .local string rx1342_tgt
     .local int rx1342_pos
@@ -16469,7 +16469,7 @@
     add rx1342_pos, 1
   # rx subrule "before" subtype=zerowidth negate=
     rx1342_cur."!cursor_pos"(rx1342_pos)
-    .const 'Sub' $P1347 = "344_1275811487.95429" 
+    .const 'Sub' $P1347 = "344_1276996322.81157" 
     capture_lex $P1347
     $P10 = rx1342_cur."before"($P1347)
     unless $P10, rx1342_fail
@@ -16512,7 +16512,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__metachar:sym<:my>"  :subid("343_1275811487.95429") :method
+.sub "!PREFIX__metachar:sym<:my>"  :subid("343_1276996322.81157") :method
 .annotate 'line', 563
     new $P1344, "ResizablePMCArray"
     push $P1344, ":"
@@ -16521,7 +16521,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1346"  :anon :subid("344_1275811487.95429") :method :outer("342_1275811487.95429")
+.sub "_block1346"  :anon :subid("344_1276996322.81157") :method :outer("342_1276996322.81157")
 .annotate 'line', 565
     .local string rx1348_tgt
     .local int rx1348_pos
@@ -16578,7 +16578,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "metachar:sym<{ }>"  :subid("345_1275811487.95429") :method :outer("341_1275811487.95429")
+.sub "metachar:sym<{ }>"  :subid("345_1276996322.81157") :method :outer("341_1276996322.81157")
 .annotate 'line', 563
     .local string rx1351_tgt
     .local int rx1351_pos
@@ -16644,7 +16644,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__metachar:sym<{ }>"  :subid("346_1275811487.95429") :method
+.sub "!PREFIX__metachar:sym<{ }>"  :subid("346_1276996322.81157") :method
 .annotate 'line', 563
     new $P1353, "ResizablePMCArray"
     push $P1353, "{"
@@ -16653,9 +16653,9 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "metachar:sym<nqpvar>"  :subid("347_1275811487.95429") :method :outer("341_1275811487.95429")
+.sub "metachar:sym<nqpvar>"  :subid("347_1276996322.81157") :method :outer("341_1276996322.81157")
 .annotate 'line', 563
-    .const 'Sub' $P1361 = "349_1275811487.95429" 
+    .const 'Sub' $P1361 = "349_1276996322.81157" 
     capture_lex $P1361
     .local string rx1356_tgt
     .local int rx1356_pos
@@ -16696,7 +16696,7 @@
     lt $I11, 0, rx1356_fail
   # rx subrule "before" subtype=zerowidth negate=
     rx1356_cur."!cursor_pos"(rx1356_pos)
-    .const 'Sub' $P1361 = "349_1275811487.95429" 
+    .const 'Sub' $P1361 = "349_1276996322.81157" 
     capture_lex $P1361
     $P10 = rx1356_cur."before"($P1361)
     unless $P10, rx1356_fail
@@ -16727,7 +16727,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__metachar:sym<nqpvar>"  :subid("348_1275811487.95429") :method
+.sub "!PREFIX__metachar:sym<nqpvar>"  :subid("348_1276996322.81157") :method
 .annotate 'line', 563
     new $P1358, "ResizablePMCArray"
     push $P1358, "$"
@@ -16737,7 +16737,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1360"  :anon :subid("349_1275811487.95429") :method :outer("347_1275811487.95429")
+.sub "_block1360"  :anon :subid("349_1276996322.81157") :method :outer("347_1276996322.81157")
 .annotate 'line', 573
     .local string rx1362_tgt
     .local int rx1362_pos
@@ -16796,7 +16796,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "assertion:sym<{ }>"  :subid("350_1275811487.95429") :method :outer("341_1275811487.95429")
+.sub "assertion:sym<{ }>"  :subid("350_1276996322.81157") :method :outer("341_1276996322.81157")
 .annotate 'line', 563
     .local string rx1365_tgt
     .local int rx1365_pos
@@ -16862,7 +16862,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<{ }>"  :subid("351_1275811487.95429") :method
+.sub "!PREFIX__assertion:sym<{ }>"  :subid("351_1276996322.81157") :method
 .annotate 'line', 563
     new $P1367, "ResizablePMCArray"
     push $P1367, "{"
@@ -16871,9 +16871,9 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "assertion:sym<?{ }>"  :subid("352_1275811487.95429") :method :outer("341_1275811487.95429")
+.sub "assertion:sym<?{ }>"  :subid("352_1276996322.81157") :method :outer("341_1276996322.81157")
 .annotate 'line', 563
-    .const 'Sub' $P1375 = "354_1275811487.95429" 
+    .const 'Sub' $P1375 = "354_1276996322.81157" 
     capture_lex $P1375
     .local string rx1370_tgt
     .local int rx1370_pos
@@ -16918,7 +16918,7 @@
     inc rx1370_pos
   # rx subrule "before" subtype=zerowidth negate=
     rx1370_cur."!cursor_pos"(rx1370_pos)
-    .const 'Sub' $P1375 = "354_1275811487.95429" 
+    .const 'Sub' $P1375 = "354_1276996322.81157" 
     capture_lex $P1375
     $P10 = rx1370_cur."before"($P1375)
     unless $P10, rx1370_fail
@@ -16960,7 +16960,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<?{ }>"  :subid("353_1275811487.95429") :method
+.sub "!PREFIX__assertion:sym<?{ }>"  :subid("353_1276996322.81157") :method
 .annotate 'line', 563
     new $P1372, "ResizablePMCArray"
     push $P1372, "!"
@@ -16970,7 +16970,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1374"  :anon :subid("354_1275811487.95429") :method :outer("352_1275811487.95429")
+.sub "_block1374"  :anon :subid("354_1276996322.81157") :method :outer("352_1276996322.81157")
 .annotate 'line', 581
     .local string rx1376_tgt
     .local int rx1376_pos
@@ -17027,9 +17027,9 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "assertion:sym<name>"  :subid("355_1275811487.95429") :method :outer("341_1275811487.95429")
+.sub "assertion:sym<name>"  :subid("355_1276996322.81157") :method :outer("341_1276996322.81157")
 .annotate 'line', 563
-    .const 'Sub' $P1388 = "357_1275811487.95429" 
+    .const 'Sub' $P1388 = "357_1276996322.81157" 
     capture_lex $P1388
     .local string rx1380_tgt
     .local int rx1380_pos
@@ -17039,7 +17039,7 @@
     .local pmc rx1380_cur
     (rx1380_cur, rx1380_pos, rx1380_tgt) = self."!cursor_start"()
     rx1380_cur."!cursor_debug"("START ", "assertion:sym<name>")
-    rx1380_cur."!cursor_caparray"("nibbler", "arglist", "assertion")
+    rx1380_cur."!cursor_caparray"("assertion", "nibbler", "arglist")
     .lex unicode:"$\x{a2}", rx1380_cur
     .local pmc match
     .lex "$/", match
@@ -17095,7 +17095,7 @@
 .annotate 'line', 587
   # rx subrule "before" subtype=zerowidth negate=
     rx1380_cur."!cursor_pos"(rx1380_pos)
-    .const 'Sub' $P1388 = "357_1275811487.95429" 
+    .const 'Sub' $P1388 = "357_1276996322.81157" 
     capture_lex $P1388
     $P10 = rx1380_cur."before"($P1388)
     unless $P10, rx1380_fail
@@ -17202,7 +17202,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<name>"  :subid("356_1275811487.95429") :method
+.sub "!PREFIX__assertion:sym<name>"  :subid("356_1276996322.81157") :method
 .annotate 'line', 563
     new $P1382, "ResizablePMCArray"
     push $P1382, ""
@@ -17211,7 +17211,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "_block1387"  :anon :subid("357_1275811487.95429") :method :outer("355_1275811487.95429")
+.sub "_block1387"  :anon :subid("357_1276996322.81157") :method :outer("355_1276996322.81157")
 .annotate 'line', 587
     .local string rx1389_tgt
     .local int rx1389_pos
@@ -17268,7 +17268,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "assertion:sym<var>"  :subid("358_1275811487.95429") :method :outer("341_1275811487.95429")
+.sub "assertion:sym<var>"  :subid("358_1276996322.81157") :method :outer("341_1276996322.81157")
 .annotate 'line', 563
     .local string rx1393_tgt
     .local int rx1393_pos
@@ -17334,7 +17334,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__assertion:sym<var>"  :subid("359_1275811487.95429") :method
+.sub "!PREFIX__assertion:sym<var>"  :subid("359_1276996322.81157") :method
 .annotate 'line', 563
     new $P1395, "ResizablePMCArray"
     push $P1395, "$"
@@ -17344,7 +17344,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "codeblock"  :subid("360_1275811487.95429") :method :outer("341_1275811487.95429")
+.sub "codeblock"  :subid("360_1276996322.81157") :method :outer("341_1276996322.81157")
 .annotate 'line', 563
     .local string rx1398_tgt
     .local int rx1398_pos
@@ -17404,7 +17404,7 @@
 
 
 .namespace ["NQP";"Regex"]
-.sub "!PREFIX__codeblock"  :subid("361_1275811487.95429") :method
+.sub "!PREFIX__codeblock"  :subid("361_1276996322.81157") :method
 .annotate 'line', 563
     $P1400 = self."!PREFIX__!subrule"("LANG", "")
     new $P1401, "ResizablePMCArray"
@@ -17414,18 +17414,18 @@
 
 
 .namespace ["NQP";"Grammar"]
-.sub "_block1404" :load :anon :subid("362_1275811487.95429")
+.sub "_block1404" :load :anon :subid("362_1276996322.81157")
 .annotate 'line', 4
-    .const 'Sub' $P1406 = "11_1275811487.95429" 
+    .const 'Sub' $P1406 = "11_1276996322.81157" 
     $P1407 = $P1406()
     .return ($P1407)
 .end
 
 
 .namespace []
-.sub "_block1425" :load :anon :subid("363_1275811487.95429")
+.sub "_block1425" :load :anon :subid("363_1276996322.81157")
 .annotate 'line', 1
-    .const 'Sub' $P1427 = "10_1275811487.95429" 
+    .const 'Sub' $P1427 = "10_1276996322.81157" 
     $P1428 = $P1427()
     .return ($P1428)
 .end
@@ -17433,7 +17433,7 @@
 ### .include 'gen/nqp-actions.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1275811497.55064")
+.sub "_block11"  :anon :subid("10_1276996335.94529")
 .annotate 'line', 0
     get_hll_global $P14, ["NQP";"Actions"], "_block13" 
     capture_lex $P14
@@ -17450,15 +17450,15 @@
     $P2424 = $P14()
 .annotate 'line', 1
     .return ($P2424)
-    .const 'Sub' $P2426 = "143_1275811497.55064" 
+    .const 'Sub' $P2426 = "143_1276996335.94529" 
     .return ($P2426)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post144") :outer("10_1275811497.55064")
+.sub "" :load :init :subid("post144") :outer("10_1276996335.94529")
 .annotate 'line', 0
-    .const 'Sub' $P12 = "10_1275811497.55064" 
+    .const 'Sub' $P12 = "10_1276996335.94529" 
     .local pmc block
     set block, $P12
     $P2429 = get_root_global ["parrot"], "P6metaclass"
@@ -17467,217 +17467,217 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block13"  :subid("11_1275811497.55064") :outer("10_1275811497.55064")
+.sub "_block13"  :subid("11_1276996335.94529") :outer("10_1276996335.94529")
 .annotate 'line', 3
-    .const 'Sub' $P2420 = "142_1275811497.55064" 
+    .const 'Sub' $P2420 = "142_1276996335.94529" 
     capture_lex $P2420
     get_hll_global $P2303, ["NQP";"RegexActions"], "_block2302" 
     capture_lex $P2303
-    .const 'Sub' $P2292 = "132_1275811497.55064" 
+    .const 'Sub' $P2292 = "132_1276996335.94529" 
     capture_lex $P2292
-    .const 'Sub' $P2285 = "131_1275811497.55064" 
+    .const 'Sub' $P2285 = "131_1276996335.94529" 
     capture_lex $P2285
-    .const 'Sub' $P2278 = "130_1275811497.55064" 
+    .const 'Sub' $P2278 = "130_1276996335.94529" 
     capture_lex $P2278
-    .const 'Sub' $P2271 = "129_1275811497.55064" 
+    .const 'Sub' $P2271 = "129_1276996335.94529" 
     capture_lex $P2271
-    .const 'Sub' $P2258 = "128_1275811497.55064" 
+    .const 'Sub' $P2258 = "128_1276996335.94529" 
     capture_lex $P2258
-    .const 'Sub' $P2248 = "127_1275811497.55064" 
+    .const 'Sub' $P2248 = "127_1276996335.94529" 
     capture_lex $P2248
-    .const 'Sub' $P2238 = "126_1275811497.55064" 
+    .const 'Sub' $P2238 = "126_1276996335.94529" 
     capture_lex $P2238
-    .const 'Sub' $P2228 = "125_1275811497.55064" 
+    .const 'Sub' $P2228 = "125_1276996335.94529" 
     capture_lex $P2228
-    .const 'Sub' $P2221 = "124_1275811497.55064" 
+    .const 'Sub' $P2221 = "124_1276996335.94529" 
     capture_lex $P2221
-    .const 'Sub' $P2207 = "123_1275811497.55064" 
+    .const 'Sub' $P2207 = "123_1276996335.94529" 
     capture_lex $P2207
-    .const 'Sub' $P2197 = "122_1275811497.55064" 
+    .const 'Sub' $P2197 = "122_1276996335.94529" 
     capture_lex $P2197
-    .const 'Sub' $P2160 = "121_1275811497.55064" 
+    .const 'Sub' $P2160 = "121_1276996335.94529" 
     capture_lex $P2160
-    .const 'Sub' $P2146 = "120_1275811497.55064" 
+    .const 'Sub' $P2146 = "120_1276996335.94529" 
     capture_lex $P2146
-    .const 'Sub' $P2136 = "119_1275811497.55064" 
+    .const 'Sub' $P2136 = "119_1276996335.94529" 
     capture_lex $P2136
-    .const 'Sub' $P2126 = "118_1275811497.55064" 
+    .const 'Sub' $P2126 = "118_1276996335.94529" 
     capture_lex $P2126
-    .const 'Sub' $P2116 = "117_1275811497.55064" 
+    .const 'Sub' $P2116 = "117_1276996335.94529" 
     capture_lex $P2116
-    .const 'Sub' $P2106 = "116_1275811497.55064" 
+    .const 'Sub' $P2106 = "116_1276996335.94529" 
     capture_lex $P2106
-    .const 'Sub' $P2096 = "115_1275811497.55064" 
+    .const 'Sub' $P2096 = "115_1276996335.94529" 
     capture_lex $P2096
-    .const 'Sub' $P2068 = "114_1275811497.55064" 
+    .const 'Sub' $P2068 = "114_1276996335.94529" 
     capture_lex $P2068
-    .const 'Sub' $P2051 = "113_1275811497.55064" 
+    .const 'Sub' $P2051 = "113_1276996335.94529" 
     capture_lex $P2051
-    .const 'Sub' $P2041 = "112_1275811497.55064" 
+    .const 'Sub' $P2041 = "112_1276996335.94529" 
     capture_lex $P2041
-    .const 'Sub' $P2028 = "111_1275811497.55064" 
+    .const 'Sub' $P2028 = "111_1276996335.94529" 
     capture_lex $P2028
-    .const 'Sub' $P2015 = "110_1275811497.55064" 
+    .const 'Sub' $P2015 = "110_1276996335.94529" 
     capture_lex $P2015
-    .const 'Sub' $P2002 = "109_1275811497.55064" 
+    .const 'Sub' $P2002 = "109_1276996335.94529" 
     capture_lex $P2002
-    .const 'Sub' $P1992 = "108_1275811497.55064" 
+    .const 'Sub' $P1992 = "108_1276996335.94529" 
     capture_lex $P1992
-    .const 'Sub' $P1963 = "107_1275811497.55064" 
+    .const 'Sub' $P1963 = "107_1276996335.94529" 
     capture_lex $P1963
-    .const 'Sub' $P1939 = "106_1275811497.55064" 
+    .const 'Sub' $P1939 = "106_1276996335.94529" 
     capture_lex $P1939
-    .const 'Sub' $P1929 = "105_1275811497.55064" 
+    .const 'Sub' $P1929 = "105_1276996335.94529" 
     capture_lex $P1929
-    .const 'Sub' $P1919 = "104_1275811497.55064" 
+    .const 'Sub' $P1919 = "104_1276996335.94529" 
     capture_lex $P1919
-    .const 'Sub' $P1892 = "103_1275811497.55064" 
+    .const 'Sub' $P1892 = "103_1276996335.94529" 
     capture_lex $P1892
-    .const 'Sub' $P1874 = "102_1275811497.55064" 
+    .const 'Sub' $P1874 = "102_1276996335.94529" 
     capture_lex $P1874
-    .const 'Sub' $P1864 = "101_1275811497.55064" 
+    .const 'Sub' $P1864 = "101_1276996335.94529" 
     capture_lex $P1864
-    .const 'Sub' $P1760 = "98_1275811497.55064" 
+    .const 'Sub' $P1760 = "98_1276996335.94529" 
     capture_lex $P1760
-    .const 'Sub' $P1750 = "97_1275811497.55064" 
+    .const 'Sub' $P1750 = "97_1276996335.94529" 
     capture_lex $P1750
-    .const 'Sub' $P1721 = "96_1275811497.55064" 
+    .const 'Sub' $P1721 = "96_1276996335.94529" 
     capture_lex $P1721
-    .const 'Sub' $P1679 = "95_1275811497.55064" 
+    .const 'Sub' $P1679 = "95_1276996335.94529" 
     capture_lex $P1679
-    .const 'Sub' $P1663 = "94_1275811497.55064" 
+    .const 'Sub' $P1663 = "94_1276996335.94529" 
     capture_lex $P1663
-    .const 'Sub' $P1654 = "93_1275811497.55064" 
+    .const 'Sub' $P1654 = "93_1276996335.94529" 
     capture_lex $P1654
-    .const 'Sub' $P1622 = "92_1275811497.55064" 
+    .const 'Sub' $P1622 = "92_1276996335.94529" 
     capture_lex $P1622
-    .const 'Sub' $P1523 = "89_1275811497.55064" 
+    .const 'Sub' $P1523 = "89_1276996335.94529" 
     capture_lex $P1523
-    .const 'Sub' $P1506 = "88_1275811497.55064" 
+    .const 'Sub' $P1506 = "88_1276996335.94529" 
     capture_lex $P1506
-    .const 'Sub' $P1486 = "87_1275811497.55064" 
+    .const 'Sub' $P1486 = "87_1276996335.94529" 
     capture_lex $P1486
-    .const 'Sub' $P1374 = "84_1275811497.55064" 
+    .const 'Sub' $P1374 = "84_1276996335.94529" 
     capture_lex $P1374
-    .const 'Sub' $P1317 = "80_1275811497.55064" 
+    .const 'Sub' $P1317 = "80_1276996335.94529" 
     capture_lex $P1317
-    .const 'Sub' $P1277 = "78_1275811497.55064" 
+    .const 'Sub' $P1277 = "78_1276996335.94529" 
     capture_lex $P1277
-    .const 'Sub' $P1227 = "76_1275811497.55064" 
+    .const 'Sub' $P1227 = "76_1276996335.94529" 
     capture_lex $P1227
-    .const 'Sub' $P1217 = "75_1275811497.55064" 
+    .const 'Sub' $P1217 = "75_1276996335.94529" 
     capture_lex $P1217
-    .const 'Sub' $P1207 = "74_1275811497.55064" 
+    .const 'Sub' $P1207 = "74_1276996335.94529" 
     capture_lex $P1207
-    .const 'Sub' $P1136 = "72_1275811497.55064" 
+    .const 'Sub' $P1136 = "72_1276996335.94529" 
     capture_lex $P1136
-    .const 'Sub' $P1126 = "71_1275811497.55064" 
+    .const 'Sub' $P1126 = "71_1276996335.94529" 
     capture_lex $P1126
-    .const 'Sub' $P1109 = "70_1275811497.55064" 
+    .const 'Sub' $P1109 = "70_1276996335.94529" 
     capture_lex $P1109
-    .const 'Sub' $P1092 = "69_1275811497.55064" 
+    .const 'Sub' $P1092 = "69_1276996335.94529" 
     capture_lex $P1092
-    .const 'Sub' $P1075 = "68_1275811497.55064" 
+    .const 'Sub' $P1075 = "68_1276996335.94529" 
     capture_lex $P1075
-    .const 'Sub' $P1065 = "67_1275811497.55064" 
+    .const 'Sub' $P1065 = "67_1276996335.94529" 
     capture_lex $P1065
-    .const 'Sub' $P1055 = "66_1275811497.55064" 
+    .const 'Sub' $P1055 = "66_1276996335.94529" 
     capture_lex $P1055
-    .const 'Sub' $P1045 = "65_1275811497.55064" 
+    .const 'Sub' $P1045 = "65_1276996335.94529" 
     capture_lex $P1045
-    .const 'Sub' $P1021 = "64_1275811497.55064" 
+    .const 'Sub' $P1021 = "64_1276996335.94529" 
     capture_lex $P1021
-    .const 'Sub' $P968 = "63_1275811497.55064" 
+    .const 'Sub' $P968 = "63_1276996335.94529" 
     capture_lex $P968
-    .const 'Sub' $P958 = "62_1275811497.55064" 
+    .const 'Sub' $P958 = "62_1276996335.94529" 
     capture_lex $P958
-    .const 'Sub' $P869 = "60_1275811497.55064" 
+    .const 'Sub' $P869 = "60_1276996335.94529" 
     capture_lex $P869
-    .const 'Sub' $P843 = "59_1275811497.55064" 
+    .const 'Sub' $P843 = "59_1276996335.94529" 
     capture_lex $P843
-    .const 'Sub' $P827 = "58_1275811497.55064" 
+    .const 'Sub' $P827 = "58_1276996335.94529" 
     capture_lex $P827
-    .const 'Sub' $P817 = "57_1275811497.55064" 
+    .const 'Sub' $P817 = "57_1276996335.94529" 
     capture_lex $P817
-    .const 'Sub' $P807 = "56_1275811497.55064" 
+    .const 'Sub' $P807 = "56_1276996335.94529" 
     capture_lex $P807
-    .const 'Sub' $P797 = "55_1275811497.55064" 
+    .const 'Sub' $P797 = "55_1276996335.94529" 
     capture_lex $P797
-    .const 'Sub' $P787 = "54_1275811497.55064" 
+    .const 'Sub' $P787 = "54_1276996335.94529" 
     capture_lex $P787
-    .const 'Sub' $P777 = "53_1275811497.55064" 
+    .const 'Sub' $P777 = "53_1276996335.94529" 
     capture_lex $P777
-    .const 'Sub' $P767 = "52_1275811497.55064" 
+    .const 'Sub' $P767 = "52_1276996335.94529" 
     capture_lex $P767
-    .const 'Sub' $P757 = "51_1275811497.55064" 
+    .const 'Sub' $P757 = "51_1276996335.94529" 
     capture_lex $P757
-    .const 'Sub' $P747 = "50_1275811497.55064" 
+    .const 'Sub' $P747 = "50_1276996335.94529" 
     capture_lex $P747
-    .const 'Sub' $P737 = "49_1275811497.55064" 
+    .const 'Sub' $P737 = "49_1276996335.94529" 
     capture_lex $P737
-    .const 'Sub' $P727 = "48_1275811497.55064" 
+    .const 'Sub' $P727 = "48_1276996335.94529" 
     capture_lex $P727
-    .const 'Sub' $P717 = "47_1275811497.55064" 
+    .const 'Sub' $P717 = "47_1276996335.94529" 
     capture_lex $P717
-    .const 'Sub' $P707 = "46_1275811497.55064" 
+    .const 'Sub' $P707 = "46_1276996335.94529" 
     capture_lex $P707
-    .const 'Sub' $P697 = "45_1275811497.55064" 
+    .const 'Sub' $P697 = "45_1276996335.94529" 
     capture_lex $P697
-    .const 'Sub' $P679 = "44_1275811497.55064" 
+    .const 'Sub' $P679 = "44_1276996335.94529" 
     capture_lex $P679
-    .const 'Sub' $P644 = "43_1275811497.55064" 
+    .const 'Sub' $P644 = "43_1276996335.94529" 
     capture_lex $P644
-    .const 'Sub' $P628 = "42_1275811497.55064" 
+    .const 'Sub' $P628 = "42_1276996335.94529" 
     capture_lex $P628
-    .const 'Sub' $P607 = "41_1275811497.55064" 
+    .const 'Sub' $P607 = "41_1276996335.94529" 
     capture_lex $P607
-    .const 'Sub' $P587 = "40_1275811497.55064" 
+    .const 'Sub' $P587 = "40_1276996335.94529" 
     capture_lex $P587
-    .const 'Sub' $P574 = "39_1275811497.55064" 
+    .const 'Sub' $P574 = "39_1276996335.94529" 
     capture_lex $P574
-    .const 'Sub' $P548 = "38_1275811497.55064" 
+    .const 'Sub' $P548 = "38_1276996335.94529" 
     capture_lex $P548
-    .const 'Sub' $P512 = "37_1275811497.55064" 
+    .const 'Sub' $P512 = "37_1276996335.94529" 
     capture_lex $P512
-    .const 'Sub' $P495 = "36_1275811497.55064" 
+    .const 'Sub' $P495 = "36_1276996335.94529" 
     capture_lex $P495
-    .const 'Sub' $P481 = "35_1275811497.55064" 
+    .const 'Sub' $P481 = "35_1276996335.94529" 
     capture_lex $P481
-    .const 'Sub' $P428 = "33_1275811497.55064" 
+    .const 'Sub' $P428 = "33_1276996335.94529" 
     capture_lex $P428
-    .const 'Sub' $P417 = "32_1275811497.55064" 
+    .const 'Sub' $P417 = "32_1276996335.94529" 
     capture_lex $P417
-    .const 'Sub' $P404 = "31_1275811497.55064" 
+    .const 'Sub' $P404 = "31_1276996335.94529" 
     capture_lex $P404
-    .const 'Sub' $P384 = "30_1275811497.55064" 
+    .const 'Sub' $P384 = "30_1276996335.94529" 
     capture_lex $P384
-    .const 'Sub' $P374 = "29_1275811497.55064" 
+    .const 'Sub' $P374 = "29_1276996335.94529" 
     capture_lex $P374
-    .const 'Sub' $P364 = "28_1275811497.55064" 
+    .const 'Sub' $P364 = "28_1276996335.94529" 
     capture_lex $P364
-    .const 'Sub' $P348 = "27_1275811497.55064" 
+    .const 'Sub' $P348 = "27_1276996335.94529" 
     capture_lex $P348
-    .const 'Sub' $P288 = "25_1275811497.55064" 
+    .const 'Sub' $P288 = "25_1276996335.94529" 
     capture_lex $P288
-    .const 'Sub' $P245 = "23_1275811497.55064" 
+    .const 'Sub' $P245 = "23_1276996335.94529" 
     capture_lex $P245
-    .const 'Sub' $P213 = "22_1275811497.55064" 
+    .const 'Sub' $P213 = "22_1276996335.94529" 
     capture_lex $P213
-    .const 'Sub' $P180 = "21_1275811497.55064" 
+    .const 'Sub' $P180 = "21_1276996335.94529" 
     capture_lex $P180
-    .const 'Sub' $P170 = "20_1275811497.55064" 
+    .const 'Sub' $P170 = "20_1276996335.94529" 
     capture_lex $P170
-    .const 'Sub' $P151 = "19_1275811497.55064" 
+    .const 'Sub' $P151 = "19_1276996335.94529" 
     capture_lex $P151
-    .const 'Sub' $P100 = "18_1275811497.55064" 
+    .const 'Sub' $P100 = "18_1276996335.94529" 
     capture_lex $P100
-    .const 'Sub' $P84 = "17_1275811497.55064" 
+    .const 'Sub' $P84 = "17_1276996335.94529" 
     capture_lex $P84
-    .const 'Sub' $P63 = "16_1275811497.55064" 
+    .const 'Sub' $P63 = "16_1276996335.94529" 
     capture_lex $P63
-    .const 'Sub' $P27 = "13_1275811497.55064" 
+    .const 'Sub' $P27 = "13_1276996335.94529" 
     capture_lex $P27
-    .const 'Sub' $P16 = "12_1275811497.55064" 
+    .const 'Sub' $P16 = "12_1276996335.94529" 
     capture_lex $P16
     get_global $P15, "@BLOCK"
     unless_null $P15, vivify_147
@@ -17685,27 +17685,27 @@
     set_global "@BLOCK", $P15
   vivify_147:
 .annotate 'line', 9
-    .const 'Sub' $P16 = "12_1275811497.55064" 
+    .const 'Sub' $P16 = "12_1276996335.94529" 
     newclosure $P26, $P16
     .lex "xblock_immediate", $P26
 .annotate 'line', 14
-    .const 'Sub' $P27 = "13_1275811497.55064" 
+    .const 'Sub' $P27 = "13_1276996335.94529" 
     newclosure $P62, $P27
     .lex "block_immediate", $P62
 .annotate 'line', 24
-    .const 'Sub' $P63 = "16_1275811497.55064" 
+    .const 'Sub' $P63 = "16_1276996335.94529" 
     newclosure $P83, $P63
     .lex "vivitype", $P83
 .annotate 'line', 43
-    .const 'Sub' $P84 = "17_1275811497.55064" 
+    .const 'Sub' $P84 = "17_1276996335.94529" 
     newclosure $P99, $P84
     .lex "colonpair_str", $P99
 .annotate 'line', 213
-    .const 'Sub' $P100 = "18_1275811497.55064" 
+    .const 'Sub' $P100 = "18_1276996335.94529" 
     newclosure $P150, $P100
     .lex "push_block_handler", $P150
 .annotate 'line', 822
-    .const 'Sub' $P151 = "19_1275811497.55064" 
+    .const 'Sub' $P151 = "19_1276996335.94529" 
     newclosure $P165, $P151
     .lex "control", $P165
 .annotate 'line', 3
@@ -17732,19 +17732,19 @@
     $P2414 = $P2303()
 .annotate 'line', 3
     .return ($P2414)
-    .const 'Sub' $P2416 = "141_1275811497.55064" 
+    .const 'Sub' $P2416 = "141_1276996335.94529" 
     .return ($P2416)
 .end
 
 
 .namespace ["NQP";"Actions"]
-.sub "" :load :init :subid("post145") :outer("11_1275811497.55064")
+.sub "" :load :init :subid("post145") :outer("11_1276996335.94529")
 .annotate 'line', 3
     get_hll_global $P14, ["NQP";"Actions"], "_block13" 
     .local pmc block
     set block, $P14
 .annotate 'line', 5
-    .const 'Sub' $P2420 = "142_1275811497.55064" 
+    .const 'Sub' $P2420 = "142_1276996335.94529" 
     capture_lex $P2420
     $P2420()
     $P2423 = get_root_global ["parrot"], "P6metaclass"
@@ -17753,7 +17753,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block2419"  :anon :subid("142_1275811497.55064") :outer("11_1275811497.55064")
+.sub "_block2419"  :anon :subid("142_1276996335.94529") :outer("11_1276996335.94529")
 .annotate 'line', 6
     get_global $P2421, "@BLOCK"
     unless_null $P2421, vivify_146
@@ -17769,7 +17769,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "xblock_immediate"  :subid("12_1275811497.55064") :outer("11_1275811497.55064")
+.sub "xblock_immediate"  :subid("12_1276996335.94529") :outer("11_1276996335.94529")
     .param pmc param_19
 .annotate 'line', 9
     new $P18, 'ExceptionHandler'
@@ -17806,10 +17806,10 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "block_immediate"  :subid("13_1275811497.55064") :outer("11_1275811497.55064")
+.sub "block_immediate"  :subid("13_1276996335.94529") :outer("11_1276996335.94529")
     .param pmc param_30
 .annotate 'line', 14
-    .const 'Sub' $P40 = "14_1275811497.55064" 
+    .const 'Sub' $P40 = "14_1276996335.94529" 
     capture_lex $P40
     new $P29, 'ExceptionHandler'
     set_addr $P29, control_28
@@ -17831,7 +17831,7 @@
     set $P33, $P38
   unless_34_end:
     if $P33, unless_32_end
-    .const 'Sub' $P40 = "14_1275811497.55064" 
+    .const 'Sub' $P40 = "14_1276996335.94529" 
     capture_lex $P40
     $P40()
   unless_32_end:
@@ -17848,9 +17848,9 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "_block39"  :anon :subid("14_1275811497.55064") :outer("13_1275811497.55064")
+.sub "_block39"  :anon :subid("14_1276996335.94529") :outer("13_1276996335.94529")
 .annotate 'line', 16
-    .const 'Sub' $P51 = "15_1275811497.55064" 
+    .const 'Sub' $P51 = "15_1276996335.94529" 
     capture_lex $P51
 .annotate 'line', 17
     new $P41, "Undef"
@@ -17873,7 +17873,7 @@
     unless $P45, loop56_done
     shift $P49, $P45
   loop56_redo:
-    .const 'Sub' $P51 = "15_1275811497.55064" 
+    .const 'Sub' $P51 = "15_1276996335.94529" 
     capture_lex $P51
     $P51($P49)
   loop56_next:
@@ -17896,7 +17896,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block50"  :anon :subid("15_1275811497.55064") :outer("14_1275811497.55064")
+.sub "_block50"  :anon :subid("15_1276996335.94529") :outer("14_1276996335.94529")
     .param pmc param_52
 .annotate 'line', 18
     .lex "$_", param_52
@@ -17909,7 +17909,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "vivitype"  :subid("16_1275811497.55064") :outer("11_1275811497.55064")
+.sub "vivitype"  :subid("16_1276996335.94529") :outer("11_1276996335.94529")
     .param pmc param_66
 .annotate 'line', 24
     new $P65, 'ExceptionHandler'
@@ -17958,7 +17958,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "colonpair_str"  :subid("17_1275811497.55064") :outer("11_1275811497.55064")
+.sub "colonpair_str"  :subid("17_1276996335.94529") :outer("11_1276996335.94529")
     .param pmc param_87
 .annotate 'line', 43
     new $P86, 'ExceptionHandler'
@@ -17997,7 +17997,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "push_block_handler"  :subid("18_1275811497.55064") :outer("11_1275811497.55064")
+.sub "push_block_handler"  :subid("18_1276996335.94529") :outer("11_1276996335.94529")
     .param pmc param_103
     .param pmc param_104
 .annotate 'line', 213
@@ -18115,7 +18115,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "control"  :subid("19_1275811497.55064") :outer("11_1275811497.55064")
+.sub "control"  :subid("19_1276996335.94529") :outer("11_1276996335.94529")
     .param pmc param_154
     .param pmc param_155
 .annotate 'line', 822
@@ -18148,7 +18148,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "TOP"  :subid("20_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "TOP"  :subid("20_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_173
 .annotate 'line', 33
     new $P172, 'ExceptionHandler'
@@ -18179,7 +18179,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "deflongname"  :subid("21_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "deflongname"  :subid("21_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_183
 .annotate 'line', 35
     new $P182, 'ExceptionHandler'
@@ -18269,7 +18269,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "comp_unit"  :subid("22_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "comp_unit"  :subid("22_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_216
 .annotate 'line', 49
     new $P215, 'ExceptionHandler'
@@ -18344,10 +18344,10 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statementlist"  :subid("23_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "statementlist"  :subid("23_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_248
 .annotate 'line', 76
-    .const 'Sub' $P262 = "24_1275811497.55064" 
+    .const 'Sub' $P262 = "24_1276996335.94529" 
     capture_lex $P262
     new $P247, 'ExceptionHandler'
     set_addr $P247, control_246
@@ -18392,7 +18392,7 @@
     unless $P256, loop281_done
     shift $P260, $P256
   loop281_redo:
-    .const 'Sub' $P262 = "24_1275811497.55064" 
+    .const 'Sub' $P262 = "24_1276996335.94529" 
     capture_lex $P262
     $P262($P260)
   loop281_next:
@@ -18422,7 +18422,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block261"  :anon :subid("24_1275811497.55064") :outer("23_1275811497.55064")
+.sub "_block261"  :anon :subid("24_1276996335.94529") :outer("23_1276996335.94529")
     .param pmc param_264
 .annotate 'line', 80
     new $P263, "Undef"
@@ -18477,12 +18477,12 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement"  :subid("25_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "statement"  :subid("25_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_291
     .param pmc param_292 :optional
     .param int has_param_292 :opt_flag
 .annotate 'line', 89
-    .const 'Sub' $P300 = "26_1275811497.55064" 
+    .const 'Sub' $P300 = "26_1276996335.94529" 
     capture_lex $P300
     new $P290, 'ExceptionHandler'
     set_addr $P290, control_289
@@ -18541,7 +18541,7 @@
     goto if_296_end
   if_296:
 .annotate 'line', 91
-    .const 'Sub' $P300 = "26_1275811497.55064" 
+    .const 'Sub' $P300 = "26_1276996335.94529" 
     capture_lex $P300
     $P300()
   if_296_end:
@@ -18560,7 +18560,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block299"  :anon :subid("26_1275811497.55064") :outer("25_1275811497.55064")
+.sub "_block299"  :anon :subid("26_1276996335.94529") :outer("25_1276996335.94529")
 .annotate 'line', 92
     new $P301, "Undef"
     .lex "$mc", $P301
@@ -18674,7 +18674,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "xblock"  :subid("27_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "xblock"  :subid("27_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_351
 .annotate 'line', 107
     new $P350, 'ExceptionHandler'
@@ -18719,7 +18719,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "pblock"  :subid("28_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "pblock"  :subid("28_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_367
 .annotate 'line', 111
     new $P366, 'ExceptionHandler'
@@ -18752,7 +18752,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "block"  :subid("29_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "block"  :subid("29_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_377
 .annotate 'line', 115
     new $P376, 'ExceptionHandler'
@@ -18785,7 +18785,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "blockoid"  :subid("30_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "blockoid"  :subid("30_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_387
 .annotate 'line', 119
     new $P386, 'ExceptionHandler'
@@ -18842,7 +18842,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "newpad"  :subid("31_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "newpad"  :subid("31_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_407
 .annotate 'line', 128
     new $P406, 'ExceptionHandler'
@@ -18878,7 +18878,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "outerctx"  :subid("32_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "outerctx"  :subid("32_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_420
 .annotate 'line', 133
     new $P419, 'ExceptionHandler'
@@ -18918,10 +18918,10 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_control:sym<if>"  :subid("33_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "statement_control:sym<if>"  :subid("33_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_431
 .annotate 'line', 140
-    .const 'Sub' $P459 = "34_1275811497.55064" 
+    .const 'Sub' $P459 = "34_1276996335.94529" 
     capture_lex $P459
     new $P430, 'ExceptionHandler'
     set_addr $P430, control_429
@@ -19006,7 +19006,7 @@
     isgt $I457, $N456, 0.0
     unless $I457, loop474_done
   loop474_redo:
-    .const 'Sub' $P459 = "34_1275811497.55064" 
+    .const 'Sub' $P459 = "34_1276996335.94529" 
     capture_lex $P459
     $P459()
   loop474_next:
@@ -19034,7 +19034,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block458"  :anon :subid("34_1275811497.55064") :outer("33_1275811497.55064")
+.sub "_block458"  :anon :subid("34_1276996335.94529") :outer("33_1276996335.94529")
 .annotate 'line', 149
     new $P460, "Undef"
     .lex "$else", $P460
@@ -19074,7 +19074,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_control:sym<unless>"  :subid("35_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "statement_control:sym<unless>"  :subid("35_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_484
 .annotate 'line', 156
     new $P483, 'ExceptionHandler'
@@ -19116,7 +19116,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_control:sym<while>"  :subid("36_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "statement_control:sym<while>"  :subid("36_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_498
 .annotate 'line', 162
     new $P497, 'ExceptionHandler'
@@ -19167,7 +19167,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_control:sym<repeat>"  :subid("37_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "statement_control:sym<repeat>"  :subid("37_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_515
 .annotate 'line', 168
     new $P514, 'ExceptionHandler'
@@ -19268,7 +19268,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_control:sym<for>"  :subid("38_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "statement_control:sym<for>"  :subid("38_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_551
 .annotate 'line', 182
     new $P550, 'ExceptionHandler'
@@ -19349,7 +19349,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_control:sym<return>"  :subid("39_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "statement_control:sym<return>"  :subid("39_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_577
 .annotate 'line', 195
     new $P576, 'ExceptionHandler'
@@ -19385,7 +19385,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_control:sym<CATCH>"  :subid("40_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "statement_control:sym<CATCH>"  :subid("40_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_590
 .annotate 'line', 199
     new $P589, 'ExceptionHandler'
@@ -19444,7 +19444,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_control:sym<CONTROL>"  :subid("41_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "statement_control:sym<CONTROL>"  :subid("41_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_610
 .annotate 'line', 206
     new $P609, 'ExceptionHandler'
@@ -19503,7 +19503,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_prefix:sym<INIT>"  :subid("42_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "statement_prefix:sym<INIT>"  :subid("42_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_631
 .annotate 'line', 250
     new $P630, 'ExceptionHandler'
@@ -19550,7 +19550,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_prefix:sym<try>"  :subid("43_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "statement_prefix:sym<try>"  :subid("43_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_647
 .annotate 'line', 255
     new $P646, 'ExceptionHandler'
@@ -19628,7 +19628,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "blorst"  :subid("44_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "blorst"  :subid("44_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_682
 .annotate 'line', 278
     new $P681, 'ExceptionHandler'
@@ -19688,7 +19688,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_mod_cond:sym<if>"  :subid("45_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "statement_mod_cond:sym<if>"  :subid("45_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_700
 .annotate 'line', 286
     new $P699, 'ExceptionHandler'
@@ -19719,7 +19719,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_mod_cond:sym<unless>"  :subid("46_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "statement_mod_cond:sym<unless>"  :subid("46_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_710
 .annotate 'line', 287
     new $P709, 'ExceptionHandler'
@@ -19750,7 +19750,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_mod_loop:sym<while>"  :subid("47_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "statement_mod_loop:sym<while>"  :subid("47_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_720
 .annotate 'line', 289
     new $P719, 'ExceptionHandler'
@@ -19781,7 +19781,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "statement_mod_loop:sym<until>"  :subid("48_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "statement_mod_loop:sym<until>"  :subid("48_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_730
 .annotate 'line', 290
     new $P729, 'ExceptionHandler'
@@ -19812,7 +19812,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<fatarrow>"  :subid("49_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "term:sym<fatarrow>"  :subid("49_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_740
 .annotate 'line', 294
     new $P739, 'ExceptionHandler'
@@ -19843,7 +19843,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<colonpair>"  :subid("50_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "term:sym<colonpair>"  :subid("50_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_750
 .annotate 'line', 295
     new $P749, 'ExceptionHandler'
@@ -19874,7 +19874,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<variable>"  :subid("51_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "term:sym<variable>"  :subid("51_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_760
 .annotate 'line', 296
     new $P759, 'ExceptionHandler'
@@ -19905,7 +19905,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<package_declarator>"  :subid("52_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "term:sym<package_declarator>"  :subid("52_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_770
 .annotate 'line', 297
     new $P769, 'ExceptionHandler'
@@ -19936,7 +19936,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<scope_declarator>"  :subid("53_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "term:sym<scope_declarator>"  :subid("53_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_780
 .annotate 'line', 298
     new $P779, 'ExceptionHandler'
@@ -19967,7 +19967,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<routine_declarator>"  :subid("54_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "term:sym<routine_declarator>"  :subid("54_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_790
 .annotate 'line', 299
     new $P789, 'ExceptionHandler'
@@ -19998,7 +19998,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<regex_declarator>"  :subid("55_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "term:sym<regex_declarator>"  :subid("55_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_800
 .annotate 'line', 300
     new $P799, 'ExceptionHandler'
@@ -20029,7 +20029,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<statement_prefix>"  :subid("56_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "term:sym<statement_prefix>"  :subid("56_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_810
 .annotate 'line', 301
     new $P809, 'ExceptionHandler'
@@ -20060,7 +20060,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<lambda>"  :subid("57_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "term:sym<lambda>"  :subid("57_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_820
 .annotate 'line', 302
     new $P819, 'ExceptionHandler'
@@ -20091,7 +20091,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "fatarrow"  :subid("58_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "fatarrow"  :subid("58_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_830
 .annotate 'line', 304
     new $P829, 'ExceptionHandler'
@@ -20141,7 +20141,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "colonpair"  :subid("59_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "colonpair"  :subid("59_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_846
 .annotate 'line', 310
     new $P845, 'ExceptionHandler'
@@ -20223,10 +20223,10 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "variable"  :subid("60_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "variable"  :subid("60_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_872
 .annotate 'line', 318
-    .const 'Sub' $P885 = "61_1275811497.55064" 
+    .const 'Sub' $P885 = "61_1276996335.94529" 
     capture_lex $P885
     new $P871, 'ExceptionHandler'
     set_addr $P871, control_870
@@ -20250,7 +20250,7 @@
   vivify_319:
     if $P877, if_875
 .annotate 'line', 324
-    .const 'Sub' $P885 = "61_1275811497.55064" 
+    .const 'Sub' $P885 = "61_1276996335.94529" 
     capture_lex $P885
     $P885()
     goto if_875_end
@@ -20287,7 +20287,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block884"  :anon :subid("61_1275811497.55064") :outer("60_1275811497.55064")
+.sub "_block884"  :anon :subid("61_1276996335.94529") :outer("60_1276996335.94529")
 .annotate 'line', 325
     $P886 = root_new ['parrot';'ResizablePMCArray']
     .lex "@name", $P886
@@ -20457,7 +20457,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "package_declarator:sym<module>"  :subid("62_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "package_declarator:sym<module>"  :subid("62_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_961
 .annotate 'line', 356
     new $P960, 'ExceptionHandler'
@@ -20488,7 +20488,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "package_declarator:sym<class>"  :subid("63_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "package_declarator:sym<class>"  :subid("63_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_971
 .annotate 'line', 357
     new $P970, 'ExceptionHandler'
@@ -20646,7 +20646,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "package_def"  :subid("64_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "package_def"  :subid("64_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1024
 .annotate 'line', 380
     new $P1023, 'ExceptionHandler'
@@ -20725,7 +20725,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "scope_declarator:sym<my>"  :subid("65_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "scope_declarator:sym<my>"  :subid("65_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1048
 .annotate 'line', 387
     new $P1047, 'ExceptionHandler'
@@ -20756,7 +20756,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "scope_declarator:sym<our>"  :subid("66_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "scope_declarator:sym<our>"  :subid("66_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1058
 .annotate 'line', 388
     new $P1057, 'ExceptionHandler'
@@ -20787,7 +20787,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "scope_declarator:sym<has>"  :subid("67_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "scope_declarator:sym<has>"  :subid("67_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1068
 .annotate 'line', 389
     new $P1067, 'ExceptionHandler'
@@ -20818,7 +20818,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "scoped"  :subid("68_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "scoped"  :subid("68_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1078
 .annotate 'line', 391
     new $P1077, 'ExceptionHandler'
@@ -20877,7 +20877,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "declarator"  :subid("69_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "declarator"  :subid("69_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1095
 .annotate 'line', 397
     new $P1094, 'ExceptionHandler'
@@ -20936,7 +20936,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "multi_declarator:sym<multi>"  :subid("70_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "multi_declarator:sym<multi>"  :subid("70_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1112
 .annotate 'line', 403
     new $P1111, 'ExceptionHandler'
@@ -20990,7 +20990,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "multi_declarator:sym<null>"  :subid("71_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "multi_declarator:sym<null>"  :subid("71_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1129
 .annotate 'line', 404
     new $P1128, 'ExceptionHandler'
@@ -21021,10 +21021,10 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "variable_declarator"  :subid("72_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "variable_declarator"  :subid("72_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1139
 .annotate 'line', 407
-    .const 'Sub' $P1179 = "73_1275811497.55064" 
+    .const 'Sub' $P1179 = "73_1276996335.94529" 
     capture_lex $P1179
     new $P1138, 'ExceptionHandler'
     set_addr $P1138, control_1137
@@ -21106,7 +21106,7 @@
     iseq $I1164, $S1163, "has"
     if $I1164, if_1161
 .annotate 'line', 424
-    .const 'Sub' $P1179 = "73_1275811497.55064" 
+    .const 'Sub' $P1179 = "73_1276996335.94529" 
     capture_lex $P1179
     $P1179()
     goto if_1161_end
@@ -21166,7 +21166,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1178"  :anon :subid("73_1275811497.55064") :outer("72_1275811497.55064")
+.sub "_block1178"  :anon :subid("73_1276996335.94529") :outer("72_1276996335.94529")
 .annotate 'line', 425
     new $P1180, "Undef"
     .lex "$scope", $P1180
@@ -21228,7 +21228,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "routine_declarator:sym<sub>"  :subid("74_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "routine_declarator:sym<sub>"  :subid("74_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1210
 .annotate 'line', 435
     new $P1209, 'ExceptionHandler'
@@ -21259,7 +21259,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "routine_declarator:sym<method>"  :subid("75_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "routine_declarator:sym<method>"  :subid("75_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1220
 .annotate 'line', 436
     new $P1219, 'ExceptionHandler'
@@ -21290,10 +21290,10 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "routine_def"  :subid("76_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "routine_def"  :subid("76_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1230
 .annotate 'line', 438
-    .const 'Sub' $P1241 = "77_1275811497.55064" 
+    .const 'Sub' $P1241 = "77_1276996335.94529" 
     capture_lex $P1241
     new $P1229, 'ExceptionHandler'
     set_addr $P1229, control_1228
@@ -21330,7 +21330,7 @@
     new $P1239, "Undef"
   vivify_417:
     unless $P1239, if_1237_end
-    .const 'Sub' $P1241 = "77_1275811497.55064" 
+    .const 'Sub' $P1241 = "77_1276996335.94529" 
     capture_lex $P1241
     $P1241()
   if_1237_end:
@@ -21349,7 +21349,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1240"  :anon :subid("77_1275811497.55064") :outer("76_1275811497.55064")
+.sub "_block1240"  :anon :subid("77_1276996335.94529") :outer("76_1276996335.94529")
 .annotate 'line', 443
     new $P1242, "Undef"
     .lex "$name", $P1242
@@ -21446,10 +21446,10 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "method_def"  :subid("78_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "method_def"  :subid("78_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1280
 .annotate 'line', 456
-    .const 'Sub' $P1296 = "79_1275811497.55064" 
+    .const 'Sub' $P1296 = "79_1276996335.94529" 
     capture_lex $P1296
     new $P1279, 'ExceptionHandler'
     set_addr $P1279, control_1278
@@ -21501,7 +21501,7 @@
     new $P1294, "Undef"
   vivify_436:
     unless $P1294, if_1292_end
-    .const 'Sub' $P1296 = "79_1275811497.55064" 
+    .const 'Sub' $P1296 = "79_1276996335.94529" 
     capture_lex $P1296
     $P1296()
   if_1292_end:
@@ -21535,7 +21535,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1295"  :anon :subid("79_1275811497.55064") :outer("78_1275811497.55064")
+.sub "_block1295"  :anon :subid("79_1276996335.94529") :outer("78_1276996335.94529")
 .annotate 'line', 463
     new $P1297, "Undef"
     .lex "$name", $P1297
@@ -21567,12 +21567,12 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "signature"  :subid("80_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "signature"  :subid("80_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1320
 .annotate 'line', 471
-    .const 'Sub' $P1346 = "82_1275811497.55064" 
+    .const 'Sub' $P1346 = "82_1276996335.94529" 
     capture_lex $P1346
-    .const 'Sub' $P1331 = "81_1275811497.55064" 
+    .const 'Sub' $P1331 = "81_1276996335.94529" 
     capture_lex $P1331
     new $P1319, 'ExceptionHandler'
     set_addr $P1319, control_1318
@@ -21616,7 +21616,7 @@
     unless $P1325, loop1337_done
     shift $P1329, $P1325
   loop1337_redo:
-    .const 'Sub' $P1331 = "81_1275811497.55064" 
+    .const 'Sub' $P1331 = "81_1276996335.94529" 
     capture_lex $P1331
     $P1331($P1329)
   loop1337_next:
@@ -21645,7 +21645,7 @@
     set $P1340, $I1344
     goto if_1341_end
   if_1341:
-    .const 'Sub' $P1346 = "82_1275811497.55064" 
+    .const 'Sub' $P1346 = "82_1276996335.94529" 
     capture_lex $P1346
     $P1372 = $P1346()
     set $P1340, $P1372
@@ -21661,7 +21661,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1330"  :anon :subid("81_1275811497.55064") :outer("80_1275811497.55064")
+.sub "_block1330"  :anon :subid("81_1276996335.94529") :outer("80_1276996335.94529")
     .param pmc param_1332
 .annotate 'line', 474
     .lex "$_", param_1332
@@ -21675,9 +21675,9 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "_block1345"  :anon :subid("82_1275811497.55064") :outer("80_1275811497.55064")
+.sub "_block1345"  :anon :subid("82_1276996335.94529") :outer("80_1276996335.94529")
 .annotate 'line', 477
-    .const 'Sub' $P1355 = "83_1275811497.55064" 
+    .const 'Sub' $P1355 = "83_1276996335.94529" 
     capture_lex $P1355
 .annotate 'line', 478
     $P1347 = root_new ['parrot';'ResizablePMCArray']
@@ -21698,7 +21698,7 @@
     unless $P1349, loop1365_done
     shift $P1353, $P1349
   loop1365_redo:
-    .const 'Sub' $P1355 = "83_1275811497.55064" 
+    .const 'Sub' $P1355 = "83_1276996335.94529" 
     capture_lex $P1355
     $P1355($P1353)
   loop1365_next:
@@ -21729,7 +21729,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1354"  :anon :subid("83_1275811497.55064") :outer("82_1275811497.55064")
+.sub "_block1354"  :anon :subid("83_1276996335.94529") :outer("82_1276996335.94529")
     .param pmc param_1356
 .annotate 'line', 479
     .lex "$_", param_1356
@@ -21752,10 +21752,10 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "parameter"  :subid("84_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "parameter"  :subid("84_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1377
 .annotate 'line', 486
-    .const 'Sub' $P1458 = "85_1275811497.55064" 
+    .const 'Sub' $P1458 = "85_1276996335.94529" 
     capture_lex $P1458
     new $P1376, 'ExceptionHandler'
     set_addr $P1376, control_1375
@@ -21981,7 +21981,7 @@
     new $P1456, "Undef"
   vivify_482:
     unless $P1456, if_1454_end
-    .const 'Sub' $P1458 = "85_1275811497.55064" 
+    .const 'Sub' $P1458 = "85_1276996335.94529" 
     capture_lex $P1458
     $P1458()
   if_1454_end:
@@ -22001,9 +22001,9 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "_block1457"  :anon :subid("85_1275811497.55064") :outer("84_1275811497.55064")
+.sub "_block1457"  :anon :subid("85_1276996335.94529") :outer("84_1276996335.94529")
 .annotate 'line', 517
-    .const 'Sub' $P1470 = "86_1275811497.55064" 
+    .const 'Sub' $P1470 = "86_1276996335.94529" 
     capture_lex $P1470
 .annotate 'line', 518
     $P1459 = root_new ['parrot';'ResizablePMCArray']
@@ -22042,7 +22042,7 @@
     unless $P1461, loop1476_done
     shift $P1468, $P1461
   loop1476_redo:
-    .const 'Sub' $P1470 = "86_1275811497.55064" 
+    .const 'Sub' $P1470 = "86_1276996335.94529" 
     capture_lex $P1470
     $P1470($P1468)
   loop1476_next:
@@ -22066,7 +22066,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1469"  :anon :subid("86_1275811497.55064") :outer("85_1275811497.55064")
+.sub "_block1469"  :anon :subid("86_1276996335.94529") :outer("85_1276996335.94529")
     .param pmc param_1471
 .annotate 'line', 519
     .lex "$_", param_1471
@@ -22080,7 +22080,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "param_var"  :subid("87_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "param_var"  :subid("87_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1489
 .annotate 'line', 526
     new $P1488, 'ExceptionHandler'
@@ -22134,7 +22134,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "named_param"  :subid("88_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "named_param"  :subid("88_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1509
 .annotate 'line', 534
     new $P1508, 'ExceptionHandler'
@@ -22188,14 +22188,14 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "regex_declarator"  :subid("89_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "regex_declarator"  :subid("89_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1526
     .param pmc param_1527 :optional
     .param int has_param_1527 :opt_flag
 .annotate 'line', 540
-    .const 'Sub' $P1597 = "91_1275811497.55064" 
+    .const 'Sub' $P1597 = "91_1276996335.94529" 
     capture_lex $P1597
-    .const 'Sub' $P1569 = "90_1275811497.55064" 
+    .const 'Sub' $P1569 = "90_1276996335.94529" 
     capture_lex $P1569
     new $P1525, 'ExceptionHandler'
     set_addr $P1525, control_1524
@@ -22253,13 +22253,13 @@
     iseq $I1567, $S1566, "open"
     if $I1567, if_1564
 .annotate 'line', 586
-    .const 'Sub' $P1597 = "91_1275811497.55064" 
+    .const 'Sub' $P1597 = "91_1276996335.94529" 
     capture_lex $P1597
     $P1597()
     goto if_1564_end
   if_1564:
 .annotate 'line', 573
-    .const 'Sub' $P1569 = "90_1275811497.55064" 
+    .const 'Sub' $P1569 = "90_1276996335.94529" 
     capture_lex $P1569
     $P1569()
   if_1564_end:
@@ -22316,7 +22316,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1596"  :anon :subid("91_1275811497.55064") :outer("89_1275811497.55064")
+.sub "_block1596"  :anon :subid("91_1276996335.94529") :outer("89_1276996335.94529")
 .annotate 'line', 587
     new $P1598, "Undef"
     .lex "$regex", $P1598
@@ -22368,7 +22368,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "_block1568"  :anon :subid("90_1275811497.55064") :outer("89_1275811497.55064")
+.sub "_block1568"  :anon :subid("90_1276996335.94529") :outer("89_1276996335.94529")
 .annotate 'line', 574
     $P1570 = root_new ['parrot';'Hash']
     .lex "%h", $P1570
@@ -22467,7 +22467,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "dotty"  :subid("92_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "dotty"  :subid("92_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1625
 .annotate 'line', 604
     new $P1624, 'ExceptionHandler'
@@ -22565,7 +22565,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<self>"  :subid("93_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "term:sym<self>"  :subid("93_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1657
 .annotate 'line', 613
     new $P1656, 'ExceptionHandler'
@@ -22591,7 +22591,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<identifier>"  :subid("94_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "term:sym<identifier>"  :subid("94_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1666
 .annotate 'line', 617
     new $P1665, 'ExceptionHandler'
@@ -22619,7 +22619,7 @@
     unless_null $P1672, vivify_528
     $P1672 = root_new ['parrot';'Hash']
   vivify_528:
-    set $P1673, $P1672["identifier"]
+    set $P1673, $P1672["deflongname"]
     unless_null $P1673, vivify_529
     new $P1673, "Undef"
   vivify_529:
@@ -22641,7 +22641,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<name>"  :subid("95_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "term:sym<name>"  :subid("95_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1682
 .annotate 'line', 623
     new $P1681, 'ExceptionHandler'
@@ -22760,7 +22760,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<pir::op>"  :subid("96_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "term:sym<pir::op>"  :subid("96_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1724
 .annotate 'line', 637
     new $P1723, 'ExceptionHandler'
@@ -22852,7 +22852,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "args"  :subid("97_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "args"  :subid("97_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1753
 .annotate 'line', 652
     new $P1752, 'ExceptionHandler'
@@ -22883,10 +22883,10 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "arglist"  :subid("98_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "arglist"  :subid("98_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1763
 .annotate 'line', 654
-    .const 'Sub' $P1774 = "99_1275811497.55064" 
+    .const 'Sub' $P1774 = "99_1276996335.94529" 
     capture_lex $P1774
     new $P1762, 'ExceptionHandler'
     set_addr $P1762, control_1761
@@ -22918,7 +22918,7 @@
     new $P1772, "Undef"
   vivify_550:
     unless $P1772, if_1770_end
-    .const 'Sub' $P1774 = "99_1275811497.55064" 
+    .const 'Sub' $P1774 = "99_1276996335.94529" 
     capture_lex $P1774
     $P1774()
   if_1770_end:
@@ -23075,9 +23075,9 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "_block1773"  :anon :subid("99_1275811497.55064") :outer("98_1275811497.55064")
+.sub "_block1773"  :anon :subid("99_1276996335.94529") :outer("98_1276996335.94529")
 .annotate 'line', 656
-    .const 'Sub' $P1795 = "100_1275811497.55064" 
+    .const 'Sub' $P1795 = "100_1276996335.94529" 
     capture_lex $P1795
 .annotate 'line', 657
     new $P1775, "Undef"
@@ -23130,7 +23130,7 @@
     unless $P1789, loop1800_done
     shift $P1793, $P1789
   loop1800_redo:
-    .const 'Sub' $P1795 = "100_1275811497.55064" 
+    .const 'Sub' $P1795 = "100_1276996335.94529" 
     capture_lex $P1795
     $P1795($P1793)
   loop1800_next:
@@ -23153,7 +23153,7 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block1794"  :anon :subid("100_1275811497.55064") :outer("99_1275811497.55064")
+.sub "_block1794"  :anon :subid("100_1276996335.94529") :outer("99_1276996335.94529")
     .param pmc param_1796
 .annotate 'line', 659
     .lex "$_", param_1796
@@ -23166,7 +23166,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<value>"  :subid("101_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "term:sym<value>"  :subid("101_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1867
 .annotate 'line', 680
     new $P1866, 'ExceptionHandler'
@@ -23197,7 +23197,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "circumfix:sym<( )>"  :subid("102_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "circumfix:sym<( )>"  :subid("102_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1877
 .annotate 'line', 682
     new $P1876, 'ExceptionHandler'
@@ -23254,7 +23254,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "circumfix:sym<[ ]>"  :subid("103_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "circumfix:sym<[ ]>"  :subid("103_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1895
 .annotate 'line', 688
     new $P1894, 'ExceptionHandler'
@@ -23331,7 +23331,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "circumfix:sym<ang>"  :subid("104_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "circumfix:sym<ang>"  :subid("104_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1922
 .annotate 'line', 703
     new $P1921, 'ExceptionHandler'
@@ -23362,7 +23362,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("105_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub unicode:"circumfix:sym<\x{ab} \x{bb}>"  :subid("105_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1932
 .annotate 'line', 704
     new $P1931, 'ExceptionHandler'
@@ -23393,7 +23393,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "circumfix:sym<{ }>"  :subid("106_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "circumfix:sym<{ }>"  :subid("106_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1942
 .annotate 'line', 706
     new $P1941, 'ExceptionHandler'
@@ -23472,7 +23472,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "circumfix:sym<sigil>"  :subid("107_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "circumfix:sym<sigil>"  :subid("107_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1966
 .annotate 'line', 714
     new $P1965, 'ExceptionHandler'
@@ -23552,7 +23552,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "semilist"  :subid("108_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "semilist"  :subid("108_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_1995
 .annotate 'line', 721
     new $P1994, 'ExceptionHandler'
@@ -23583,7 +23583,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "postcircumfix:sym<[ ]>"  :subid("109_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "postcircumfix:sym<[ ]>"  :subid("109_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2005
 .annotate 'line', 723
     new $P2004, 'ExceptionHandler'
@@ -23621,7 +23621,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "postcircumfix:sym<{ }>"  :subid("110_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "postcircumfix:sym<{ }>"  :subid("110_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2018
 .annotate 'line', 729
     new $P2017, 'ExceptionHandler'
@@ -23659,7 +23659,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "postcircumfix:sym<ang>"  :subid("111_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "postcircumfix:sym<ang>"  :subid("111_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2031
 .annotate 'line', 735
     new $P2030, 'ExceptionHandler'
@@ -23697,7 +23697,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "postcircumfix:sym<( )>"  :subid("112_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "postcircumfix:sym<( )>"  :subid("112_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2044
 .annotate 'line', 741
     new $P2043, 'ExceptionHandler'
@@ -23730,7 +23730,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "value"  :subid("113_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "value"  :subid("113_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2054
 .annotate 'line', 745
     new $P2053, 'ExceptionHandler'
@@ -23786,7 +23786,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "number"  :subid("114_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "number"  :subid("114_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2071
 .annotate 'line', 749
     new $P2070, 'ExceptionHandler'
@@ -23865,7 +23865,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "quote:sym<apos>"  :subid("115_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "quote:sym<apos>"  :subid("115_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2099
 .annotate 'line', 755
     new $P2098, 'ExceptionHandler'
@@ -23896,7 +23896,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "quote:sym<dblq>"  :subid("116_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "quote:sym<dblq>"  :subid("116_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2109
 .annotate 'line', 756
     new $P2108, 'ExceptionHandler'
@@ -23927,7 +23927,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "quote:sym<qq>"  :subid("117_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "quote:sym<qq>"  :subid("117_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2119
 .annotate 'line', 757
     new $P2118, 'ExceptionHandler'
@@ -23958,7 +23958,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "quote:sym<q>"  :subid("118_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "quote:sym<q>"  :subid("118_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2129
 .annotate 'line', 758
     new $P2128, 'ExceptionHandler'
@@ -23989,7 +23989,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "quote:sym<Q>"  :subid("119_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "quote:sym<Q>"  :subid("119_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2139
 .annotate 'line', 759
     new $P2138, 'ExceptionHandler'
@@ -24020,7 +24020,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "quote:sym<Q:PIR>"  :subid("120_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "quote:sym<Q:PIR>"  :subid("120_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2149
 .annotate 'line', 760
     new $P2148, 'ExceptionHandler'
@@ -24057,7 +24057,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "quote:sym</ />"  :subid("121_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "quote:sym</ />"  :subid("121_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2163
     .param pmc param_2164 :optional
     .param int has_param_2164 :opt_flag
@@ -24167,7 +24167,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<$>"  :subid("122_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "quote_escape:sym<$>"  :subid("122_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2200
 .annotate 'line', 789
     new $P2199, 'ExceptionHandler'
@@ -24198,7 +24198,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<{ }>"  :subid("123_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "quote_escape:sym<{ }>"  :subid("123_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2210
 .annotate 'line', 790
     new $P2209, 'ExceptionHandler'
@@ -24237,7 +24237,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "quote_escape:sym<esc>"  :subid("124_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "quote_escape:sym<esc>"  :subid("124_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2224
 .annotate 'line', 795
     new $P2223, 'ExceptionHandler'
@@ -24259,7 +24259,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "postfix:sym<.>"  :subid("125_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "postfix:sym<.>"  :subid("125_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2231
 .annotate 'line', 799
     new $P2230, 'ExceptionHandler'
@@ -24290,7 +24290,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "postfix:sym<++>"  :subid("126_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "postfix:sym<++>"  :subid("126_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2241
 .annotate 'line', 801
     new $P2240, 'ExceptionHandler'
@@ -24321,7 +24321,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "postfix:sym<-->"  :subid("127_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "postfix:sym<-->"  :subid("127_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2251
 .annotate 'line', 807
     new $P2250, 'ExceptionHandler'
@@ -24352,7 +24352,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "prefix:sym<make>"  :subid("128_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "prefix:sym<make>"  :subid("128_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2261
 .annotate 'line', 813
     new $P2260, 'ExceptionHandler'
@@ -24383,7 +24383,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<next>"  :subid("129_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "term:sym<next>"  :subid("129_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2274
 .annotate 'line', 831
     new $P2273, 'ExceptionHandler'
@@ -24405,7 +24405,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<last>"  :subid("130_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "term:sym<last>"  :subid("130_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2281
 .annotate 'line', 832
     new $P2280, 'ExceptionHandler'
@@ -24427,7 +24427,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "term:sym<redo>"  :subid("131_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "term:sym<redo>"  :subid("131_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2288
 .annotate 'line', 833
     new $P2287, 'ExceptionHandler'
@@ -24449,7 +24449,7 @@
 
 .namespace ["NQP";"Actions"]
 .include "except_types.pasm"
-.sub "infix:sym<~~>"  :subid("132_1275811497.55064") :method :outer("11_1275811497.55064")
+.sub "infix:sym<~~>"  :subid("132_1276996335.94529") :method :outer("11_1276996335.94529")
     .param pmc param_2295
 .annotate 'line', 835
     new $P2294, 'ExceptionHandler'
@@ -24475,24 +24475,24 @@
 
 
 .namespace ["NQP";"RegexActions"]
-.sub "_block2302"  :subid("133_1275811497.55064") :outer("11_1275811497.55064")
+.sub "_block2302"  :subid("133_1276996335.94529") :outer("11_1276996335.94529")
 .annotate 'line', 840
-    .const 'Sub' $P2388 = "140_1275811497.55064" 
+    .const 'Sub' $P2388 = "140_1276996335.94529" 
     capture_lex $P2388
-    .const 'Sub' $P2375 = "139_1275811497.55064" 
+    .const 'Sub' $P2375 = "139_1276996335.94529" 
     capture_lex $P2375
-    .const 'Sub' $P2358 = "138_1275811497.55064" 
+    .const 'Sub' $P2358 = "138_1276996335.94529" 
     capture_lex $P2358
-    .const 'Sub' $P2345 = "137_1275811497.55064" 
+    .const 'Sub' $P2345 = "137_1276996335.94529" 
     capture_lex $P2345
-    .const 'Sub' $P2332 = "136_1275811497.55064" 
+    .const 'Sub' $P2332 = "136_1276996335.94529" 
     capture_lex $P2332
-    .const 'Sub' $P2319 = "135_1275811497.55064" 
+    .const 'Sub' $P2319 = "135_1276996335.94529" 
     capture_lex $P2319
-    .const 'Sub' $P2304 = "134_1275811497.55064" 
+    .const 'Sub' $P2304 = "134_1276996335.94529" 
     capture_lex $P2304
 .annotate 'line', 874
-    .const 'Sub' $P2388 = "140_1275811497.55064" 
+    .const 'Sub' $P2388 = "140_1276996335.94529" 
     newclosure $P2413, $P2388
 .annotate 'line', 840
     .return ($P2413)
@@ -24501,7 +24501,7 @@
 
 .namespace ["NQP";"RegexActions"]
 .include "except_types.pasm"
-.sub "metachar:sym<:my>"  :subid("134_1275811497.55064") :method :outer("133_1275811497.55064")
+.sub "metachar:sym<:my>"  :subid("134_1276996335.94529") :method :outer("133_1276996335.94529")
     .param pmc param_2307
 .annotate 'line', 842
     new $P2306, 'ExceptionHandler'
@@ -24542,7 +24542,7 @@
 
 .namespace ["NQP";"RegexActions"]
 .include "except_types.pasm"
-.sub "metachar:sym<{ }>"  :subid("135_1275811497.55064") :method :outer("133_1275811497.55064")
+.sub "metachar:sym<{ }>"  :subid("135_1276996335.94529") :method :outer("133_1276996335.94529")
     .param pmc param_2322
 .annotate 'line', 848
     new $P2321, 'ExceptionHandler'
@@ -24578,7 +24578,7 @@
 
 .namespace ["NQP";"RegexActions"]
 .include "except_types.pasm"
-.sub "metachar:sym<nqpvar>"  :subid("136_1275811497.55064") :method :outer("133_1275811497.55064")
+.sub "metachar:sym<nqpvar>"  :subid("136_1276996335.94529") :method :outer("133_1276996335.94529")
     .param pmc param_2335
 .annotate 'line', 853
     new $P2334, 'ExceptionHandler'
@@ -24614,7 +24614,7 @@
 
 .namespace ["NQP";"RegexActions"]
 .include "except_types.pasm"
-.sub "assertion:sym<{ }>"  :subid("137_1275811497.55064") :method :outer("133_1275811497.55064")
+.sub "assertion:sym<{ }>"  :subid("137_1276996335.94529") :method :outer("133_1276996335.94529")
     .param pmc param_2348
 .annotate 'line', 858
     new $P2347, 'ExceptionHandler'
@@ -24650,7 +24650,7 @@
 
 .namespace ["NQP";"RegexActions"]
 .include "except_types.pasm"
-.sub "assertion:sym<?{ }>"  :subid("138_1275811497.55064") :method :outer("133_1275811497.55064")
+.sub "assertion:sym<?{ }>"  :subid("138_1276996335.94529") :method :outer("133_1276996335.94529")
     .param pmc param_2361
 .annotate 'line', 863
     new $P2360, 'ExceptionHandler'
@@ -24698,7 +24698,7 @@
 
 .namespace ["NQP";"RegexActions"]
 .include "except_types.pasm"
-.sub "assertion:sym<var>"  :subid("139_1275811497.55064") :method :outer("133_1275811497.55064")
+.sub "assertion:sym<var>"  :subid("139_1276996335.94529") :method :outer("133_1276996335.94529")
     .param pmc param_2378
 .annotate 'line', 869
     new $P2377, 'ExceptionHandler'
@@ -24734,7 +24734,7 @@
 
 .namespace ["NQP";"RegexActions"]
 .include "except_types.pasm"
-.sub "codeblock"  :subid("140_1275811497.55064") :method :outer("133_1275811497.55064")
+.sub "codeblock"  :subid("140_1276996335.94529") :method :outer("133_1276996335.94529")
     .param pmc param_2391
 .annotate 'line', 874
     new $P2390, 'ExceptionHandler'
@@ -24798,18 +24798,18 @@
 
 
 .namespace ["NQP";"Actions"]
-.sub "_block2415" :load :anon :subid("141_1275811497.55064")
+.sub "_block2415" :load :anon :subid("141_1276996335.94529")
 .annotate 'line', 3
-    .const 'Sub' $P2417 = "11_1275811497.55064" 
+    .const 'Sub' $P2417 = "11_1276996335.94529" 
     $P2418 = $P2417()
     .return ($P2418)
 .end
 
 
 .namespace []
-.sub "_block2425" :load :anon :subid("143_1275811497.55064")
+.sub "_block2425" :load :anon :subid("143_1276996335.94529")
 .annotate 'line', 1
-    .const 'Sub' $P2427 = "10_1275811497.55064" 
+    .const 'Sub' $P2427 = "10_1276996335.94529" 
     $P2428 = $P2427()
     .return ($P2428)
 .end

Modified: branches/gsoc_past_optimization/ext/nqp-rx/src/stage0/P6Regex-s0.pir
==============================================================================
--- branches/gsoc_past_optimization/ext/nqp-rx/src/stage0/P6Regex-s0.pir	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/ext/nqp-rx/src/stage0/P6Regex-s0.pir	Wed Jun 23 00:34:17 2010	(r47770)
@@ -16,7 +16,7 @@
 ### .include 'gen/p6regex-grammar.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1275811476.7961")
+.sub "_block11"  :anon :subid("10_1276996307.3412")
 .annotate 'line', 0
     get_hll_global $P14, ["Regex";"P6Regex";"Grammar"], "_block13" 
     capture_lex $P14
@@ -33,15 +33,15 @@
     $P588 = $P14()
 .annotate 'line', 1
     .return ($P588)
-    .const 'Sub' $P590 = "159_1275811476.7961" 
+    .const 'Sub' $P590 = "159_1276996307.3412" 
     .return ($P590)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post160") :outer("10_1275811476.7961")
+.sub "" :load :init :subid("post160") :outer("10_1276996307.3412")
 .annotate 'line', 0
-    .const 'Sub' $P12 = "10_1275811476.7961" 
+    .const 'Sub' $P12 = "10_1276996307.3412" 
     .local pmc block
     set block, $P12
     $P593 = get_root_global ["parrot"], "P6metaclass"
@@ -50,131 +50,131 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block13"  :subid("11_1275811476.7961") :outer("10_1275811476.7961")
+.sub "_block13"  :subid("11_1276996307.3412") :outer("10_1276996307.3412")
 .annotate 'line', 3
-    .const 'Sub' $P576 = "156_1275811476.7961" 
+    .const 'Sub' $P576 = "156_1276996307.3412" 
     capture_lex $P576
-    .const 'Sub' $P568 = "154_1275811476.7961" 
+    .const 'Sub' $P568 = "154_1276996307.3412" 
     capture_lex $P568
-    .const 'Sub' $P560 = "152_1275811476.7961" 
+    .const 'Sub' $P560 = "152_1276996307.3412" 
     capture_lex $P560
-    .const 'Sub' $P539 = "147_1275811476.7961" 
+    .const 'Sub' $P539 = "147_1276996307.3412" 
     capture_lex $P539
-    .const 'Sub' $P504 = "141_1275811476.7961" 
+    .const 'Sub' $P504 = "141_1276996307.3412" 
     capture_lex $P504
-    .const 'Sub' $P492 = "138_1275811476.7961" 
+    .const 'Sub' $P492 = "138_1276996307.3412" 
     capture_lex $P492
-    .const 'Sub' $P479 = "135_1275811476.7961" 
+    .const 'Sub' $P479 = "135_1276996307.3412" 
     capture_lex $P479
-    .const 'Sub' $P473 = "133_1275811476.7961" 
+    .const 'Sub' $P473 = "133_1276996307.3412" 
     capture_lex $P473
-    .const 'Sub' $P462 = "130_1275811476.7961" 
+    .const 'Sub' $P462 = "130_1276996307.3412" 
     capture_lex $P462
-    .const 'Sub' $P451 = "127_1275811476.7961" 
+    .const 'Sub' $P451 = "127_1276996307.3412" 
     capture_lex $P451
-    .const 'Sub' $P442 = "123_1275811476.7961" 
+    .const 'Sub' $P442 = "123_1276996307.3412" 
     capture_lex $P442
-    .const 'Sub' $P436 = "121_1275811476.7961" 
+    .const 'Sub' $P436 = "121_1276996307.3412" 
     capture_lex $P436
-    .const 'Sub' $P430 = "119_1275811476.7961" 
+    .const 'Sub' $P430 = "119_1276996307.3412" 
     capture_lex $P430
-    .const 'Sub' $P424 = "117_1275811476.7961" 
+    .const 'Sub' $P424 = "117_1276996307.3412" 
     capture_lex $P424
-    .const 'Sub' $P418 = "115_1275811476.7961" 
+    .const 'Sub' $P418 = "115_1276996307.3412" 
     capture_lex $P418
-    .const 'Sub' $P410 = "113_1275811476.7961" 
+    .const 'Sub' $P410 = "113_1276996307.3412" 
     capture_lex $P410
-    .const 'Sub' $P399 = "111_1275811476.7961" 
+    .const 'Sub' $P399 = "111_1276996307.3412" 
     capture_lex $P399
-    .const 'Sub' $P388 = "109_1275811476.7961" 
+    .const 'Sub' $P388 = "109_1276996307.3412" 
     capture_lex $P388
-    .const 'Sub' $P382 = "107_1275811476.7961" 
+    .const 'Sub' $P382 = "107_1276996307.3412" 
     capture_lex $P382
-    .const 'Sub' $P376 = "105_1275811476.7961" 
+    .const 'Sub' $P376 = "105_1276996307.3412" 
     capture_lex $P376
-    .const 'Sub' $P370 = "103_1275811476.7961" 
+    .const 'Sub' $P370 = "103_1276996307.3412" 
     capture_lex $P370
-    .const 'Sub' $P364 = "101_1275811476.7961" 
+    .const 'Sub' $P364 = "101_1276996307.3412" 
     capture_lex $P364
-    .const 'Sub' $P358 = "99_1275811476.7961" 
+    .const 'Sub' $P358 = "99_1276996307.3412" 
     capture_lex $P358
-    .const 'Sub' $P352 = "97_1275811476.7961" 
+    .const 'Sub' $P352 = "97_1276996307.3412" 
     capture_lex $P352
-    .const 'Sub' $P346 = "95_1275811476.7961" 
+    .const 'Sub' $P346 = "95_1276996307.3412" 
     capture_lex $P346
-    .const 'Sub' $P340 = "93_1275811476.7961" 
+    .const 'Sub' $P340 = "93_1276996307.3412" 
     capture_lex $P340
-    .const 'Sub' $P328 = "89_1275811476.7961" 
+    .const 'Sub' $P328 = "89_1276996307.3412" 
     capture_lex $P328
-    .const 'Sub' $P316 = "87_1275811476.7961" 
+    .const 'Sub' $P316 = "87_1276996307.3412" 
     capture_lex $P316
-    .const 'Sub' $P309 = "85_1275811476.7961" 
+    .const 'Sub' $P309 = "85_1276996307.3412" 
     capture_lex $P309
-    .const 'Sub' $P292 = "83_1275811476.7961" 
+    .const 'Sub' $P292 = "83_1276996307.3412" 
     capture_lex $P292
-    .const 'Sub' $P285 = "81_1275811476.7961" 
+    .const 'Sub' $P285 = "81_1276996307.3412" 
     capture_lex $P285
-    .const 'Sub' $P279 = "79_1275811476.7961" 
+    .const 'Sub' $P279 = "79_1276996307.3412" 
     capture_lex $P279
-    .const 'Sub' $P273 = "77_1275811476.7961" 
+    .const 'Sub' $P273 = "77_1276996307.3412" 
     capture_lex $P273
-    .const 'Sub' $P266 = "75_1275811476.7961" 
+    .const 'Sub' $P266 = "75_1276996307.3412" 
     capture_lex $P266
-    .const 'Sub' $P259 = "73_1275811476.7961" 
+    .const 'Sub' $P259 = "73_1276996307.3412" 
     capture_lex $P259
-    .const 'Sub' $P252 = "71_1275811476.7961" 
+    .const 'Sub' $P252 = "71_1276996307.3412" 
     capture_lex $P252
-    .const 'Sub' $P245 = "69_1275811476.7961" 
+    .const 'Sub' $P245 = "69_1276996307.3412" 
     capture_lex $P245
-    .const 'Sub' $P239 = "67_1275811476.7961" 
+    .const 'Sub' $P239 = "67_1276996307.3412" 
     capture_lex $P239
-    .const 'Sub' $P233 = "65_1275811476.7961" 
+    .const 'Sub' $P233 = "65_1276996307.3412" 
     capture_lex $P233
-    .const 'Sub' $P227 = "63_1275811476.7961" 
+    .const 'Sub' $P227 = "63_1276996307.3412" 
     capture_lex $P227
-    .const 'Sub' $P221 = "61_1275811476.7961" 
+    .const 'Sub' $P221 = "61_1276996307.3412" 
     capture_lex $P221
-    .const 'Sub' $P215 = "59_1275811476.7961" 
+    .const 'Sub' $P215 = "59_1276996307.3412" 
     capture_lex $P215
-    .const 'Sub' $P210 = "57_1275811476.7961" 
+    .const 'Sub' $P210 = "57_1276996307.3412" 
     capture_lex $P210
-    .const 'Sub' $P205 = "55_1275811476.7961" 
+    .const 'Sub' $P205 = "55_1276996307.3412" 
     capture_lex $P205
-    .const 'Sub' $P199 = "53_1275811476.7961" 
+    .const 'Sub' $P199 = "53_1276996307.3412" 
     capture_lex $P199
-    .const 'Sub' $P193 = "51_1275811476.7961" 
+    .const 'Sub' $P193 = "51_1276996307.3412" 
     capture_lex $P193
-    .const 'Sub' $P187 = "49_1275811476.7961" 
+    .const 'Sub' $P187 = "49_1276996307.3412" 
     capture_lex $P187
-    .const 'Sub' $P171 = "44_1275811476.7961" 
+    .const 'Sub' $P171 = "44_1276996307.3412" 
     capture_lex $P171
-    .const 'Sub' $P155 = "42_1275811476.7961" 
+    .const 'Sub' $P155 = "42_1276996307.3412" 
     capture_lex $P155
-    .const 'Sub' $P148 = "40_1275811476.7961" 
+    .const 'Sub' $P148 = "40_1276996307.3412" 
     capture_lex $P148
-    .const 'Sub' $P141 = "38_1275811476.7961" 
+    .const 'Sub' $P141 = "38_1276996307.3412" 
     capture_lex $P141
-    .const 'Sub' $P134 = "36_1275811476.7961" 
+    .const 'Sub' $P134 = "36_1276996307.3412" 
     capture_lex $P134
-    .const 'Sub' $P115 = "31_1275811476.7961" 
+    .const 'Sub' $P115 = "31_1276996307.3412" 
     capture_lex $P115
-    .const 'Sub' $P102 = "28_1275811476.7961" 
+    .const 'Sub' $P102 = "28_1276996307.3412" 
     capture_lex $P102
-    .const 'Sub' $P95 = "26_1275811476.7961" 
+    .const 'Sub' $P95 = "26_1276996307.3412" 
     capture_lex $P95
-    .const 'Sub' $P83 = "24_1275811476.7961" 
+    .const 'Sub' $P83 = "24_1276996307.3412" 
     capture_lex $P83
-    .const 'Sub' $P76 = "22_1275811476.7961" 
+    .const 'Sub' $P76 = "22_1276996307.3412" 
     capture_lex $P76
-    .const 'Sub' $P63 = "20_1275811476.7961" 
+    .const 'Sub' $P63 = "20_1276996307.3412" 
     capture_lex $P63
-    .const 'Sub' $P56 = "18_1275811476.7961" 
+    .const 'Sub' $P56 = "18_1276996307.3412" 
     capture_lex $P56
-    .const 'Sub' $P46 = "15_1275811476.7961" 
+    .const 'Sub' $P46 = "15_1276996307.3412" 
     capture_lex $P46
-    .const 'Sub' $P38 = "13_1275811476.7961" 
+    .const 'Sub' $P38 = "13_1276996307.3412" 
     capture_lex $P38
-    .const 'Sub' $P15 = "12_1275811476.7961" 
+    .const 'Sub' $P15 = "12_1276996307.3412" 
     capture_lex $P15
     $P0 = find_dynamic_lex "$*CTXSAVE"
     if null $P0 goto ctxsave_done
@@ -182,17 +182,17 @@
     unless $I0 goto ctxsave_done
     $P0."ctxsave"()
   ctxsave_done:
-    .const 'Sub' $P576 = "156_1275811476.7961" 
+    .const 'Sub' $P576 = "156_1276996307.3412" 
     capture_lex $P576
     .return ($P576)
-    .const 'Sub' $P585 = "158_1275811476.7961" 
+    .const 'Sub' $P585 = "158_1276996307.3412" 
     .return ($P585)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
 .include "except_types.pasm"
-.sub "obs"  :subid("12_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "obs"  :subid("12_1276996307.3412") :method :outer("11_1276996307.3412")
     .param pmc param_18
     .param pmc param_19
     .param pmc param_20 :optional
@@ -240,7 +240,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "ws"  :subid("13_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "ws"  :subid("13_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx39_tgt
     .local int rx39_pos
@@ -323,7 +323,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__ws"  :subid("14_1275811476.7961") :method
+.sub "!PREFIX__ws"  :subid("14_1276996307.3412") :method
 .annotate 'line', 3
     new $P41, "ResizablePMCArray"
     push $P41, ""
@@ -332,9 +332,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "normspace"  :subid("15_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "normspace"  :subid("15_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
-    .const 'Sub' $P52 = "17_1275811476.7961" 
+    .const 'Sub' $P52 = "17_1276996307.3412" 
     capture_lex $P52
     .local string rx47_tgt
     .local int rx47_pos
@@ -369,7 +369,7 @@
 .annotate 'line', 10
   # rx subrule "before" subtype=zerowidth negate=
     rx47_cur."!cursor_pos"(rx47_pos)
-    .const 'Sub' $P52 = "17_1275811476.7961" 
+    .const 'Sub' $P52 = "17_1276996307.3412" 
     capture_lex $P52
     $P10 = rx47_cur."before"($P52)
     unless $P10, rx47_fail
@@ -397,7 +397,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__normspace"  :subid("16_1275811476.7961") :method
+.sub "!PREFIX__normspace"  :subid("16_1276996307.3412") :method
 .annotate 'line', 3
     new $P49, "ResizablePMCArray"
     push $P49, ""
@@ -406,7 +406,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block51"  :anon :subid("17_1275811476.7961") :method :outer("15_1275811476.7961")
+.sub "_block51"  :anon :subid("17_1276996307.3412") :method :outer("15_1276996307.3412")
 .annotate 'line', 10
     .local string rx53_tgt
     .local int rx53_pos
@@ -475,7 +475,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "arg"  :subid("18_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "arg"  :subid("18_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx57_tgt
     .local int rx57_pos
@@ -587,7 +587,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__arg"  :subid("19_1275811476.7961") :method
+.sub "!PREFIX__arg"  :subid("19_1276996307.3412") :method
 .annotate 'line', 3
     new $P59, "ResizablePMCArray"
     push $P59, ""
@@ -598,7 +598,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "arglist"  :subid("20_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "arglist"  :subid("20_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx64_tgt
     .local int rx64_pos
@@ -705,7 +705,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__arglist"  :subid("21_1275811476.7961") :method
+.sub "!PREFIX__arglist"  :subid("21_1276996307.3412") :method
 .annotate 'line', 3
     $P66 = self."!PREFIX__!subrule"("ws", "")
     new $P67, "ResizablePMCArray"
@@ -715,7 +715,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "TOP"  :subid("22_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "TOP"  :subid("22_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx77_tgt
     .local int rx77_pos
@@ -789,7 +789,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__TOP"  :subid("23_1275811476.7961") :method
+.sub "!PREFIX__TOP"  :subid("23_1276996307.3412") :method
 .annotate 'line', 3
     $P79 = self."!PREFIX__!subrule"("nibbler", "")
     new $P80, "ResizablePMCArray"
@@ -799,7 +799,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "nibbler"  :subid("24_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "nibbler"  :subid("24_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx84_tgt
     .local int rx84_pos
@@ -968,7 +968,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__nibbler"  :subid("25_1275811476.7961") :method
+.sub "!PREFIX__nibbler"  :subid("25_1276996307.3412") :method
 .annotate 'line', 3
     new $P86, "ResizablePMCArray"
     push $P86, ""
@@ -977,7 +977,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "termish"  :subid("26_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "termish"  :subid("26_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx96_tgt
     .local int rx96_pos
@@ -1046,7 +1046,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__termish"  :subid("27_1275811476.7961") :method
+.sub "!PREFIX__termish"  :subid("27_1276996307.3412") :method
 .annotate 'line', 3
     new $P98, "ResizablePMCArray"
     push $P98, ""
@@ -1055,9 +1055,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantified_atom"  :subid("28_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "quantified_atom"  :subid("28_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
-    .const 'Sub' $P111 = "30_1275811476.7961" 
+    .const 'Sub' $P111 = "30_1276996307.3412" 
     capture_lex $P111
     .local string rx103_tgt
     .local int rx103_pos
@@ -1121,7 +1121,7 @@
   alt109_1:
   # rx subrule "before" subtype=zerowidth negate=
     rx103_cur."!cursor_pos"(rx103_pos)
-    .const 'Sub' $P111 = "30_1275811476.7961" 
+    .const 'Sub' $P111 = "30_1276996307.3412" 
     capture_lex $P111
     $P10 = rx103_cur."before"($P111)
     unless $P10, rx103_fail
@@ -1159,7 +1159,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantified_atom"  :subid("29_1275811476.7961") :method
+.sub "!PREFIX__quantified_atom"  :subid("29_1276996307.3412") :method
 .annotate 'line', 3
     $P105 = self."!PREFIX__!subrule"("atom", "")
     new $P106, "ResizablePMCArray"
@@ -1169,7 +1169,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block110"  :anon :subid("30_1275811476.7961") :method :outer("28_1275811476.7961")
+.sub "_block110"  :anon :subid("30_1276996307.3412") :method :outer("28_1276996307.3412")
 .annotate 'line', 41
     .local string rx112_tgt
     .local int rx112_pos
@@ -1226,9 +1226,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "atom"  :subid("31_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "atom"  :subid("31_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
-    .const 'Sub' $P126 = "33_1275811476.7961" 
+    .const 'Sub' $P126 = "33_1276996307.3412" 
     capture_lex $P126
     .local string rx116_tgt
     .local int rx116_pos
@@ -1289,7 +1289,7 @@
   rxquantg123_done:
   # rx subrule "before" subtype=zerowidth negate=
     rx116_cur."!cursor_pos"(rx116_pos)
-    .const 'Sub' $P126 = "33_1275811476.7961" 
+    .const 'Sub' $P126 = "33_1276996307.3412" 
     capture_lex $P126
     $P10 = rx116_cur."before"($P126)
     unless $P10, rx116_fail
@@ -1326,7 +1326,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__atom"  :subid("32_1275811476.7961") :method
+.sub "!PREFIX__atom"  :subid("32_1276996307.3412") :method
 .annotate 'line', 3
     $P118 = self."!PREFIX__!subrule"("metachar", "")
     new $P119, "ResizablePMCArray"
@@ -1337,7 +1337,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block125"  :anon :subid("33_1275811476.7961") :method :outer("31_1275811476.7961")
+.sub "_block125"  :anon :subid("33_1276996307.3412") :method :outer("31_1276996307.3412")
 .annotate 'line', 47
     .local string rx127_tgt
     .local int rx127_pos
@@ -1393,7 +1393,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier"  :subid("34_1275811476.7961") :method
+.sub "quantifier"  :subid("34_1276996307.3412") :method
 .annotate 'line', 52
     $P131 = self."!protoregex"("quantifier")
     .return ($P131)
@@ -1401,7 +1401,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier"  :subid("35_1275811476.7961") :method
+.sub "!PREFIX__quantifier"  :subid("35_1276996307.3412") :method
 .annotate 'line', 52
     $P133 = self."!PREFIX__!protoregex"("quantifier")
     .return ($P133)
@@ -1409,7 +1409,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<*>"  :subid("36_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "quantifier:sym<*>"  :subid("36_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx135_tgt
     .local int rx135_pos
@@ -1489,7 +1489,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<*>"  :subid("37_1275811476.7961") :method
+.sub "!PREFIX__quantifier:sym<*>"  :subid("37_1276996307.3412") :method
 .annotate 'line', 3
     $P137 = self."!PREFIX__!subrule"("backmod", "*")
     new $P138, "ResizablePMCArray"
@@ -1499,7 +1499,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<+>"  :subid("38_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "quantifier:sym<+>"  :subid("38_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx142_tgt
     .local int rx142_pos
@@ -1579,7 +1579,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<+>"  :subid("39_1275811476.7961") :method
+.sub "!PREFIX__quantifier:sym<+>"  :subid("39_1276996307.3412") :method
 .annotate 'line', 3
     $P144 = self."!PREFIX__!subrule"("backmod", "+")
     new $P145, "ResizablePMCArray"
@@ -1589,7 +1589,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<?>"  :subid("40_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "quantifier:sym<?>"  :subid("40_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx149_tgt
     .local int rx149_pos
@@ -1669,7 +1669,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<?>"  :subid("41_1275811476.7961") :method
+.sub "!PREFIX__quantifier:sym<?>"  :subid("41_1276996307.3412") :method
 .annotate 'line', 3
     $P151 = self."!PREFIX__!subrule"("backmod", "?")
     new $P152, "ResizablePMCArray"
@@ -1679,7 +1679,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "quantifier:sym<**>"  :subid("42_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "quantifier:sym<**>"  :subid("42_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx156_tgt
     .local int rx156_pos
@@ -1689,7 +1689,7 @@
     .local pmc rx156_cur
     (rx156_cur, rx156_pos, rx156_tgt) = self."!cursor_start"()
     rx156_cur."!cursor_debug"("START ", "quantifier:sym<**>")
-    rx156_cur."!cursor_caparray"("max", "normspace")
+    rx156_cur."!cursor_caparray"("normspace", "max")
     .lex unicode:"$\x{a2}", rx156_cur
     .local pmc match
     .lex "$/", match
@@ -1887,7 +1887,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__quantifier:sym<**>"  :subid("43_1275811476.7961") :method
+.sub "!PREFIX__quantifier:sym<**>"  :subid("43_1276996307.3412") :method
 .annotate 'line', 3
     new $P158, "ResizablePMCArray"
     push $P158, "**"
@@ -1896,9 +1896,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backmod"  :subid("44_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "backmod"  :subid("44_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
-    .const 'Sub' $P180 = "46_1275811476.7961" 
+    .const 'Sub' $P180 = "46_1276996307.3412" 
     capture_lex $P180
     .local string rx172_tgt
     .local int rx172_pos
@@ -1969,7 +1969,7 @@
   alt178_2:
   # rx subrule "before" subtype=zerowidth negate=1
     rx172_cur."!cursor_pos"(rx172_pos)
-    .const 'Sub' $P180 = "46_1275811476.7961" 
+    .const 'Sub' $P180 = "46_1276996307.3412" 
     capture_lex $P180
     $P10 = rx172_cur."before"($P180)
     if $P10, rx172_fail
@@ -1993,7 +1993,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backmod"  :subid("45_1275811476.7961") :method
+.sub "!PREFIX__backmod"  :subid("45_1276996307.3412") :method
 .annotate 'line', 3
     new $P174, "ResizablePMCArray"
     push $P174, ""
@@ -2002,7 +2002,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block179"  :anon :subid("46_1275811476.7961") :method :outer("44_1275811476.7961")
+.sub "_block179"  :anon :subid("46_1276996307.3412") :method :outer("44_1276996307.3412")
 .annotate 'line', 71
     .local string rx181_tgt
     .local int rx181_pos
@@ -2059,7 +2059,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar"  :subid("47_1275811476.7961") :method
+.sub "metachar"  :subid("47_1276996307.3412") :method
 .annotate 'line', 73
     $P184 = self."!protoregex"("metachar")
     .return ($P184)
@@ -2067,7 +2067,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar"  :subid("48_1275811476.7961") :method
+.sub "!PREFIX__metachar"  :subid("48_1276996307.3412") :method
 .annotate 'line', 73
     $P186 = self."!PREFIX__!protoregex"("metachar")
     .return ($P186)
@@ -2075,7 +2075,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<ws>"  :subid("49_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "metachar:sym<ws>"  :subid("49_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx188_tgt
     .local int rx188_pos
@@ -2132,7 +2132,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<ws>"  :subid("50_1275811476.7961") :method
+.sub "!PREFIX__metachar:sym<ws>"  :subid("50_1276996307.3412") :method
 .annotate 'line', 3
     $P190 = self."!PREFIX__!subrule"("normspace", "")
     new $P191, "ResizablePMCArray"
@@ -2142,7 +2142,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<[ ]>"  :subid("51_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "metachar:sym<[ ]>"  :subid("51_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx194_tgt
     .local int rx194_pos
@@ -2215,7 +2215,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<[ ]>"  :subid("52_1275811476.7961") :method
+.sub "!PREFIX__metachar:sym<[ ]>"  :subid("52_1276996307.3412") :method
 .annotate 'line', 3
     $P196 = self."!PREFIX__!subrule"("nibbler", "[")
     new $P197, "ResizablePMCArray"
@@ -2225,7 +2225,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<( )>"  :subid("53_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "metachar:sym<( )>"  :subid("53_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx200_tgt
     .local int rx200_pos
@@ -2298,7 +2298,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<( )>"  :subid("54_1275811476.7961") :method
+.sub "!PREFIX__metachar:sym<( )>"  :subid("54_1276996307.3412") :method
 .annotate 'line', 3
     $P202 = self."!PREFIX__!subrule"("nibbler", "(")
     new $P203, "ResizablePMCArray"
@@ -2308,7 +2308,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<'>"  :subid("55_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "metachar:sym<'>"  :subid("55_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx206_tgt
     .local int rx206_pos
@@ -2373,7 +2373,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<'>"  :subid("56_1275811476.7961") :method
+.sub "!PREFIX__metachar:sym<'>"  :subid("56_1276996307.3412") :method
 .annotate 'line', 3
     new $P208, "ResizablePMCArray"
     push $P208, "'"
@@ -2382,7 +2382,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<\">"  :subid("57_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "metachar:sym<\">"  :subid("57_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx211_tgt
     .local int rx211_pos
@@ -2447,7 +2447,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<\">"  :subid("58_1275811476.7961") :method
+.sub "!PREFIX__metachar:sym<\">"  :subid("58_1276996307.3412") :method
 .annotate 'line', 3
     new $P213, "ResizablePMCArray"
     push $P213, "\""
@@ -2456,7 +2456,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<.>"  :subid("59_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "metachar:sym<.>"  :subid("59_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx216_tgt
     .local int rx216_pos
@@ -2529,7 +2529,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<.>"  :subid("60_1275811476.7961") :method
+.sub "!PREFIX__metachar:sym<.>"  :subid("60_1276996307.3412") :method
 .annotate 'line', 3
     new $P218, "ResizablePMCArray"
     push $P218, "."
@@ -2538,7 +2538,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<^>"  :subid("61_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "metachar:sym<^>"  :subid("61_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx222_tgt
     .local int rx222_pos
@@ -2611,7 +2611,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<^>"  :subid("62_1275811476.7961") :method
+.sub "!PREFIX__metachar:sym<^>"  :subid("62_1276996307.3412") :method
 .annotate 'line', 3
     new $P224, "ResizablePMCArray"
     push $P224, "^"
@@ -2620,7 +2620,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<^^>"  :subid("63_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "metachar:sym<^^>"  :subid("63_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx228_tgt
     .local int rx228_pos
@@ -2693,7 +2693,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<^^>"  :subid("64_1275811476.7961") :method
+.sub "!PREFIX__metachar:sym<^^>"  :subid("64_1276996307.3412") :method
 .annotate 'line', 3
     new $P230, "ResizablePMCArray"
     push $P230, "^^"
@@ -2702,7 +2702,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<$>"  :subid("65_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "metachar:sym<$>"  :subid("65_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx234_tgt
     .local int rx234_pos
@@ -2775,7 +2775,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<$>"  :subid("66_1275811476.7961") :method
+.sub "!PREFIX__metachar:sym<$>"  :subid("66_1276996307.3412") :method
 .annotate 'line', 3
     new $P236, "ResizablePMCArray"
     push $P236, "$"
@@ -2784,7 +2784,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<$$>"  :subid("67_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "metachar:sym<$$>"  :subid("67_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx240_tgt
     .local int rx240_pos
@@ -2857,7 +2857,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<$$>"  :subid("68_1275811476.7961") :method
+.sub "!PREFIX__metachar:sym<$$>"  :subid("68_1276996307.3412") :method
 .annotate 'line', 3
     new $P242, "ResizablePMCArray"
     push $P242, "$$"
@@ -2866,7 +2866,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<:::>"  :subid("69_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "metachar:sym<:::>"  :subid("69_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx246_tgt
     .local int rx246_pos
@@ -2944,7 +2944,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<:::>"  :subid("70_1275811476.7961") :method
+.sub "!PREFIX__metachar:sym<:::>"  :subid("70_1276996307.3412") :method
 .annotate 'line', 3
     $P248 = self."!PREFIX__!subrule"("panic", ":::")
     new $P249, "ResizablePMCArray"
@@ -2954,7 +2954,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<::>"  :subid("71_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "metachar:sym<::>"  :subid("71_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx253_tgt
     .local int rx253_pos
@@ -3032,7 +3032,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<::>"  :subid("72_1275811476.7961") :method
+.sub "!PREFIX__metachar:sym<::>"  :subid("72_1276996307.3412") :method
 .annotate 'line', 3
     $P255 = self."!PREFIX__!subrule"("panic", "::")
     new $P256, "ResizablePMCArray"
@@ -3042,7 +3042,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<lwb>"  :subid("73_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "metachar:sym<lwb>"  :subid("73_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx260_tgt
     .local int rx260_pos
@@ -3128,7 +3128,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<lwb>"  :subid("74_1275811476.7961") :method
+.sub "!PREFIX__metachar:sym<lwb>"  :subid("74_1276996307.3412") :method
 .annotate 'line', 3
     new $P262, "ResizablePMCArray"
     push $P262, unicode:"\x{ab}"
@@ -3138,7 +3138,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<rwb>"  :subid("75_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "metachar:sym<rwb>"  :subid("75_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx267_tgt
     .local int rx267_pos
@@ -3224,7 +3224,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<rwb>"  :subid("76_1275811476.7961") :method
+.sub "!PREFIX__metachar:sym<rwb>"  :subid("76_1276996307.3412") :method
 .annotate 'line', 3
     new $P269, "ResizablePMCArray"
     push $P269, unicode:"\x{bb}"
@@ -3234,7 +3234,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<bs>"  :subid("77_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "metachar:sym<bs>"  :subid("77_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx274_tgt
     .local int rx274_pos
@@ -3300,7 +3300,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<bs>"  :subid("78_1275811476.7961") :method
+.sub "!PREFIX__metachar:sym<bs>"  :subid("78_1276996307.3412") :method
 .annotate 'line', 3
     $P276 = self."!PREFIX__!subrule"("backslash", "\\")
     new $P277, "ResizablePMCArray"
@@ -3310,7 +3310,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<mod>"  :subid("79_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "metachar:sym<mod>"  :subid("79_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx280_tgt
     .local int rx280_pos
@@ -3369,7 +3369,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<mod>"  :subid("80_1275811476.7961") :method
+.sub "!PREFIX__metachar:sym<mod>"  :subid("80_1276996307.3412") :method
 .annotate 'line', 3
     $P282 = self."!PREFIX__!subrule"("mod_internal", "")
     new $P283, "ResizablePMCArray"
@@ -3379,7 +3379,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<~>"  :subid("81_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "metachar:sym<~>"  :subid("81_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx286_tgt
     .local int rx286_pos
@@ -3479,7 +3479,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<~>"  :subid("82_1275811476.7961") :method
+.sub "!PREFIX__metachar:sym<~>"  :subid("82_1276996307.3412") :method
 .annotate 'line', 3
     $P288 = self."!PREFIX__!subrule"("ws", "~")
     new $P289, "ResizablePMCArray"
@@ -3489,7 +3489,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<{*}>"  :subid("83_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "metachar:sym<{*}>"  :subid("83_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx293_tgt
     .local int rx293_pos
@@ -3657,7 +3657,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<{*}>"  :subid("84_1275811476.7961") :method
+.sub "!PREFIX__metachar:sym<{*}>"  :subid("84_1276996307.3412") :method
 .annotate 'line', 3
     new $P295, "ResizablePMCArray"
     push $P295, "{*}"
@@ -3666,7 +3666,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<assert>"  :subid("85_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "metachar:sym<assert>"  :subid("85_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx310_tgt
     .local int rx310_pos
@@ -3752,7 +3752,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<assert>"  :subid("86_1275811476.7961") :method
+.sub "!PREFIX__metachar:sym<assert>"  :subid("86_1276996307.3412") :method
 .annotate 'line', 3
     $P312 = self."!PREFIX__!subrule"("assertion", "<")
     new $P313, "ResizablePMCArray"
@@ -3762,7 +3762,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<var>"  :subid("87_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "metachar:sym<var>"  :subid("87_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx317_tgt
     .local int rx317_pos
@@ -3925,7 +3925,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<var>"  :subid("88_1275811476.7961") :method
+.sub "!PREFIX__metachar:sym<var>"  :subid("88_1276996307.3412") :method
 .annotate 'line', 3
     new $P319, "ResizablePMCArray"
     push $P319, "$"
@@ -3935,7 +3935,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "metachar:sym<PIR>"  :subid("89_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "metachar:sym<PIR>"  :subid("89_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx329_tgt
     .local int rx329_pos
@@ -4027,7 +4027,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__metachar:sym<PIR>"  :subid("90_1275811476.7961") :method
+.sub "!PREFIX__metachar:sym<PIR>"  :subid("90_1276996307.3412") :method
 .annotate 'line', 3
     new $P331, "ResizablePMCArray"
     push $P331, ":PIR{{"
@@ -4036,7 +4036,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash"  :subid("91_1275811476.7961") :method
+.sub "backslash"  :subid("91_1276996307.3412") :method
 .annotate 'line', 120
     $P337 = self."!protoregex"("backslash")
     .return ($P337)
@@ -4044,7 +4044,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash"  :subid("92_1275811476.7961") :method
+.sub "!PREFIX__backslash"  :subid("92_1276996307.3412") :method
 .annotate 'line', 120
     $P339 = self."!PREFIX__!protoregex"("backslash")
     .return ($P339)
@@ -4052,7 +4052,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<w>"  :subid("93_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "backslash:sym<w>"  :subid("93_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx341_tgt
     .local int rx341_pos
@@ -4125,7 +4125,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<w>"  :subid("94_1275811476.7961") :method
+.sub "!PREFIX__backslash:sym<w>"  :subid("94_1276996307.3412") :method
 .annotate 'line', 3
     new $P343, "ResizablePMCArray"
     push $P343, "N"
@@ -4141,7 +4141,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<b>"  :subid("95_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "backslash:sym<b>"  :subid("95_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx347_tgt
     .local int rx347_pos
@@ -4214,7 +4214,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<b>"  :subid("96_1275811476.7961") :method
+.sub "!PREFIX__backslash:sym<b>"  :subid("96_1276996307.3412") :method
 .annotate 'line', 3
     new $P349, "ResizablePMCArray"
     push $P349, "B"
@@ -4224,7 +4224,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<e>"  :subid("97_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "backslash:sym<e>"  :subid("97_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx353_tgt
     .local int rx353_pos
@@ -4297,7 +4297,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<e>"  :subid("98_1275811476.7961") :method
+.sub "!PREFIX__backslash:sym<e>"  :subid("98_1276996307.3412") :method
 .annotate 'line', 3
     new $P355, "ResizablePMCArray"
     push $P355, "E"
@@ -4307,7 +4307,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<f>"  :subid("99_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "backslash:sym<f>"  :subid("99_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx359_tgt
     .local int rx359_pos
@@ -4380,7 +4380,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<f>"  :subid("100_1275811476.7961") :method
+.sub "!PREFIX__backslash:sym<f>"  :subid("100_1276996307.3412") :method
 .annotate 'line', 3
     new $P361, "ResizablePMCArray"
     push $P361, "F"
@@ -4390,7 +4390,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<h>"  :subid("101_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "backslash:sym<h>"  :subid("101_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx365_tgt
     .local int rx365_pos
@@ -4463,7 +4463,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<h>"  :subid("102_1275811476.7961") :method
+.sub "!PREFIX__backslash:sym<h>"  :subid("102_1276996307.3412") :method
 .annotate 'line', 3
     new $P367, "ResizablePMCArray"
     push $P367, "H"
@@ -4473,7 +4473,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<r>"  :subid("103_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "backslash:sym<r>"  :subid("103_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx371_tgt
     .local int rx371_pos
@@ -4546,7 +4546,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<r>"  :subid("104_1275811476.7961") :method
+.sub "!PREFIX__backslash:sym<r>"  :subid("104_1276996307.3412") :method
 .annotate 'line', 3
     new $P373, "ResizablePMCArray"
     push $P373, "R"
@@ -4556,7 +4556,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<t>"  :subid("105_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "backslash:sym<t>"  :subid("105_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx377_tgt
     .local int rx377_pos
@@ -4629,7 +4629,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<t>"  :subid("106_1275811476.7961") :method
+.sub "!PREFIX__backslash:sym<t>"  :subid("106_1276996307.3412") :method
 .annotate 'line', 3
     new $P379, "ResizablePMCArray"
     push $P379, "T"
@@ -4639,7 +4639,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<v>"  :subid("107_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "backslash:sym<v>"  :subid("107_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx383_tgt
     .local int rx383_pos
@@ -4712,7 +4712,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<v>"  :subid("108_1275811476.7961") :method
+.sub "!PREFIX__backslash:sym<v>"  :subid("108_1276996307.3412") :method
 .annotate 'line', 3
     new $P385, "ResizablePMCArray"
     push $P385, "V"
@@ -4722,7 +4722,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<o>"  :subid("109_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "backslash:sym<o>"  :subid("109_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx389_tgt
     .local int rx389_pos
@@ -4829,7 +4829,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<o>"  :subid("110_1275811476.7961") :method
+.sub "!PREFIX__backslash:sym<o>"  :subid("110_1276996307.3412") :method
 .annotate 'line', 3
     $P391 = self."!PREFIX__!subrule"("octints", "O[")
     $P392 = self."!PREFIX__!subrule"("octint", "O")
@@ -4845,7 +4845,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<x>"  :subid("111_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "backslash:sym<x>"  :subid("111_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx400_tgt
     .local int rx400_pos
@@ -4952,7 +4952,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<x>"  :subid("112_1275811476.7961") :method
+.sub "!PREFIX__backslash:sym<x>"  :subid("112_1276996307.3412") :method
 .annotate 'line', 3
     $P402 = self."!PREFIX__!subrule"("hexints", "X[")
     $P403 = self."!PREFIX__!subrule"("hexint", "X")
@@ -4968,7 +4968,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<c>"  :subid("113_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "backslash:sym<c>"  :subid("113_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx411_tgt
     .local int rx411_pos
@@ -5048,7 +5048,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<c>"  :subid("114_1275811476.7961") :method
+.sub "!PREFIX__backslash:sym<c>"  :subid("114_1276996307.3412") :method
 .annotate 'line', 3
     $P413 = self."!PREFIX__!subrule"("charspec", "C")
     $P414 = self."!PREFIX__!subrule"("charspec", "c")
@@ -5060,7 +5060,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<A>"  :subid("115_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "backslash:sym<A>"  :subid("115_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx419_tgt
     .local int rx419_pos
@@ -5124,7 +5124,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<A>"  :subid("116_1275811476.7961") :method
+.sub "!PREFIX__backslash:sym<A>"  :subid("116_1276996307.3412") :method
 .annotate 'line', 3
     $P421 = self."!PREFIX__!subrule"("obs", "A")
     new $P422, "ResizablePMCArray"
@@ -5134,7 +5134,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<z>"  :subid("117_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "backslash:sym<z>"  :subid("117_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx425_tgt
     .local int rx425_pos
@@ -5198,7 +5198,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<z>"  :subid("118_1275811476.7961") :method
+.sub "!PREFIX__backslash:sym<z>"  :subid("118_1276996307.3412") :method
 .annotate 'line', 3
     $P427 = self."!PREFIX__!subrule"("obs", "z")
     new $P428, "ResizablePMCArray"
@@ -5208,7 +5208,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<Z>"  :subid("119_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "backslash:sym<Z>"  :subid("119_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx431_tgt
     .local int rx431_pos
@@ -5272,7 +5272,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<Z>"  :subid("120_1275811476.7961") :method
+.sub "!PREFIX__backslash:sym<Z>"  :subid("120_1276996307.3412") :method
 .annotate 'line', 3
     $P433 = self."!PREFIX__!subrule"("obs", "Z")
     new $P434, "ResizablePMCArray"
@@ -5282,7 +5282,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<Q>"  :subid("121_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "backslash:sym<Q>"  :subid("121_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx437_tgt
     .local int rx437_pos
@@ -5346,7 +5346,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<Q>"  :subid("122_1275811476.7961") :method
+.sub "!PREFIX__backslash:sym<Q>"  :subid("122_1276996307.3412") :method
 .annotate 'line', 3
     $P439 = self."!PREFIX__!subrule"("obs", "Q")
     new $P440, "ResizablePMCArray"
@@ -5356,7 +5356,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "backslash:sym<misc>"  :subid("123_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "backslash:sym<misc>"  :subid("123_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx443_tgt
     .local int rx443_pos
@@ -5414,7 +5414,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__backslash:sym<misc>"  :subid("124_1275811476.7961") :method
+.sub "!PREFIX__backslash:sym<misc>"  :subid("124_1276996307.3412") :method
 .annotate 'line', 3
     new $P445, "ResizablePMCArray"
     push $P445, ""
@@ -5423,7 +5423,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion"  :subid("125_1275811476.7961") :method
+.sub "assertion"  :subid("125_1276996307.3412") :method
 .annotate 'line', 138
     $P448 = self."!protoregex"("assertion")
     .return ($P448)
@@ -5431,7 +5431,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion"  :subid("126_1275811476.7961") :method
+.sub "!PREFIX__assertion"  :subid("126_1276996307.3412") :method
 .annotate 'line', 138
     $P450 = self."!PREFIX__!protoregex"("assertion")
     .return ($P450)
@@ -5439,9 +5439,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<?>"  :subid("127_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "assertion:sym<?>"  :subid("127_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
-    .const 'Sub' $P459 = "129_1275811476.7961" 
+    .const 'Sub' $P459 = "129_1276996307.3412" 
     capture_lex $P459
     .local string rx452_tgt
     .local int rx452_pos
@@ -5486,7 +5486,7 @@
     rx452_cur."!mark_push"(0, rx452_pos, $I10)
   # rx subrule "before" subtype=zerowidth negate=
     rx452_cur."!cursor_pos"(rx452_pos)
-    .const 'Sub' $P459 = "129_1275811476.7961" 
+    .const 'Sub' $P459 = "129_1276996307.3412" 
     capture_lex $P459
     $P10 = rx452_cur."before"($P459)
     unless $P10, rx452_fail
@@ -5519,7 +5519,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<?>"  :subid("128_1275811476.7961") :method
+.sub "!PREFIX__assertion:sym<?>"  :subid("128_1276996307.3412") :method
 .annotate 'line', 3
     $P454 = self."!PREFIX__!subrule"("assertion", "?")
     new $P455, "ResizablePMCArray"
@@ -5530,7 +5530,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block458"  :anon :subid("129_1275811476.7961") :method :outer("127_1275811476.7961")
+.sub "_block458"  :anon :subid("129_1276996307.3412") :method :outer("127_1276996307.3412")
 .annotate 'line', 140
     .local string rx460_tgt
     .local int rx460_pos
@@ -5587,9 +5587,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<!>"  :subid("130_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "assertion:sym<!>"  :subid("130_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
-    .const 'Sub' $P470 = "132_1275811476.7961" 
+    .const 'Sub' $P470 = "132_1276996307.3412" 
     capture_lex $P470
     .local string rx463_tgt
     .local int rx463_pos
@@ -5634,7 +5634,7 @@
     rx463_cur."!mark_push"(0, rx463_pos, $I10)
   # rx subrule "before" subtype=zerowidth negate=
     rx463_cur."!cursor_pos"(rx463_pos)
-    .const 'Sub' $P470 = "132_1275811476.7961" 
+    .const 'Sub' $P470 = "132_1276996307.3412" 
     capture_lex $P470
     $P10 = rx463_cur."before"($P470)
     unless $P10, rx463_fail
@@ -5667,7 +5667,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<!>"  :subid("131_1275811476.7961") :method
+.sub "!PREFIX__assertion:sym<!>"  :subid("131_1276996307.3412") :method
 .annotate 'line', 3
     $P465 = self."!PREFIX__!subrule"("assertion", "!")
     new $P466, "ResizablePMCArray"
@@ -5678,7 +5678,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block469"  :anon :subid("132_1275811476.7961") :method :outer("130_1275811476.7961")
+.sub "_block469"  :anon :subid("132_1276996307.3412") :method :outer("130_1276996307.3412")
 .annotate 'line', 141
     .local string rx471_tgt
     .local int rx471_pos
@@ -5735,7 +5735,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<method>"  :subid("133_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "assertion:sym<method>"  :subid("133_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx474_tgt
     .local int rx474_pos
@@ -5802,7 +5802,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<method>"  :subid("134_1275811476.7961") :method
+.sub "!PREFIX__assertion:sym<method>"  :subid("134_1276996307.3412") :method
 .annotate 'line', 3
     $P476 = self."!PREFIX__!subrule"("assertion", ".")
     new $P477, "ResizablePMCArray"
@@ -5812,9 +5812,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<name>"  :subid("135_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "assertion:sym<name>"  :subid("135_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
-    .const 'Sub' $P488 = "137_1275811476.7961" 
+    .const 'Sub' $P488 = "137_1276996307.3412" 
     capture_lex $P488
     .local string rx480_tgt
     .local int rx480_pos
@@ -5824,7 +5824,7 @@
     .local pmc rx480_cur
     (rx480_cur, rx480_pos, rx480_tgt) = self."!cursor_start"()
     rx480_cur."!cursor_debug"("START ", "assertion:sym<name>")
-    rx480_cur."!cursor_caparray"("nibbler", "arglist", "assertion")
+    rx480_cur."!cursor_caparray"("assertion", "nibbler", "arglist")
     .lex unicode:"$\x{a2}", rx480_cur
     .local pmc match
     .lex "$/", match
@@ -5880,7 +5880,7 @@
 .annotate 'line', 150
   # rx subrule "before" subtype=zerowidth negate=
     rx480_cur."!cursor_pos"(rx480_pos)
-    .const 'Sub' $P488 = "137_1275811476.7961" 
+    .const 'Sub' $P488 = "137_1276996307.3412" 
     capture_lex $P488
     $P10 = rx480_cur."before"($P488)
     unless $P10, rx480_fail
@@ -5987,7 +5987,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<name>"  :subid("136_1275811476.7961") :method
+.sub "!PREFIX__assertion:sym<name>"  :subid("136_1276996307.3412") :method
 .annotate 'line', 3
     new $P482, "ResizablePMCArray"
     push $P482, ""
@@ -5996,7 +5996,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block487"  :anon :subid("137_1275811476.7961") :method :outer("135_1275811476.7961")
+.sub "_block487"  :anon :subid("137_1276996307.3412") :method :outer("135_1276996307.3412")
 .annotate 'line', 150
     .local string rx489_tgt
     .local int rx489_pos
@@ -6053,9 +6053,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "assertion:sym<[>"  :subid("138_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "assertion:sym<[>"  :subid("138_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
-    .const 'Sub' $P498 = "140_1275811476.7961" 
+    .const 'Sub' $P498 = "140_1276996307.3412" 
     capture_lex $P498
     .local string rx493_tgt
     .local int rx493_pos
@@ -6091,7 +6091,7 @@
 .annotate 'line', 158
   # rx subrule "before" subtype=zerowidth negate=
     rx493_cur."!cursor_pos"(rx493_pos)
-    .const 'Sub' $P498 = "140_1275811476.7961" 
+    .const 'Sub' $P498 = "140_1276996307.3412" 
     capture_lex $P498
     $P10 = rx493_cur."before"($P498)
     unless $P10, rx493_fail
@@ -6129,7 +6129,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__assertion:sym<[>"  :subid("139_1275811476.7961") :method
+.sub "!PREFIX__assertion:sym<[>"  :subid("139_1276996307.3412") :method
 .annotate 'line', 3
     new $P495, "ResizablePMCArray"
     push $P495, ""
@@ -6138,7 +6138,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block497"  :anon :subid("140_1275811476.7961") :method :outer("138_1275811476.7961")
+.sub "_block497"  :anon :subid("140_1276996307.3412") :method :outer("138_1276996307.3412")
 .annotate 'line', 158
     .local string rx499_tgt
     .local int rx499_pos
@@ -6219,9 +6219,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "cclass_elem"  :subid("141_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "cclass_elem"  :subid("141_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
-    .const 'Sub' $P516 = "143_1275811476.7961" 
+    .const 'Sub' $P516 = "143_1276996307.3412" 
     capture_lex $P516
     .local string rx505_tgt
     .local int rx505_pos
@@ -6325,7 +6325,7 @@
 .annotate 'line', 164
   # rx subrule $P516 subtype=capture negate=
     rx505_cur."!cursor_pos"(rx505_pos)
-    .const 'Sub' $P516 = "143_1275811476.7961" 
+    .const 'Sub' $P516 = "143_1276996307.3412" 
     capture_lex $P516
     $P10 = rx505_cur.$P516()
     unless $P10, rx505_fail
@@ -6406,7 +6406,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__cclass_elem"  :subid("142_1275811476.7961") :method
+.sub "!PREFIX__cclass_elem"  :subid("142_1276996307.3412") :method
 .annotate 'line', 3
     new $P507, "ResizablePMCArray"
     push $P507, ""
@@ -6417,13 +6417,13 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block515"  :anon :subid("143_1275811476.7961") :method :outer("141_1275811476.7961")
+.sub "_block515"  :anon :subid("143_1276996307.3412") :method :outer("141_1276996307.3412")
 .annotate 'line', 164
-    .const 'Sub' $P531 = "146_1275811476.7961" 
+    .const 'Sub' $P531 = "146_1276996307.3412" 
     capture_lex $P531
-    .const 'Sub' $P526 = "145_1275811476.7961" 
+    .const 'Sub' $P526 = "145_1276996307.3412" 
     capture_lex $P526
-    .const 'Sub' $P522 = "144_1275811476.7961" 
+    .const 'Sub' $P522 = "144_1276996307.3412" 
     capture_lex $P522
     .local string rx517_tgt
     .local int rx517_pos
@@ -6495,7 +6495,7 @@
     add rx517_pos, 1
   # rx subrule $P522 subtype=capture negate=
     rx517_cur."!cursor_pos"(rx517_pos)
-    .const 'Sub' $P522 = "144_1275811476.7961" 
+    .const 'Sub' $P522 = "144_1276996307.3412" 
     capture_lex $P522
     $P10 = rx517_cur.$P522()
     unless $P10, rx517_fail
@@ -6506,7 +6506,7 @@
   alt520_1:
   # rx subrule $P526 subtype=capture negate=
     rx517_cur."!cursor_pos"(rx517_pos)
-    .const 'Sub' $P526 = "145_1275811476.7961" 
+    .const 'Sub' $P526 = "145_1276996307.3412" 
     capture_lex $P526
     $P10 = rx517_cur.$P526()
     unless $P10, rx517_fail
@@ -6535,7 +6535,7 @@
     add rx517_pos, rx517_off, $I11
   # rx subrule $P531 subtype=capture negate=
     rx517_cur."!cursor_pos"(rx517_pos)
-    .const 'Sub' $P531 = "146_1275811476.7961" 
+    .const 'Sub' $P531 = "146_1276996307.3412" 
     capture_lex $P531
     $P10 = rx517_cur.$P531()
     unless $P10, rx517_fail
@@ -6564,7 +6564,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block521"  :anon :subid("144_1275811476.7961") :method :outer("143_1275811476.7961")
+.sub "_block521"  :anon :subid("144_1276996307.3412") :method :outer("143_1276996307.3412")
 .annotate 'line', 166
     .local string rx523_tgt
     .local int rx523_pos
@@ -6617,7 +6617,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block525"  :anon :subid("145_1275811476.7961") :method :outer("143_1275811476.7961")
+.sub "_block525"  :anon :subid("145_1276996307.3412") :method :outer("143_1276996307.3412")
 .annotate 'line', 166
     .local string rx527_tgt
     .local int rx527_pos
@@ -6674,7 +6674,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block530"  :anon :subid("146_1275811476.7961") :method :outer("143_1275811476.7961")
+.sub "_block530"  :anon :subid("146_1276996307.3412") :method :outer("143_1276996307.3412")
 .annotate 'line', 166
     .local string rx532_tgt
     .local int rx532_pos
@@ -6727,9 +6727,9 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_internal"  :subid("147_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "mod_internal"  :subid("147_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
-    .const 'Sub' $P548 = "149_1275811476.7961" 
+    .const 'Sub' $P548 = "149_1276996307.3412" 
     capture_lex $P548
     .local string rx540_tgt
     .local int rx540_pos
@@ -6780,7 +6780,7 @@
   rxquantr546_loop:
   # rx subrule $P548 subtype=capture negate=
     rx540_cur."!cursor_pos"(rx540_pos)
-    .const 'Sub' $P548 = "149_1275811476.7961" 
+    .const 'Sub' $P548 = "149_1276996307.3412" 
     capture_lex $P548
     $P10 = rx540_cur.$P548()
     unless $P10, rx540_fail
@@ -6882,7 +6882,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_internal"  :subid("148_1275811476.7961") :method
+.sub "!PREFIX__mod_internal"  :subid("148_1276996307.3412") :method
 .annotate 'line', 3
     $P542 = self."!PREFIX__!subrule"("mod_ident", ":")
     new $P543, "ResizablePMCArray"
@@ -6893,7 +6893,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block547"  :anon :subid("149_1275811476.7961") :method :outer("147_1275811476.7961")
+.sub "_block547"  :anon :subid("149_1276996307.3412") :method :outer("147_1276996307.3412")
 .annotate 'line', 176
     .local string rx549_tgt
     .local int rx549_pos
@@ -6962,7 +6962,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident"  :subid("150_1275811476.7961") :method
+.sub "mod_ident"  :subid("150_1276996307.3412") :method
 .annotate 'line', 181
     $P557 = self."!protoregex"("mod_ident")
     .return ($P557)
@@ -6970,7 +6970,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident"  :subid("151_1275811476.7961") :method
+.sub "!PREFIX__mod_ident"  :subid("151_1276996307.3412") :method
 .annotate 'line', 181
     $P559 = self."!PREFIX__!protoregex"("mod_ident")
     .return ($P559)
@@ -6978,7 +6978,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident:sym<ignorecase>"  :subid("152_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "mod_ident:sym<ignorecase>"  :subid("152_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx561_tgt
     .local int rx561_pos
@@ -7064,7 +7064,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident:sym<ignorecase>"  :subid("153_1275811476.7961") :method
+.sub "!PREFIX__mod_ident:sym<ignorecase>"  :subid("153_1276996307.3412") :method
 .annotate 'line', 3
     new $P563, "ResizablePMCArray"
     push $P563, "i"
@@ -7073,7 +7073,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident:sym<ratchet>"  :subid("154_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "mod_ident:sym<ratchet>"  :subid("154_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx569_tgt
     .local int rx569_pos
@@ -7159,7 +7159,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident:sym<ratchet>"  :subid("155_1275811476.7961") :method
+.sub "!PREFIX__mod_ident:sym<ratchet>"  :subid("155_1276996307.3412") :method
 .annotate 'line', 3
     new $P571, "ResizablePMCArray"
     push $P571, "r"
@@ -7168,7 +7168,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "mod_ident:sym<sigspace>"  :subid("156_1275811476.7961") :method :outer("11_1275811476.7961")
+.sub "mod_ident:sym<sigspace>"  :subid("156_1276996307.3412") :method :outer("11_1276996307.3412")
 .annotate 'line', 3
     .local string rx577_tgt
     .local int rx577_pos
@@ -7254,7 +7254,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "!PREFIX__mod_ident:sym<sigspace>"  :subid("157_1275811476.7961") :method
+.sub "!PREFIX__mod_ident:sym<sigspace>"  :subid("157_1276996307.3412") :method
 .annotate 'line', 3
     new $P579, "ResizablePMCArray"
     push $P579, "s"
@@ -7263,18 +7263,18 @@
 
 
 .namespace ["Regex";"P6Regex";"Grammar"]
-.sub "_block584" :load :anon :subid("158_1275811476.7961")
+.sub "_block584" :load :anon :subid("158_1276996307.3412")
 .annotate 'line', 3
-    .const 'Sub' $P586 = "11_1275811476.7961" 
+    .const 'Sub' $P586 = "11_1276996307.3412" 
     $P587 = $P586()
     .return ($P587)
 .end
 
 
 .namespace []
-.sub "_block589" :load :anon :subid("159_1275811476.7961")
+.sub "_block589" :load :anon :subid("159_1276996307.3412")
 .annotate 'line', 1
-    .const 'Sub' $P591 = "10_1275811476.7961" 
+    .const 'Sub' $P591 = "10_1276996307.3412" 
     $P592 = $P591()
     .return ($P592)
 .end
@@ -7282,7 +7282,7 @@
 ### .include 'gen/p6regex-actions.pir'
 
 .namespace []
-.sub "_block11"  :anon :subid("10_1275811482.3686")
+.sub "_block11"  :anon :subid("10_1276996315.25554")
 .annotate 'line', 0
     get_hll_global $P14, ["Regex";"P6Regex";"Actions"], "_block13" 
     capture_lex $P14
@@ -7299,15 +7299,15 @@
     $P1599 = $P14()
 .annotate 'line', 1
     .return ($P1599)
-    .const 'Sub' $P1601 = "91_1275811482.3686" 
+    .const 'Sub' $P1601 = "91_1276996315.25554" 
     .return ($P1601)
 .end
 
 
 .namespace []
-.sub "" :load :init :subid("post92") :outer("10_1275811482.3686")
+.sub "" :load :init :subid("post92") :outer("10_1276996315.25554")
 .annotate 'line', 0
-    .const 'Sub' $P12 = "10_1275811482.3686" 
+    .const 'Sub' $P12 = "10_1276996315.25554" 
     .local pmc block
     set block, $P12
     $P1604 = get_root_global ["parrot"], "P6metaclass"
@@ -7316,115 +7316,115 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block13"  :subid("11_1275811482.3686") :outer("10_1275811482.3686")
+.sub "_block13"  :subid("11_1276996315.25554") :outer("10_1276996315.25554")
 .annotate 'line', 4
-    .const 'Sub' $P1561 = "89_1275811482.3686" 
+    .const 'Sub' $P1561 = "89_1276996315.25554" 
     capture_lex $P1561
-    .const 'Sub' $P1492 = "85_1275811482.3686" 
+    .const 'Sub' $P1492 = "85_1276996315.25554" 
     capture_lex $P1492
-    .const 'Sub' $P1424 = "83_1275811482.3686" 
+    .const 'Sub' $P1424 = "83_1276996315.25554" 
     capture_lex $P1424
-    .const 'Sub' $P1351 = "80_1275811482.3686" 
+    .const 'Sub' $P1351 = "80_1276996315.25554" 
     capture_lex $P1351
-    .const 'Sub' $P1337 = "79_1275811482.3686" 
+    .const 'Sub' $P1337 = "79_1276996315.25554" 
     capture_lex $P1337
-    .const 'Sub' $P1313 = "78_1275811482.3686" 
+    .const 'Sub' $P1313 = "78_1276996315.25554" 
     capture_lex $P1313
-    .const 'Sub' $P1295 = "77_1275811482.3686" 
+    .const 'Sub' $P1295 = "77_1276996315.25554" 
     capture_lex $P1295
-    .const 'Sub' $P1281 = "76_1275811482.3686" 
+    .const 'Sub' $P1281 = "76_1276996315.25554" 
     capture_lex $P1281
-    .const 'Sub' $P1268 = "75_1275811482.3686" 
+    .const 'Sub' $P1268 = "75_1276996315.25554" 
     capture_lex $P1268
-    .const 'Sub' $P1237 = "74_1275811482.3686" 
+    .const 'Sub' $P1237 = "74_1276996315.25554" 
     capture_lex $P1237
-    .const 'Sub' $P1206 = "73_1275811482.3686" 
+    .const 'Sub' $P1206 = "73_1276996315.25554" 
     capture_lex $P1206
-    .const 'Sub' $P1190 = "72_1275811482.3686" 
+    .const 'Sub' $P1190 = "72_1276996315.25554" 
     capture_lex $P1190
-    .const 'Sub' $P1174 = "71_1275811482.3686" 
+    .const 'Sub' $P1174 = "71_1276996315.25554" 
     capture_lex $P1174
-    .const 'Sub' $P1158 = "70_1275811482.3686" 
+    .const 'Sub' $P1158 = "70_1276996315.25554" 
     capture_lex $P1158
-    .const 'Sub' $P1142 = "69_1275811482.3686" 
+    .const 'Sub' $P1142 = "69_1276996315.25554" 
     capture_lex $P1142
-    .const 'Sub' $P1126 = "68_1275811482.3686" 
+    .const 'Sub' $P1126 = "68_1276996315.25554" 
     capture_lex $P1126
-    .const 'Sub' $P1110 = "67_1275811482.3686" 
+    .const 'Sub' $P1110 = "67_1276996315.25554" 
     capture_lex $P1110
-    .const 'Sub' $P1094 = "66_1275811482.3686" 
+    .const 'Sub' $P1094 = "66_1276996315.25554" 
     capture_lex $P1094
-    .const 'Sub' $P1070 = "65_1275811482.3686" 
+    .const 'Sub' $P1070 = "65_1276996315.25554" 
     capture_lex $P1070
-    .const 'Sub' $P1055 = "64_1275811482.3686" 
+    .const 'Sub' $P1055 = "64_1276996315.25554" 
     capture_lex $P1055
-    .const 'Sub' $P999 = "63_1275811482.3686" 
+    .const 'Sub' $P999 = "63_1276996315.25554" 
     capture_lex $P999
-    .const 'Sub' $P978 = "62_1275811482.3686" 
+    .const 'Sub' $P978 = "62_1276996315.25554" 
     capture_lex $P978
-    .const 'Sub' $P956 = "61_1275811482.3686" 
+    .const 'Sub' $P956 = "61_1276996315.25554" 
     capture_lex $P956
-    .const 'Sub' $P946 = "60_1275811482.3686" 
+    .const 'Sub' $P946 = "60_1276996315.25554" 
     capture_lex $P946
-    .const 'Sub' $P936 = "59_1275811482.3686" 
+    .const 'Sub' $P936 = "59_1276996315.25554" 
     capture_lex $P936
-    .const 'Sub' $P926 = "58_1275811482.3686" 
+    .const 'Sub' $P926 = "58_1276996315.25554" 
     capture_lex $P926
-    .const 'Sub' $P914 = "57_1275811482.3686" 
+    .const 'Sub' $P914 = "57_1276996315.25554" 
     capture_lex $P914
-    .const 'Sub' $P902 = "56_1275811482.3686" 
+    .const 'Sub' $P902 = "56_1276996315.25554" 
     capture_lex $P902
-    .const 'Sub' $P890 = "55_1275811482.3686" 
+    .const 'Sub' $P890 = "55_1276996315.25554" 
     capture_lex $P890
-    .const 'Sub' $P878 = "54_1275811482.3686" 
+    .const 'Sub' $P878 = "54_1276996315.25554" 
     capture_lex $P878
-    .const 'Sub' $P866 = "53_1275811482.3686" 
+    .const 'Sub' $P866 = "53_1276996315.25554" 
     capture_lex $P866
-    .const 'Sub' $P854 = "52_1275811482.3686" 
+    .const 'Sub' $P854 = "52_1276996315.25554" 
     capture_lex $P854
-    .const 'Sub' $P842 = "51_1275811482.3686" 
+    .const 'Sub' $P842 = "51_1276996315.25554" 
     capture_lex $P842
-    .const 'Sub' $P830 = "50_1275811482.3686" 
+    .const 'Sub' $P830 = "50_1276996315.25554" 
     capture_lex $P830
-    .const 'Sub' $P807 = "49_1275811482.3686" 
+    .const 'Sub' $P807 = "49_1276996315.25554" 
     capture_lex $P807
-    .const 'Sub' $P784 = "48_1275811482.3686" 
+    .const 'Sub' $P784 = "48_1276996315.25554" 
     capture_lex $P784
-    .const 'Sub' $P766 = "47_1275811482.3686" 
+    .const 'Sub' $P766 = "47_1276996315.25554" 
     capture_lex $P766
-    .const 'Sub' $P756 = "46_1275811482.3686" 
+    .const 'Sub' $P756 = "46_1276996315.25554" 
     capture_lex $P756
-    .const 'Sub' $P738 = "45_1275811482.3686" 
+    .const 'Sub' $P738 = "45_1276996315.25554" 
     capture_lex $P738
-    .const 'Sub' $P665 = "43_1275811482.3686" 
+    .const 'Sub' $P665 = "43_1276996315.25554" 
     capture_lex $P665
-    .const 'Sub' $P648 = "42_1275811482.3686" 
+    .const 'Sub' $P648 = "42_1276996315.25554" 
     capture_lex $P648
-    .const 'Sub' $P633 = "41_1275811482.3686" 
+    .const 'Sub' $P633 = "41_1276996315.25554" 
     capture_lex $P633
-    .const 'Sub' $P618 = "40_1275811482.3686" 
+    .const 'Sub' $P618 = "40_1276996315.25554" 
     capture_lex $P618
-    .const 'Sub' $P592 = "39_1275811482.3686" 
+    .const 'Sub' $P592 = "39_1276996315.25554" 
     capture_lex $P592
-    .const 'Sub' $P541 = "37_1275811482.3686" 
+    .const 'Sub' $P541 = "37_1276996315.25554" 
     capture_lex $P541
-    .const 'Sub' $P473 = "35_1275811482.3686" 
+    .const 'Sub' $P473 = "35_1276996315.25554" 
     capture_lex $P473
-    .const 'Sub' $P418 = "32_1275811482.3686" 
+    .const 'Sub' $P418 = "32_1276996315.25554" 
     capture_lex $P418
-    .const 'Sub' $P403 = "31_1275811482.3686" 
+    .const 'Sub' $P403 = "31_1276996315.25554" 
     capture_lex $P403
-    .const 'Sub' $P377 = "29_1275811482.3686" 
+    .const 'Sub' $P377 = "29_1276996315.25554" 
     capture_lex $P377
-    .const 'Sub' $P360 = "28_1275811482.3686" 
+    .const 'Sub' $P360 = "28_1276996315.25554" 
     capture_lex $P360
-    .const 'Sub' $P338 = "27_1275811482.3686" 
+    .const 'Sub' $P338 = "27_1276996315.25554" 
     capture_lex $P338
-    .const 'Sub' $P305 = "26_1275811482.3686" 
+    .const 'Sub' $P305 = "26_1276996315.25554" 
     capture_lex $P305
-    .const 'Sub' $P50 = "13_1275811482.3686" 
+    .const 'Sub' $P50 = "13_1276996315.25554" 
     capture_lex $P50
-    .const 'Sub' $P16 = "12_1275811482.3686" 
+    .const 'Sub' $P16 = "12_1276996315.25554" 
     capture_lex $P16
     get_global $P15, "@MODIFIERS"
     unless_null $P15, vivify_94
@@ -7432,19 +7432,19 @@
     set_global "@MODIFIERS", $P15
   vivify_94:
 .annotate 'line', 494
-    .const 'Sub' $P16 = "12_1275811482.3686" 
+    .const 'Sub' $P16 = "12_1276996315.25554" 
     newclosure $P49, $P16
     .lex "buildsub", $P49
 .annotate 'line', 511
-    .const 'Sub' $P50 = "13_1275811482.3686" 
+    .const 'Sub' $P50 = "13_1276996315.25554" 
     newclosure $P304, $P50
     .lex "capnames", $P304
 .annotate 'line', 577
-    .const 'Sub' $P305 = "26_1275811482.3686" 
+    .const 'Sub' $P305 = "26_1276996315.25554" 
     newclosure $P337, $P305
     .lex "backmod", $P337
 .annotate 'line', 584
-    .const 'Sub' $P338 = "27_1275811482.3686" 
+    .const 'Sub' $P338 = "27_1276996315.25554" 
     newclosure $P358, $P338
     .lex "subrule_alias", $P358
 .annotate 'line', 4
@@ -7462,13 +7462,13 @@
     find_lex $P1593, "subrule_alias"
 .annotate 'line', 4
     .return ($P1593)
-    .const 'Sub' $P1595 = "90_1275811482.3686" 
+    .const 'Sub' $P1595 = "90_1276996315.25554" 
     .return ($P1595)
 .end
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "" :load :init :subid("post93") :outer("11_1275811482.3686")
+.sub "" :load :init :subid("post93") :outer("11_1276996315.25554")
 .annotate 'line', 4
     get_hll_global $P14, ["Regex";"P6Regex";"Actions"], "_block13" 
     .local pmc block
@@ -7485,7 +7485,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "buildsub"  :subid("12_1275811482.3686") :outer("11_1275811482.3686")
+.sub "buildsub"  :subid("12_1276996315.25554") :outer("11_1276996315.25554")
     .param pmc param_19
     .param pmc param_20 :optional
     .param int has_param_20 :opt_flag
@@ -7563,19 +7563,19 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "capnames"  :subid("13_1275811482.3686") :outer("11_1275811482.3686")
+.sub "capnames"  :subid("13_1276996315.25554") :outer("11_1276996315.25554")
     .param pmc param_53
     .param pmc param_54
 .annotate 'line', 511
-    .const 'Sub' $P279 = "24_1275811482.3686" 
+    .const 'Sub' $P279 = "24_1276996315.25554" 
     capture_lex $P279
-    .const 'Sub' $P216 = "21_1275811482.3686" 
+    .const 'Sub' $P216 = "21_1276996315.25554" 
     capture_lex $P216
-    .const 'Sub' $P174 = "19_1275811482.3686" 
+    .const 'Sub' $P174 = "19_1276996315.25554" 
     capture_lex $P174
-    .const 'Sub' $P132 = "17_1275811482.3686" 
+    .const 'Sub' $P132 = "17_1276996315.25554" 
     capture_lex $P132
-    .const 'Sub' $P65 = "14_1275811482.3686" 
+    .const 'Sub' $P65 = "14_1276996315.25554" 
     capture_lex $P65
     new $P52, 'ExceptionHandler'
     set_addr $P52, control_51
@@ -7631,21 +7631,21 @@
     set $S276, $P275
     iseq $I277, $S276, "quant"
     unless $I277, if_274_end
-    .const 'Sub' $P279 = "24_1275811482.3686" 
+    .const 'Sub' $P279 = "24_1276996315.25554" 
     capture_lex $P279
     $P279()
   if_274_end:
     goto if_211_end
   if_211:
 .annotate 'line', 549
-    .const 'Sub' $P216 = "21_1275811482.3686" 
+    .const 'Sub' $P216 = "21_1276996315.25554" 
     capture_lex $P216
     $P216()
   if_211_end:
     goto if_164_end
   if_164:
 .annotate 'line', 536
-    .const 'Sub' $P174 = "19_1275811482.3686" 
+    .const 'Sub' $P174 = "19_1276996315.25554" 
     capture_lex $P174
     $P174()
   if_164_end:
@@ -7665,7 +7665,7 @@
     unless $P126, loop161_done
     shift $P130, $P126
   loop161_redo:
-    .const 'Sub' $P132 = "17_1275811482.3686" 
+    .const 'Sub' $P132 = "17_1276996315.25554" 
     capture_lex $P132
     $P132($P130)
   loop161_next:
@@ -7684,7 +7684,7 @@
     goto if_60_end
   if_60:
 .annotate 'line', 514
-    .const 'Sub' $P65 = "14_1275811482.3686" 
+    .const 'Sub' $P65 = "14_1276996315.25554" 
     capture_lex $P65
     $P65()
   if_60_end:
@@ -7709,9 +7709,9 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "_block278"  :anon :subid("24_1275811482.3686") :outer("13_1275811482.3686")
+.sub "_block278"  :anon :subid("24_1276996315.25554") :outer("13_1276996315.25554")
 .annotate 'line', 566
-    .const 'Sub' $P290 = "25_1275811482.3686" 
+    .const 'Sub' $P290 = "25_1276996315.25554" 
     capture_lex $P290
 .annotate 'line', 567
     $P280 = root_new ['parrot';'Hash']
@@ -7740,7 +7740,7 @@
     unless $P285, loop295_done
     shift $P288, $P285
   loop295_redo:
-    .const 'Sub' $P290 = "25_1275811482.3686" 
+    .const 'Sub' $P290 = "25_1276996315.25554" 
     capture_lex $P290
     $P290($P288)
   loop295_next:
@@ -7770,7 +7770,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block289"  :anon :subid("25_1275811482.3686") :outer("24_1275811482.3686")
+.sub "_block289"  :anon :subid("25_1276996315.25554") :outer("24_1276996315.25554")
     .param pmc param_291
 .annotate 'line', 568
     .lex "$_", param_291
@@ -7791,11 +7791,11 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "_block215"  :anon :subid("21_1275811482.3686") :outer("13_1275811482.3686")
+.sub "_block215"  :anon :subid("21_1276996315.25554") :outer("13_1276996315.25554")
 .annotate 'line', 549
-    .const 'Sub' $P256 = "23_1275811482.3686" 
+    .const 'Sub' $P256 = "23_1276996315.25554" 
     capture_lex $P256
-    .const 'Sub' $P228 = "22_1275811482.3686" 
+    .const 'Sub' $P228 = "22_1276996315.25554" 
     capture_lex $P228
 .annotate 'line', 550
     new $P217, "Undef"
@@ -7830,7 +7830,7 @@
     unless $P223, loop244_done
     shift $P226, $P223
   loop244_redo:
-    .const 'Sub' $P228 = "22_1275811482.3686" 
+    .const 'Sub' $P228 = "22_1276996315.25554" 
     capture_lex $P228
     $P228($P226)
   loop244_next:
@@ -7869,7 +7869,7 @@
     unless $P251, loop269_done
     shift $P254, $P251
   loop269_redo:
-    .const 'Sub' $P256 = "23_1275811482.3686" 
+    .const 'Sub' $P256 = "23_1276996315.25554" 
     capture_lex $P256
     $P256($P254)
   loop269_next:
@@ -7899,7 +7899,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block227"  :anon :subid("22_1275811482.3686") :outer("21_1275811482.3686")
+.sub "_block227"  :anon :subid("22_1276996315.25554") :outer("21_1276996315.25554")
     .param pmc param_229
 .annotate 'line', 556
     .lex "$_", param_229
@@ -7939,7 +7939,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block255"  :anon :subid("23_1275811482.3686") :outer("21_1275811482.3686")
+.sub "_block255"  :anon :subid("23_1276996315.25554") :outer("21_1276996315.25554")
     .param pmc param_257
 .annotate 'line', 561
     .lex "$_", param_257
@@ -7980,9 +7980,9 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "_block173"  :anon :subid("19_1275811482.3686") :outer("13_1275811482.3686")
+.sub "_block173"  :anon :subid("19_1276996315.25554") :outer("13_1276996315.25554")
 .annotate 'line', 536
-    .const 'Sub' $P192 = "20_1275811482.3686" 
+    .const 'Sub' $P192 = "20_1276996315.25554" 
     capture_lex $P192
 .annotate 'line', 537
     new $P175, "Undef"
@@ -8025,7 +8025,7 @@
     unless $P187, loop208_done
     shift $P190, $P187
   loop208_redo:
-    .const 'Sub' $P192 = "20_1275811482.3686" 
+    .const 'Sub' $P192 = "20_1276996315.25554" 
     capture_lex $P192
     $P192($P190)
   loop208_next:
@@ -8045,7 +8045,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block191"  :anon :subid("20_1275811482.3686") :outer("19_1275811482.3686")
+.sub "_block191"  :anon :subid("20_1276996315.25554") :outer("19_1276996315.25554")
     .param pmc param_193
 .annotate 'line', 544
     .lex "$_", param_193
@@ -8086,10 +8086,10 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "_block131"  :anon :subid("17_1275811482.3686") :outer("13_1275811482.3686")
+.sub "_block131"  :anon :subid("17_1276996315.25554") :outer("13_1276996315.25554")
     .param pmc param_134
 .annotate 'line', 528
-    .const 'Sub' $P143 = "18_1275811482.3686" 
+    .const 'Sub' $P143 = "18_1276996315.25554" 
     capture_lex $P143
 .annotate 'line', 529
     $P133 = root_new ['parrot';'Hash']
@@ -8112,7 +8112,7 @@
     unless $P138, loop156_done
     shift $P141, $P138
   loop156_redo:
-    .const 'Sub' $P143 = "18_1275811482.3686" 
+    .const 'Sub' $P143 = "18_1276996315.25554" 
     capture_lex $P143
     $P143($P141)
   loop156_next:
@@ -8142,7 +8142,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block142"  :anon :subid("18_1275811482.3686") :outer("17_1275811482.3686")
+.sub "_block142"  :anon :subid("18_1276996315.25554") :outer("17_1276996315.25554")
     .param pmc param_144
 .annotate 'line', 530
     .lex "$_", param_144
@@ -8183,9 +8183,9 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "_block64"  :anon :subid("14_1275811482.3686") :outer("13_1275811482.3686")
+.sub "_block64"  :anon :subid("14_1276996315.25554") :outer("13_1276996315.25554")
 .annotate 'line', 514
-    .const 'Sub' $P74 = "15_1275811482.3686" 
+    .const 'Sub' $P74 = "15_1276996315.25554" 
     capture_lex $P74
 .annotate 'line', 515
     new $P66, "Undef"
@@ -8206,7 +8206,7 @@
     unless $P68, loop118_done
     shift $P72, $P68
   loop118_redo:
-    .const 'Sub' $P74 = "15_1275811482.3686" 
+    .const 'Sub' $P74 = "15_1276996315.25554" 
     capture_lex $P74
     $P74($P72)
   loop118_next:
@@ -8230,10 +8230,10 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "_block73"  :anon :subid("15_1275811482.3686") :outer("14_1275811482.3686")
+.sub "_block73"  :anon :subid("15_1276996315.25554") :outer("14_1276996315.25554")
     .param pmc param_76
 .annotate 'line', 516
-    .const 'Sub' $P85 = "16_1275811482.3686" 
+    .const 'Sub' $P85 = "16_1276996315.25554" 
     capture_lex $P85
 .annotate 'line', 517
     $P75 = root_new ['parrot';'Hash']
@@ -8256,7 +8256,7 @@
     unless $P80, loop105_done
     shift $P83, $P80
   loop105_redo:
-    .const 'Sub' $P85 = "16_1275811482.3686" 
+    .const 'Sub' $P85 = "16_1276996315.25554" 
     capture_lex $P85
     $P85($P83)
   loop105_next:
@@ -8305,7 +8305,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block84"  :anon :subid("16_1275811482.3686") :outer("15_1275811482.3686")
+.sub "_block84"  :anon :subid("16_1276996315.25554") :outer("15_1276996315.25554")
     .param pmc param_86
 .annotate 'line', 518
     .lex "$_", param_86
@@ -8365,7 +8365,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backmod"  :subid("26_1275811482.3686") :outer("11_1275811482.3686")
+.sub "backmod"  :subid("26_1276996315.25554") :outer("11_1276996315.25554")
     .param pmc param_308
     .param pmc param_309
 .annotate 'line', 577
@@ -8440,7 +8440,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "subrule_alias"  :subid("27_1275811482.3686") :outer("11_1275811482.3686")
+.sub "subrule_alias"  :subid("27_1276996315.25554") :outer("11_1276996315.25554")
     .param pmc param_341
     .param pmc param_342
 .annotate 'line', 584
@@ -8485,7 +8485,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "arg"  :subid("28_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "arg"  :subid("28_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_363
 .annotate 'line', 14
     new $P362, 'ExceptionHandler'
@@ -8542,10 +8542,10 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "arglist"  :subid("29_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "arglist"  :subid("29_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_380
 .annotate 'line', 18
-    .const 'Sub' $P390 = "30_1275811482.3686" 
+    .const 'Sub' $P390 = "30_1276996315.25554" 
     capture_lex $P390
     new $P379, 'ExceptionHandler'
     set_addr $P379, control_378
@@ -8579,7 +8579,7 @@
     unless $P384, loop396_done
     shift $P388, $P384
   loop396_redo:
-    .const 'Sub' $P390 = "30_1275811482.3686" 
+    .const 'Sub' $P390 = "30_1276996315.25554" 
     capture_lex $P390
     $P390($P388)
   loop396_next:
@@ -8608,7 +8608,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block389"  :anon :subid("30_1275811482.3686") :outer("29_1275811482.3686")
+.sub "_block389"  :anon :subid("30_1276996315.25554") :outer("29_1276996315.25554")
     .param pmc param_391
 .annotate 'line', 20
     .lex "$_", param_391
@@ -8622,7 +8622,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "TOP"  :subid("31_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "TOP"  :subid("31_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_406
 .annotate 'line', 24
     new $P405, 'ExceptionHandler'
@@ -8665,14 +8665,14 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "nibbler"  :subid("32_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "nibbler"  :subid("32_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_421
     .param pmc param_422 :optional
     .param int has_param_422 :opt_flag
 .annotate 'line', 30
-    .const 'Sub' $P456 = "34_1275811482.3686" 
+    .const 'Sub' $P456 = "34_1276996315.25554" 
     capture_lex $P456
-    .const 'Sub' $P430 = "33_1275811482.3686" 
+    .const 'Sub' $P430 = "33_1276996315.25554" 
     capture_lex $P430
     new $P420, 'ExceptionHandler'
     set_addr $P420, control_419
@@ -8693,7 +8693,7 @@
     set $S427, $P426
     iseq $I428, $S427, "open"
     unless $I428, if_425_end
-    .const 'Sub' $P430 = "33_1275811482.3686" 
+    .const 'Sub' $P430 = "33_1276996315.25554" 
     capture_lex $P430
     $P430()
   if_425_end:
@@ -8756,7 +8756,7 @@
     unless $P450, loop462_done
     shift $P454, $P450
   loop462_redo:
-    .const 'Sub' $P456 = "34_1275811482.3686" 
+    .const 'Sub' $P456 = "34_1276996315.25554" 
     capture_lex $P456
     $P456($P454)
   loop462_next:
@@ -8787,7 +8787,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "_block429"  :anon :subid("33_1275811482.3686") :outer("32_1275811482.3686")
+.sub "_block429"  :anon :subid("33_1276996315.25554") :outer("32_1276996315.25554")
 .annotate 'line', 32
     $P431 = root_new ['parrot';'Hash']
     .lex "%old", $P431
@@ -8827,7 +8827,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block455"  :anon :subid("34_1275811482.3686") :outer("32_1275811482.3686")
+.sub "_block455"  :anon :subid("34_1276996315.25554") :outer("32_1276996315.25554")
     .param pmc param_457
 .annotate 'line', 45
     .lex "$_", param_457
@@ -8843,10 +8843,10 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "termish"  :subid("35_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "termish"  :subid("35_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_476
 .annotate 'line', 55
-    .const 'Sub' $P489 = "36_1275811482.3686" 
+    .const 'Sub' $P489 = "36_1276996315.25554" 
     capture_lex $P489
     new $P475, 'ExceptionHandler'
     set_addr $P475, control_474
@@ -8889,7 +8889,7 @@
     unless $P483, loop534_done
     shift $P487, $P483
   loop534_redo:
-    .const 'Sub' $P489 = "36_1275811482.3686" 
+    .const 'Sub' $P489 = "36_1276996315.25554" 
     capture_lex $P489
     $P489($P487)
   loop534_next:
@@ -8918,7 +8918,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block488"  :anon :subid("36_1275811482.3686") :outer("35_1275811482.3686")
+.sub "_block488"  :anon :subid("36_1276996315.25554") :outer("35_1276996315.25554")
     .param pmc param_491
 .annotate 'line', 59
     new $P490, "Undef"
@@ -9046,10 +9046,10 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "quantified_atom"  :subid("37_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "quantified_atom"  :subid("37_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_544
 .annotate 'line', 76
-    .const 'Sub' $P553 = "38_1275811482.3686" 
+    .const 'Sub' $P553 = "38_1276996315.25554" 
     capture_lex $P553
     new $P543, 'ExceptionHandler'
     set_addr $P543, control_542
@@ -9112,7 +9112,7 @@
     goto if_549_end
   if_549:
 .annotate 'line', 78
-    .const 'Sub' $P553 = "38_1275811482.3686" 
+    .const 'Sub' $P553 = "38_1276996315.25554" 
     capture_lex $P553
     $P553()
   if_549_end:
@@ -9166,7 +9166,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block552"  :anon :subid("38_1275811482.3686") :outer("37_1275811482.3686")
+.sub "_block552"  :anon :subid("38_1276996315.25554") :outer("37_1276996315.25554")
 .annotate 'line', 80
     new $P554, "Undef"
     .lex "$qast", $P554
@@ -9207,7 +9207,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "atom"  :subid("39_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "atom"  :subid("39_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_595
 .annotate 'line', 91
     new $P594, 'ExceptionHandler'
@@ -9286,7 +9286,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "quantifier:sym<*>"  :subid("40_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "quantifier:sym<*>"  :subid("40_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_621
 .annotate 'line', 101
     new $P620, 'ExceptionHandler'
@@ -9327,7 +9327,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "quantifier:sym<+>"  :subid("41_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "quantifier:sym<+>"  :subid("41_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_636
 .annotate 'line', 106
     new $P635, 'ExceptionHandler'
@@ -9368,7 +9368,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "quantifier:sym<?>"  :subid("42_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "quantifier:sym<?>"  :subid("42_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_651
 .annotate 'line', 111
     new $P650, 'ExceptionHandler'
@@ -9413,10 +9413,10 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "quantifier:sym<**>"  :subid("43_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "quantifier:sym<**>"  :subid("43_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_668
 .annotate 'line', 117
-    .const 'Sub' $P683 = "44_1275811482.3686" 
+    .const 'Sub' $P683 = "44_1276996315.25554" 
     capture_lex $P683
     new $P667, 'ExceptionHandler'
     set_addr $P667, control_666
@@ -9554,7 +9554,7 @@
     goto if_679_end
   if_679:
 .annotate 'line', 120
-    .const 'Sub' $P683 = "44_1275811482.3686" 
+    .const 'Sub' $P683 = "44_1276996315.25554" 
     capture_lex $P683
     $P683()
   if_679_end:
@@ -9582,7 +9582,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block682"  :anon :subid("44_1275811482.3686") :outer("43_1275811482.3686")
+.sub "_block682"  :anon :subid("44_1276996315.25554") :outer("43_1276996315.25554")
 .annotate 'line', 121
     new $P684, "Undef"
     .lex "$ast", $P684
@@ -9625,7 +9625,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<ws>"  :subid("45_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "metachar:sym<ws>"  :subid("45_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_741
 .annotate 'line', 146
     new $P740, 'ExceptionHandler'
@@ -9678,7 +9678,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<[ ]>"  :subid("46_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "metachar:sym<[ ]>"  :subid("46_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_759
 .annotate 'line', 155
     new $P758, 'ExceptionHandler'
@@ -9711,7 +9711,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<( )>"  :subid("47_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "metachar:sym<( )>"  :subid("47_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_769
 .annotate 'line', 159
     new $P768, 'ExceptionHandler'
@@ -9760,7 +9760,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<'>"  :subid("48_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "metachar:sym<'>"  :subid("48_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_787
 .annotate 'line', 166
     new $P786, 'ExceptionHandler'
@@ -9817,7 +9817,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<\">"  :subid("49_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "metachar:sym<\">"  :subid("49_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_810
 .annotate 'line', 173
     new $P809, 'ExceptionHandler'
@@ -9874,7 +9874,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<.>"  :subid("50_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "metachar:sym<.>"  :subid("50_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_833
 .annotate 'line', 180
     new $P832, 'ExceptionHandler'
@@ -9906,7 +9906,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<^>"  :subid("51_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "metachar:sym<^>"  :subid("51_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_845
 .annotate 'line', 185
     new $P844, 'ExceptionHandler'
@@ -9938,7 +9938,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<^^>"  :subid("52_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "metachar:sym<^^>"  :subid("52_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_857
 .annotate 'line', 190
     new $P856, 'ExceptionHandler'
@@ -9970,7 +9970,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<$>"  :subid("53_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "metachar:sym<$>"  :subid("53_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_869
 .annotate 'line', 195
     new $P868, 'ExceptionHandler'
@@ -10002,7 +10002,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<$$>"  :subid("54_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "metachar:sym<$$>"  :subid("54_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_881
 .annotate 'line', 200
     new $P880, 'ExceptionHandler'
@@ -10034,7 +10034,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<:::>"  :subid("55_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "metachar:sym<:::>"  :subid("55_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_893
 .annotate 'line', 205
     new $P892, 'ExceptionHandler'
@@ -10066,7 +10066,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<lwb>"  :subid("56_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "metachar:sym<lwb>"  :subid("56_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_905
 .annotate 'line', 210
     new $P904, 'ExceptionHandler'
@@ -10098,7 +10098,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<rwb>"  :subid("57_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "metachar:sym<rwb>"  :subid("57_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_917
 .annotate 'line', 215
     new $P916, 'ExceptionHandler'
@@ -10130,7 +10130,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<bs>"  :subid("58_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "metachar:sym<bs>"  :subid("58_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_929
 .annotate 'line', 220
     new $P928, 'ExceptionHandler'
@@ -10163,7 +10163,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<mod>"  :subid("59_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "metachar:sym<mod>"  :subid("59_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_939
 .annotate 'line', 224
     new $P938, 'ExceptionHandler'
@@ -10196,7 +10196,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<assert>"  :subid("60_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "metachar:sym<assert>"  :subid("60_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_949
 .annotate 'line', 228
     new $P948, 'ExceptionHandler'
@@ -10229,7 +10229,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<~>"  :subid("61_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "metachar:sym<~>"  :subid("61_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_959
 .annotate 'line', 232
     new $P958, 'ExceptionHandler'
@@ -10292,7 +10292,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<{*}>"  :subid("62_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "metachar:sym<{*}>"  :subid("62_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_981
 .annotate 'line', 245
     new $P980, 'ExceptionHandler'
@@ -10354,7 +10354,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<var>"  :subid("63_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "metachar:sym<var>"  :subid("63_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_1002
 .annotate 'line', 252
     new $P1001, 'ExceptionHandler'
@@ -10515,7 +10515,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "metachar:sym<PIR>"  :subid("64_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "metachar:sym<PIR>"  :subid("64_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_1058
 .annotate 'line', 272
     new $P1057, 'ExceptionHandler'
@@ -10555,7 +10555,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<w>"  :subid("65_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "backslash:sym<w>"  :subid("65_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_1073
 .annotate 'line', 280
     new $P1072, 'ExceptionHandler'
@@ -10622,7 +10622,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<b>"  :subid("66_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "backslash:sym<b>"  :subid("66_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_1097
 .annotate 'line', 286
     new $P1096, 'ExceptionHandler'
@@ -10666,7 +10666,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<e>"  :subid("67_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "backslash:sym<e>"  :subid("67_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_1113
 .annotate 'line', 292
     new $P1112, 'ExceptionHandler'
@@ -10710,7 +10710,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<f>"  :subid("68_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "backslash:sym<f>"  :subid("68_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_1129
 .annotate 'line', 298
     new $P1128, 'ExceptionHandler'
@@ -10754,7 +10754,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<h>"  :subid("69_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "backslash:sym<h>"  :subid("69_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_1145
 .annotate 'line', 304
     new $P1144, 'ExceptionHandler'
@@ -10798,7 +10798,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<r>"  :subid("70_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "backslash:sym<r>"  :subid("70_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_1161
 .annotate 'line', 310
     new $P1160, 'ExceptionHandler'
@@ -10842,7 +10842,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<t>"  :subid("71_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "backslash:sym<t>"  :subid("71_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_1177
 .annotate 'line', 316
     new $P1176, 'ExceptionHandler'
@@ -10886,7 +10886,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<v>"  :subid("72_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "backslash:sym<v>"  :subid("72_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_1193
 .annotate 'line', 322
     new $P1192, 'ExceptionHandler'
@@ -10930,7 +10930,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<o>"  :subid("73_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "backslash:sym<o>"  :subid("73_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_1209
 .annotate 'line', 329
     new $P1208, 'ExceptionHandler'
@@ -11014,7 +11014,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<x>"  :subid("74_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "backslash:sym<x>"  :subid("74_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_1240
 .annotate 'line', 338
     new $P1239, 'ExceptionHandler'
@@ -11098,7 +11098,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<c>"  :subid("75_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "backslash:sym<c>"  :subid("75_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_1271
 .annotate 'line', 347
     new $P1270, 'ExceptionHandler'
@@ -11134,7 +11134,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "backslash:sym<misc>"  :subid("76_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "backslash:sym<misc>"  :subid("76_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_1284
 .annotate 'line', 351
     new $P1283, 'ExceptionHandler'
@@ -11168,7 +11168,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "assertion:sym<?>"  :subid("77_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "assertion:sym<?>"  :subid("77_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_1298
 .annotate 'line', 357
     new $P1297, 'ExceptionHandler'
@@ -11229,7 +11229,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "assertion:sym<!>"  :subid("78_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "assertion:sym<!>"  :subid("78_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_1316
 .annotate 'line', 367
     new $P1315, 'ExceptionHandler'
@@ -11298,7 +11298,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "assertion:sym<method>"  :subid("79_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "assertion:sym<method>"  :subid("79_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_1340
 .annotate 'line', 380
     new $P1339, 'ExceptionHandler'
@@ -11342,12 +11342,12 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "assertion:sym<name>"  :subid("80_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "assertion:sym<name>"  :subid("80_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_1354
 .annotate 'line', 387
-    .const 'Sub' $P1412 = "82_1275811482.3686" 
+    .const 'Sub' $P1412 = "82_1276996315.25554" 
     capture_lex $P1412
-    .const 'Sub' $P1376 = "81_1275811482.3686" 
+    .const 'Sub' $P1376 = "81_1276996315.25554" 
     capture_lex $P1376
     new $P1353, 'ExceptionHandler'
     set_addr $P1353, control_1352
@@ -11443,7 +11443,7 @@
     unless $P1403, loop1417_done
     shift $P1410, $P1403
   loop1417_redo:
-    .const 'Sub' $P1412 = "82_1275811482.3686" 
+    .const 'Sub' $P1412 = "82_1276996315.25554" 
     capture_lex $P1412
     $P1412($P1410)
   loop1417_next:
@@ -11483,7 +11483,7 @@
     goto if_1371_end
   if_1371:
 .annotate 'line', 394
-    .const 'Sub' $P1376 = "81_1275811482.3686" 
+    .const 'Sub' $P1376 = "81_1276996315.25554" 
     capture_lex $P1376
     $P1376()
   if_1371_end:
@@ -11524,7 +11524,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1411"  :anon :subid("82_1275811482.3686") :outer("80_1275811482.3686")
+.sub "_block1411"  :anon :subid("82_1276996315.25554") :outer("80_1276996315.25554")
     .param pmc param_1413
 .annotate 'line', 416
     .lex "$_", param_1413
@@ -11536,7 +11536,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1375"  :anon :subid("81_1275811482.3686") :outer("80_1275811482.3686")
+.sub "_block1375"  :anon :subid("81_1276996315.25554") :outer("80_1276996315.25554")
 .annotate 'line', 395
     new $P1377, "Undef"
     .lex "$regexsym", $P1377
@@ -11568,10 +11568,10 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "assertion:sym<[>"  :subid("83_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "assertion:sym<[>"  :subid("83_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_1427
 .annotate 'line', 422
-    .const 'Sub' $P1462 = "84_1275811482.3686" 
+    .const 'Sub' $P1462 = "84_1276996315.25554" 
     capture_lex $P1462
     new $P1426, 'ExceptionHandler'
     set_addr $P1426, control_1425
@@ -11663,7 +11663,7 @@
     islt $I1460, $N1457, $N1459
     unless $I1460, loop1485_done
   loop1485_redo:
-    .const 'Sub' $P1462 = "84_1275811482.3686" 
+    .const 'Sub' $P1462 = "84_1276996315.25554" 
     capture_lex $P1462
     $P1462()
   loop1485_next:
@@ -11691,7 +11691,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1461"  :anon :subid("84_1275811482.3686") :outer("83_1275811482.3686")
+.sub "_block1461"  :anon :subid("84_1276996315.25554") :outer("83_1276996315.25554")
 .annotate 'line', 436
     new $P1463, "Undef"
     .lex "$ast", $P1463
@@ -11743,12 +11743,12 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "cclass_elem"  :subid("85_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "cclass_elem"  :subid("85_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_1495
 .annotate 'line', 449
-    .const 'Sub' $P1520 = "87_1275811482.3686" 
+    .const 'Sub' $P1520 = "87_1276996315.25554" 
     capture_lex $P1520
-    .const 'Sub' $P1504 = "86_1275811482.3686" 
+    .const 'Sub' $P1504 = "86_1276996315.25554" 
     capture_lex $P1504
     new $P1494, 'ExceptionHandler'
     set_addr $P1494, control_1493
@@ -11797,7 +11797,7 @@
     unless $P1514, loop1545_done
     shift $P1518, $P1514
   loop1545_redo:
-    .const 'Sub' $P1520 = "87_1275811482.3686" 
+    .const 'Sub' $P1520 = "87_1276996315.25554" 
     capture_lex $P1520
     $P1520($P1518)
   loop1545_next:
@@ -11821,7 +11821,7 @@
     goto if_1500_end
   if_1500:
 .annotate 'line', 452
-    .const 'Sub' $P1504 = "86_1275811482.3686" 
+    .const 'Sub' $P1504 = "86_1276996315.25554" 
     capture_lex $P1504
     $P1504()
   if_1500_end:
@@ -11853,10 +11853,10 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1519"  :anon :subid("87_1275811482.3686") :outer("85_1275811482.3686")
+.sub "_block1519"  :anon :subid("87_1276996315.25554") :outer("85_1276996315.25554")
     .param pmc param_1521
 .annotate 'line', 456
-    .const 'Sub' $P1527 = "88_1275811482.3686" 
+    .const 'Sub' $P1527 = "88_1276996315.25554" 
     capture_lex $P1527
     .lex "$_", param_1521
 .annotate 'line', 457
@@ -11885,7 +11885,7 @@
 .annotate 'line', 457
     goto if_1523_end
   if_1523:
-    .const 'Sub' $P1527 = "88_1275811482.3686" 
+    .const 'Sub' $P1527 = "88_1276996315.25554" 
     capture_lex $P1527
     $P1540 = $P1527()
     set $P1522, $P1540
@@ -11896,7 +11896,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1526"  :anon :subid("88_1275811482.3686") :outer("87_1275811482.3686")
+.sub "_block1526"  :anon :subid("88_1276996315.25554") :outer("87_1276996315.25554")
 .annotate 'line', 458
     new $P1528, "Undef"
     .lex "$a", $P1528
@@ -11960,7 +11960,7 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1503"  :anon :subid("86_1275811482.3686") :outer("85_1275811482.3686")
+.sub "_block1503"  :anon :subid("86_1276996315.25554") :outer("85_1276996315.25554")
 .annotate 'line', 453
     new $P1505, "Undef"
     .lex "$name", $P1505
@@ -11989,7 +11989,7 @@
 
 .namespace ["Regex";"P6Regex";"Actions"]
 .include "except_types.pasm"
-.sub "mod_internal"  :subid("89_1275811482.3686") :method :outer("11_1275811482.3686")
+.sub "mod_internal"  :subid("89_1276996315.25554") :method :outer("11_1276996315.25554")
     .param pmc param_1564
 .annotate 'line', 487
     new $P1563, 'ExceptionHandler'
@@ -12087,18 +12087,18 @@
 
 
 .namespace ["Regex";"P6Regex";"Actions"]
-.sub "_block1594" :load :anon :subid("90_1275811482.3686")
+.sub "_block1594" :load :anon :subid("90_1276996315.25554")
 .annotate 'line', 4
-    .const 'Sub' $P1596 = "11_1275811482.3686" 
+    .const 'Sub' $P1596 = "11_1276996315.25554" 
     $P1597 = $P1596()
     .return ($P1597)
 .end
 
 
 .namespace []
-.sub "_block1600" :load :anon :subid("91_1275811482.3686")
+.sub "_block1600" :load :anon :subid("91_1276996315.25554")
 .annotate 'line', 1
-    .const 'Sub' $P1602 = "10_1275811482.3686" 
+    .const 'Sub' $P1602 = "10_1276996315.25554" 
     $P1603 = $P1602()
     .return ($P1603)
 .end

Modified: branches/gsoc_past_optimization/ext/nqp-rx/src/stage0/nqp-setting.nqp
==============================================================================
--- branches/gsoc_past_optimization/ext/nqp-rx/src/stage0/nqp-setting.nqp	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/ext/nqp-rx/src/stage0/nqp-setting.nqp	Wed Jun 23 00:34:17 2010	(r47770)
@@ -210,11 +210,11 @@
 
 =begin item slurp
 Returns the contents of C<$filename> as a single string.
-=end
+=end item
 
 our sub slurp ($filename) {
-    my $handle := FileHandle.new();
-    $handle.open($file, 'r');
+    my $handle := pir::new__Ps('FileHandle');
+    $handle.open($filename, 'r');
     my $contents := $handle.readall;
     $handle.close();
     $contents;
@@ -226,7 +226,7 @@
 =end item
 
 our sub spew($filename, $contents) {
-    my $handle := FileHandle.new();
+    my $handle := pir::new__Ps('FileHandle');
     $handle.open($filename, 'w');
     $handle.print($contents);
     $handle.close();

Deleted: branches/gsoc_past_optimization/include/parrot/global.h
==============================================================================
--- branches/gsoc_past_optimization/include/parrot/global.h	Wed Jun 23 00:34:17 2010	(r47769)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,204 +0,0 @@
-/* global.h
- *  Copyright (C) 2004, Parrot Foundation.
- *  SVN Info
- *     $Id$
- *  Overview:
- *      Contains accessor functions for globals
- *  Data Structure and Algorithms:
- *  History:
- *  Notes:
- *  References:
- */
-
-#ifndef PARROT_GLOBAL_H_GUARD
-#define PARROT_GLOBAL_H_GUARD
-
-/* HEADERIZER BEGIN: src/global.c */
-/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC * Parrot_find_global_cur(PARROT_INTERP,
-    ARGIN_NULLOK(STRING *globalname))
-        __attribute__nonnull__(1);
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC * Parrot_find_global_n(PARROT_INTERP,
-    ARGIN_NULLOK(PMC *ns),
-    ARGIN_NULLOK(STRING *globalname))
-        __attribute__nonnull__(1);
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-PMC * Parrot_find_global_op(PARROT_INTERP,
-    ARGIN(PMC *ns),
-    ARGIN_NULLOK(STRING *globalname),
-    ARGIN_NULLOK(void *next))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC * Parrot_find_global_s(PARROT_INTERP,
-    ARGIN_NULLOK(STRING *str_key),
-    ARGIN_NULLOK(STRING *globalname))
-        __attribute__nonnull__(1);
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC * Parrot_find_name_op(PARROT_INTERP,
-    ARGIN(STRING *name),
-    SHIM(void *next))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC * Parrot_get_global(PARROT_INTERP,
-    ARGIN_NULLOK(PMC *ns),
-    ARGIN_NULLOK(STRING *globalname))
-        __attribute__nonnull__(1);
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC * Parrot_get_namespace_keyed(PARROT_INTERP,
-    ARGIN(PMC *base_ns),
-    ARGIN(PMC *pmc_key))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3);
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC * Parrot_get_namespace_keyed_str(PARROT_INTERP,
-    ARGIN(PMC *base_ns),
-    ARGIN_NULLOK(STRING *str_key))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC * Parrot_make_namespace_autobase(PARROT_INTERP, ARGIN_NULLOK(PMC *key))
-        __attribute__nonnull__(1);
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC * Parrot_make_namespace_keyed(PARROT_INTERP,
-    ARGIN(PMC *base_ns),
-    ARGIN(PMC *pmc_key))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3);
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC * Parrot_make_namespace_keyed_str(PARROT_INTERP,
-    ARGIN(PMC *base_ns),
-    ARGIN(STRING *str_key))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3);
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC * Parrot_ns_get_name(PARROT_INTERP, ARGIN(PMC *_namespace))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-PARROT_EXPORT
-void Parrot_set_global(PARROT_INTERP,
-    ARGIN_NULLOK(PMC *ns),
-    ARGIN_NULLOK(STRING *globalname),
-    ARGIN_NULLOK(PMC *val))
-        __attribute__nonnull__(1);
-
-PARROT_EXPORT
-void Parrot_store_global_n(PARROT_INTERP,
-    ARGIN_NULLOK(PMC *ns),
-    ARGIN_NULLOK(STRING *globalname),
-    ARGIN_NULLOK(PMC *val))
-        __attribute__nonnull__(1);
-
-PARROT_EXPORT
-void Parrot_store_global_s(PARROT_INTERP,
-    ARGIN_NULLOK(STRING *str_key),
-    ARGIN_NULLOK(STRING *globalname),
-    ARGIN_NULLOK(PMC *val))
-        __attribute__nonnull__(1);
-
-PARROT_EXPORT
-void Parrot_store_sub_in_namespace(PARROT_INTERP, ARGIN(PMC *sub_pmc))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-#define ASSERT_ARGS_Parrot_find_global_cur __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_find_global_n __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_find_global_op __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(ns))
-#define ASSERT_ARGS_Parrot_find_global_s __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_find_name_op __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(name))
-#define ASSERT_ARGS_Parrot_get_global __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_get_namespace_keyed __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(base_ns) \
-    , PARROT_ASSERT_ARG(pmc_key))
-#define ASSERT_ARGS_Parrot_get_namespace_keyed_str \
-     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(base_ns))
-#define ASSERT_ARGS_Parrot_make_namespace_autobase \
-     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_make_namespace_keyed __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(base_ns) \
-    , PARROT_ASSERT_ARG(pmc_key))
-#define ASSERT_ARGS_Parrot_make_namespace_keyed_str \
-     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(base_ns) \
-    , PARROT_ASSERT_ARG(str_key))
-#define ASSERT_ARGS_Parrot_ns_get_name __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(_namespace))
-#define ASSERT_ARGS_Parrot_set_global __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_store_global_n __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_store_global_s __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_Parrot_store_sub_in_namespace __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(sub_pmc))
-/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
-/* HEADERIZER END: src/global.c */
-
-#endif /* PARROT_GLOBAL_H_GUARD */
-
-/*
- * Local variables:
- *   c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */
-

Modified: branches/gsoc_past_optimization/include/parrot/interpreter.h
==============================================================================
--- branches/gsoc_past_optimization/include/parrot/interpreter.h	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/include/parrot/interpreter.h	Wed Jun 23 00:34:17 2010	(r47770)
@@ -24,7 +24,7 @@
 
     PARROT_IS_THREAD        = 0x1000, /* interpreter is a thread */
     PARROT_THR_COPY_INTERP  = 0x2000, /* thread start copies interp state */
-    PARROT_THR_THREAD_POOL  = 0x4000, /* type3 threads */
+    PARROT_THR_THREAD_POOL  = 0x4000  /* type3 threads */
 
 } Parrot_Interp_flag;
 /* &end_gen */

Modified: branches/gsoc_past_optimization/include/parrot/key.h
==============================================================================
--- branches/gsoc_past_optimization/include/parrot/key.h	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/include/parrot/key.h	Wed Jun 23 00:34:17 2010	(r47770)
@@ -88,13 +88,6 @@
 PARROT_EXPORT
 PARROT_CANNOT_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
-PMC * key_new_pmc(PARROT_INTERP, ARGIN(PMC *value))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
 PMC * key_new_string(PARROT_INTERP, ARGIN(STRING *value))
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
@@ -132,13 +125,6 @@
         FUNC_MODIFIES(*key);
 
 PARROT_EXPORT
-void key_set_pmc(PARROT_INTERP, ARGMOD(PMC *key), ARGIN(PMC *value))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        FUNC_MODIFIES(*key);
-
-PARROT_EXPORT
 void key_set_register(PARROT_INTERP,
     ARGMOD(PMC *key),
     INTVAL value,
@@ -190,9 +176,6 @@
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_key_new_number __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
-#define ASSERT_ARGS_key_new_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(value))
 #define ASSERT_ARGS_key_new_string __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(value))
@@ -211,10 +194,6 @@
 #define ASSERT_ARGS_key_set_number __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(key))
-#define ASSERT_ARGS_key_set_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(key) \
-    , PARROT_ASSERT_ARG(value))
 #define ASSERT_ARGS_key_set_register __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(key))

Copied: branches/gsoc_past_optimization/include/parrot/namespace.h (from r47769, trunk/include/parrot/namespace.h)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_past_optimization/include/parrot/namespace.h	Wed Jun 23 00:34:17 2010	(r47770, copy of r47769, trunk/include/parrot/namespace.h)
@@ -0,0 +1,208 @@
+/* namespace.h
+ *  Copyright (C) 2004-2010, Parrot Foundation.
+ *  SVN Info
+ *     $Id$
+ *  Overview:
+ *      Contains accessor functions for globals
+ *  Data Structure and Algorithms:
+ *  History:
+ *  Notes:
+ *  References:
+ */
+
+#ifndef PARROT_GLOBAL_H_GUARD
+#define PARROT_GLOBAL_H_GUARD
+
+/* HEADERIZER BEGIN: src/namespace.c */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC * Parrot_find_global_s(PARROT_INTERP,
+    ARGIN_NULLOK(STRING *str_key),
+    ARGIN_NULLOK(STRING *globalname))
+        __attribute__nonnull__(1);
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC * Parrot_ns_find_current_namespace_global(PARROT_INTERP,
+    ARGIN_NULLOK(STRING *globalname))
+        __attribute__nonnull__(1);
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+PMC * Parrot_ns_find_global_from_op(PARROT_INTERP,
+    ARGIN(PMC *ns),
+    ARGIN_NULLOK(STRING *globalname),
+    ARGIN_NULLOK(void *next))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC * Parrot_ns_find_named_item(PARROT_INTERP,
+    ARGIN(STRING *name),
+    SHIM(void *next))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC * Parrot_ns_find_namespace_global(PARROT_INTERP,
+    ARGIN_NULLOK(PMC *ns),
+    ARGIN_NULLOK(STRING *globalname))
+        __attribute__nonnull__(1);
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC * Parrot_ns_get_global(PARROT_INTERP,
+    ARGIN_NULLOK(PMC *ns),
+    ARGIN_NULLOK(STRING *globalname))
+        __attribute__nonnull__(1);
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC * Parrot_ns_get_name(PARROT_INTERP, ARGIN(PMC *_namespace))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC * Parrot_ns_get_namespace_keyed(PARROT_INTERP,
+    ARGIN(PMC *base_ns),
+    ARGIN(PMC *pmc_key))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC * Parrot_ns_get_namespace_keyed_str(PARROT_INTERP,
+    ARGIN(PMC *base_ns),
+    ARGIN_NULLOK(STRING *str_key))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC * Parrot_ns_make_namespace_autobase(PARROT_INTERP,
+    ARGIN_NULLOK(PMC *key))
+        __attribute__nonnull__(1);
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC * Parrot_ns_make_namespace_keyed(PARROT_INTERP,
+    ARGIN(PMC *base_ns),
+    ARGIN(PMC *pmc_key))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC * Parrot_ns_make_namespace_keyed_str(PARROT_INTERP,
+    ARGIN(PMC *base_ns),
+    ARGIN(STRING *str_key))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
+PARROT_EXPORT
+void Parrot_ns_set_global(PARROT_INTERP,
+    ARGIN_NULLOK(PMC *ns),
+    ARGIN_NULLOK(STRING *globalname),
+    ARGIN_NULLOK(PMC *val))
+        __attribute__nonnull__(1);
+
+PARROT_EXPORT
+void Parrot_ns_store_global(PARROT_INTERP,
+    ARGIN_NULLOK(PMC *ns),
+    ARGIN_NULLOK(STRING *globalname),
+    ARGIN_NULLOK(PMC *val))
+        __attribute__nonnull__(1);
+
+PARROT_EXPORT
+void Parrot_ns_store_sub(PARROT_INTERP, ARGIN(PMC *sub_pmc))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_EXPORT
+void Parrot_store_global_s(PARROT_INTERP,
+    ARGIN_NULLOK(STRING *str_key),
+    ARGIN_NULLOK(STRING *globalname),
+    ARGIN_NULLOK(PMC *val))
+        __attribute__nonnull__(1);
+
+#define ASSERT_ARGS_Parrot_find_global_s __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_Parrot_ns_find_current_namespace_global \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_Parrot_ns_find_global_from_op __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(ns))
+#define ASSERT_ARGS_Parrot_ns_find_named_item __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(name))
+#define ASSERT_ARGS_Parrot_ns_find_namespace_global \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_Parrot_ns_get_global __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_Parrot_ns_get_name __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(_namespace))
+#define ASSERT_ARGS_Parrot_ns_get_namespace_keyed __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(base_ns) \
+    , PARROT_ASSERT_ARG(pmc_key))
+#define ASSERT_ARGS_Parrot_ns_get_namespace_keyed_str \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(base_ns))
+#define ASSERT_ARGS_Parrot_ns_make_namespace_autobase \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_Parrot_ns_make_namespace_keyed \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(base_ns) \
+    , PARROT_ASSERT_ARG(pmc_key))
+#define ASSERT_ARGS_Parrot_ns_make_namespace_keyed_str \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(base_ns) \
+    , PARROT_ASSERT_ARG(str_key))
+#define ASSERT_ARGS_Parrot_ns_set_global __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_Parrot_ns_store_global __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp))
+#define ASSERT_ARGS_Parrot_ns_store_sub __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(sub_pmc))
+#define ASSERT_ARGS_Parrot_store_global_s __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/namespace.c */
+
+#endif /* PARROT_GLOBAL_H_GUARD */
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */
+

Modified: branches/gsoc_past_optimization/include/parrot/oplib.h
==============================================================================
--- branches/gsoc_past_optimization/include/parrot/oplib.h	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/include/parrot/oplib.h	Wed Jun 23 00:34:17 2010	(r47770)
@@ -50,7 +50,7 @@
     CORE_OPS_check_events,      /* explicit event check */
     CORE_OPS_check_events__,    /* inserted into op dispatch when an event
                                    got scheduled */
-    CORE_OPS_wrapper__,         /* inserted by dynop_register for new ops */
+    CORE_OPS_wrapper__          /* inserted by dynop_register for new ops */
         /* 2 more reserved */
 } special_core_ops_enum;
 

Modified: branches/gsoc_past_optimization/include/parrot/oplib/core_ops.h
==============================================================================
--- branches/gsoc_past_optimization/include/parrot/oplib/core_ops.h	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/include/parrot/oplib/core_ops.h	Wed Jun 23 00:34:17 2010	(r47770)
@@ -20,7 +20,7 @@
 #include "parrot/oplib.h"
 #include "parrot/runcore_api.h"
 
- op_lib_t *Parrot_DynOp_core_2_4_0(PARROT_INTERP, long init);
+ op_lib_t *Parrot_DynOp_core_2_5_0(PARROT_INTERP, long init);
 
  opcode_t * Parrot_end(opcode_t *, PARROT_INTERP);
  opcode_t * Parrot_noop(opcode_t *, PARROT_INTERP);

Modified: branches/gsoc_past_optimization/include/parrot/packfile.h
==============================================================================
--- branches/gsoc_past_optimization/include/parrot/packfile.h	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/include/parrot/packfile.h	Wed Jun 23 00:34:17 2010	(r47770)
@@ -91,6 +91,42 @@
 #endif
 
 /*
+** Enumerated constants
+** Changes here require update PBC_COMPAT
+** The prefered way to eliminate a value is just to stop using it without
+** renumbering others, that helps to keep backward compatibility.
+*/
+
+/* Packfile segment types */
+
+/* &gen_from_enum(packfile_segments.pasm) */
+
+typedef enum {
+    PF_DIR_SEG          = 0,
+    PF_UNKNOWN_SEG      = 1,
+    PF_FIXUP_SEG        = 2,
+    PF_CONST_SEG        = 3,
+    PF_BYTEC_SEG        = 4,
+    PF_DEBUG_SEG        = 5,
+    PF_ANNOTATIONS_SEG  = 6,
+
+    PF_MAX_SEG          = 7
+} pack_file_types;
+
+/* &end_gen */
+
+#define PF_DIR_FORMAT 1
+
+/* Fixup types */
+
+typedef enum {
+    enum_fixup_none = 0,
+    enum_fixup_sub  = 1,
+    enum_fixup_MAXUSEDVALUE = enum_fixup_sub
+} enum_fixup_t;
+
+
+/*
 ** Structure Definitions:
 */
 
@@ -174,24 +210,6 @@
     PackFile_Segment_dump_func_t        dump;
 } PackFile_funcs;
 
-/* &gen_from_enum(packfile_segments.pasm) */
-
-typedef enum {
-    PF_DIR_SEG          = 0,
-    PF_UNKNOWN_SEG      = 1,
-    PF_FIXUP_SEG        = 2,
-    PF_CONST_SEG        = 3,
-    PF_BYTEC_SEG        = 4,
-    PF_DEBUG_SEG        = 5,
-    PF_ANNOTATIONS_SEG  = 6,
-
-    PF_MAX_SEG          = 7
-} pack_file_types;
-
-/* &end_gen */
-
-#define PF_DIR_FORMAT 1
-
 typedef struct PackFile_Segment {
     struct PackFile           * pf;
     struct PackFile_Directory * dir;
@@ -220,11 +238,6 @@
     opcode_t                  offset;   /* location of the item */
 } PackFile_FixupEntry;
 
-typedef enum {
-    enum_fixup_none,
-    enum_fixup_sub
-} enum_fixup_t;
-
 typedef struct PackFile_FixupTable {
     PackFile_Segment             base;
     opcode_t                     fixup_count;

Modified: branches/gsoc_past_optimization/include/parrot/parrot.h
==============================================================================
--- branches/gsoc_past_optimization/include/parrot/parrot.h	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/include/parrot/parrot.h	Wed Jun 23 00:34:17 2010	(r47770)
@@ -284,7 +284,7 @@
 #include "parrot/vtables.h"
 #include "parrot/multidispatch.h"
 #include "parrot/library.h"
-#include "parrot/global.h"
+#include "parrot/namespace.h"
 #include "parrot/stat.h"
 #include "parrot/hll.h"
 #include "parrot/pbcversion.h"

Modified: branches/gsoc_past_optimization/include/parrot/warnings.h
==============================================================================
--- branches/gsoc_past_optimization/include/parrot/warnings.h	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/include/parrot/warnings.h	Wed Jun 23 00:34:17 2010	(r47770)
@@ -61,12 +61,20 @@
         __attribute__nonnull__(3);
 
 PARROT_EXPORT
+void Parrot_warn_deprecated(PARROT_INTERP, ARGIN(const char *message))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_EXPORT
 void print_pbc_location(PARROT_INTERP)
         __attribute__nonnull__(1);
 
 #define ASSERT_ARGS_Parrot_warn __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(message))
+#define ASSERT_ARGS_Parrot_warn_deprecated __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(message))
 #define ASSERT_ARGS_print_pbc_location __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */

Modified: branches/gsoc_past_optimization/lib/Parrot/Docs/Section/Parrot.pm
==============================================================================
--- branches/gsoc_past_optimization/lib/Parrot/Docs/Section/Parrot.pm	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/lib/Parrot/Docs/Section/Parrot.pm	Wed Jun 23 00:34:17 2010	(r47770)
@@ -31,17 +31,10 @@
 use Parrot::Distribution;
 
 use Parrot::Docs::Section::Developer;
-#use Parrot::Docs::Section::Examples;
 use Parrot::Docs::Section::PMCs;
-#use Parrot::Docs::Section::C;
 use Parrot::Docs::Section::Ops;
-#use Parrot::Docs::Section::IMCC;
-#use Parrot::Docs::Section::Perl;
-#use Parrot::Docs::Section::Libs;
 use Parrot::Docs::Section::Tools;
 use Parrot::Docs::Section::Compilers;
-#use Parrot::Docs::Section::Config;
-#use Parrot::Docs::Section::Tests;
 use Parrot::Docs::Section::PDDs;
 use Parrot::Docs::Section::PCT_Tutorial;
 
@@ -74,7 +67,6 @@
             '',
             $self->new_item( 'Running Parrot', 'docs/running.pod'),
             $self->new_item( 'Testing Parrot', 'docs/tests.pod'),
-#            Parrot::Docs::Section::Examples->new,
             $self->new_item( 'Developer FAQ', 'docs/gettingstarted.pod'),
             $self->new_item( 'Submitting Bug Reports & Patches', 'docs/submissions.pod' ),
         ),
@@ -122,13 +114,6 @@
             $self->new_item( 'Chapter 4 Grammar Engine', 'docs/book/pct/ch04_pge.pod'),
             $self->new_item( 'Chapter 5 Grammar Actions', 'docs/book/pct/ch05_nqp.pod'),
         ),
-
-#        Parrot::Docs::Section::C->new,
-#        Parrot::Docs::Section::IMCC->new,
-#        Parrot::Docs::Section::Perl->new,
-#        Parrot::Docs::Section::Libs->new,
-#        Parrot::Docs::Section::Tests->new,
-#        Parrot::Docs::Section::Config->new,
     );
 }
 
@@ -167,38 +152,6 @@
 
 =back
 
-=head1 SEE ALSO
-
-=over 4
-
-=item C<Parrot::Docs::Section::Info>
-
-=item C<Parrot::Docs::Section::Docs>
-
-=item C<Parrot::Docs::Section::Examples>
-
-=item C<Parrot::Docs::Section::PMCs>
-
-=item C<Parrot::Docs::Section::C>
-
-=item C<Parrot::Docs::Section::Ops>
-
-=item C<Parrot::Docs::Section::IMCC>
-
-=item C<Parrot::Docs::Section::Perl>
-
-=item C<Parrot::Docs::Section::Libs>
-
-=item C<Parrot::Docs::Section::Tools>
-
-=item C<Parrot::Docs::Section::Compilers>
-
-=item C<Parrot::Docs::Section::Config>
-
-=item C<Parrot::Docs::Section::Tests>
-
-=back
-
 =cut
 
 1;

Modified: branches/gsoc_past_optimization/lib/Parrot/Harness/DefaultTests.pm
==============================================================================
--- branches/gsoc_past_optimization/lib/Parrot/Harness/DefaultTests.pm	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/lib/Parrot/Harness/DefaultTests.pm	Wed Jun 23 00:34:17 2010	(r47770)
@@ -64,6 +64,7 @@
     t/op/*.t
     t/pmc/*.t
     t/oo/*.t
+    t/pir/*.t
     t/native_pbc/*.t
 );
 

Modified: branches/gsoc_past_optimization/lib/Parrot/Pmc2c/PMCEmitter.pm
==============================================================================
--- branches/gsoc_past_optimization/lib/Parrot/Pmc2c/PMCEmitter.pm	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/lib/Parrot/Pmc2c/PMCEmitter.pm	Wed Jun 23 00:34:17 2010	(r47770)
@@ -506,8 +506,6 @@
     my $multi_list_size = @multi_list;
     my $multi_list = join( "\n", @multi_list);
 
-    my @isa = grep { $_ ne 'default' } @{ $self->parents };
-
     my $provides        = join( " ", keys( %{ $self->{flags}{provides} } ) );
     my $class_init_code = "";
 
@@ -586,17 +584,9 @@
 EOC
     }
 
-    if (@isa) {
-        unshift @isa, $classname;
-        $cout .= <<"EOC";
+    $cout .= <<"EOC";
         vt->isa_hash     = Parrot_${classname}_get_isa(interp, NULL);
 EOC
-    }
-    else {
-        $cout .= <<"EOC";
-        vt->isa_hash     = NULL;
-EOC
-    }
 
     for my $k ( keys %extra_vt ) {
         my $k_flags = $self->$k->vtable_flags;
@@ -874,10 +864,19 @@
 PARROT_CANNOT_RETURN_NULL
 PARROT_WARN_UNUSED_RESULT
 Hash* Parrot_${classname}_get_isa(PARROT_INTERP, Hash* isa) {
+EOC
+
+    if ($get_isa ne '') {
+        $cout .= $get_isa;
+    }
+    else {
+        $cout .= <<"EOC";
     if (isa == NULL) {
         isa = parrot_new_hash(interp);
     }
-$get_isa
+EOC
+    }
+    $cout .= <<"EOC";
     parrot_hash_put(interp, isa, (void *)(CONST_STRING_GEN(interp, "$classname")), PMCNULL);
     return isa;
 }

Modified: branches/gsoc_past_optimization/ports/cygwin/README
==============================================================================
--- branches/gsoc_past_optimization/ports/cygwin/README	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/ports/cygwin/README	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1,7 +1,7 @@
 parrot
 ----------------------------------
 Parrot is a virtual machine designed to efficiently compile and
-execute bytecode for interpreted languages. Parrot is a target for Perl 6 
+execute bytecode for interpreted languages. Parrot is a target for Perl 6
 and a lot of other languages.
 
 Runtime requirements:
@@ -11,7 +11,7 @@
   w32api pcre libpq5 openssl
 
 Build requirements:
-  readline libncurses-devel libicu-devel libgmp-devel libgdbm-devel perl 
+  readline libncurses-devel libicu-devel libgmp-devel libgdbm-devel perl
   make gcc
 
 Optional build requirements:
@@ -40,7 +40,7 @@
   /usr/src/parrot-devel-<VER>-<REL>.tar.bz2
   /usr/src/parrot-docs-<VER>-<REL>.tar.bz2
 
-Or use 'cygport parrot-<VER>-<REL>.cygport prep' to get a patched 
+Or use 'cygport parrot-<VER>-<REL>.cygport prep' to get a patched
 source directory.
 
 -------------------------------------------------------------------------------
@@ -657,7 +657,6 @@
  /usr/include/parrot/1.0.0/parrot/extend.h
  /usr/include/parrot/1.0.0/parrot/extend_vtable.h
  /usr/include/parrot/1.0.0/parrot/feature.h
- /usr/include/parrot/1.0.0/parrot/global.h
  /usr/include/parrot/1.0.0/parrot/global_setup.h
  /usr/include/parrot/1.0.0/parrot/has_header.h
  /usr/include/parrot/1.0.0/parrot/hash.h
@@ -676,6 +675,7 @@
  /usr/include/parrot/1.0.0/parrot/memory.h
  /usr/include/parrot/1.0.0/parrot/misc.h
  /usr/include/parrot/1.0.0/parrot/mmd.h
+ /usr/include/parrot/1.0.0/parrot/namespace.h
  /usr/include/parrot/1.0.0/parrot/nci.h
  /usr/include/parrot/1.0.0/parrot/oo.h
  /usr/include/parrot/1.0.0/parrot/oo_private.h
@@ -1877,7 +1877,7 @@
 ----- version parrot-1.0.0-1 -----
 * cygwin 1.7, gcc-4.3 only
 * renamed libparrot-devel to parrot-devel
-* removed libparrot1 
+* removed libparrot1
 * new parrot-docs for make html
 * library.c patch to allow library/*.pbc
 * removed pbc_info
@@ -1910,21 +1910,21 @@
 
 ----- version parrot-0.7.0-1 -----
 * removed /usr/runtime and its preremove and postinstall scripts
-* added parrot_exists_check to .cygport. Already installed parrot 
+* added parrot_exists_check to .cygport. Already installed parrot
   still not supported, despite my #39742 patch
 * other minor .cygport improvements: export PATH in seperate lines to fix check
-* new patches: 
+* new patches:
   [perl #39742] [BUG]   installed conflict
   [perl #58034] [TODO]  config_args
   [perl #56996] [TODO]  FHS runtime paths
-* enhanced patch: 
+* enhanced patch:
   [perl #56554] [TODO]  make install -C languages
 * upstream fixed patches:
   [perl #56544] [PATCH] install_files.pl
   [perl #56998] [TODO]  rename cygwin dll to cygparrot$MAJOR_$MINOR_$PATCH.dll
   [perl #57006] [PATCH] add cygwin opengl config quirks
   [perl #57296] [TODO]  make install -C languages
-* fixed pipp, perl6, pheme, tcl installables. added pcbc's to library  
+* fixed pipp, perl6, pheme, tcl installables. added pcbc's to library
 
 ----- version parrot-0.6.4-2 -----
 * fixed invalid parrot languages and perl6 paths referencing the build_dir
@@ -1933,7 +1933,7 @@
 * added myconfig parrotbug VERSION to /usr/lib/parrot
 * moved language dll's to parrot-languages
 * added more sublanguage exe's: bfc, bfco
-* added usr/lib/parrot/include/config.fpmc usr/lib/parrot/include/interpinfo.pasm 
+* added usr/lib/parrot/include/config.fpmc usr/lib/parrot/include/interpinfo.pasm
   to parrot
 
 ----- version parrot-0.6.4-1 -----
@@ -1951,11 +1951,11 @@
      [perl #57114] [PATCH] urm RealBin issue
 
 ----- version parrot-0.6.3-1 -----
-* first port, with the help from #parrot, fedora spec, 
+* first port, with the help from #parrot, fedora spec,
   gentoo ebuild and freebsd ports.
 * the php implementation plumhead is still named plumhead.
   will be renamed to pipp from the next release 0.6.4 on.
 
 Cygwin port maintained by: Reini Urban <rurban at x-ray.at>
-Please address all questions to the Cygwin mailing list 
+Please address all questions to the Cygwin mailing list
 at <cygwin at cygwin.com>

Copied: branches/gsoc_past_optimization/ports/fedora/2.5.0/parrot.desk.in.tar.gz (from r47769, trunk/ports/fedora/2.5.0/parrot.desk.in.tar.gz)
==============================================================================
Binary file (source and/or target). No diff available.

Copied: branches/gsoc_past_optimization/ports/fedora/2.5.0/parrot.patch (from r47769, trunk/ports/fedora/2.5.0/parrot.patch)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_past_optimization/ports/fedora/2.5.0/parrot.patch	Wed Jun 23 00:34:17 2010	(r47770, copy of r47769, trunk/ports/fedora/2.5.0/parrot.patch)
@@ -0,0 +1,19 @@
+--- lib/Parrot/Install.pm	2009-06-01 09:29:57.000000000 +0200
++++ lib/Parrot/Install.pm	2009-06-03 08:41:22.000000000 +0200
+@@ -220,6 +220,16 @@
+         else {
+             next unless -e $src;
+             next if $^O eq 'cygwin' and -e "$src.exe"; # stat works, copy not
++            if (-l $src) { 
++                # check if the system supports symbolic linking 
++                use Config; 
++                if ($Config{d_symlink} && $Config{d_readlink}) { 
++                # copy as symbolic link 
++                    symlink(readlink($src), $dest); 
++                    print "$dest\n"; 
++                    next; 
++                } 
++            } 
+             copy( $src, $dest ) or die "Error: couldn't copy $src to $dest: $!\n";
+             print "$dest\n";
+         }

Copied: branches/gsoc_past_optimization/ports/fedora/2.5.0/parrot.spec (from r47769, trunk/ports/fedora/2.5.0/parrot.spec)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_past_optimization/ports/fedora/2.5.0/parrot.spec	Wed Jun 23 00:34:17 2010	(r47770, copy of r47769, trunk/ports/fedora/2.5.0/parrot.spec)
@@ -0,0 +1,372 @@
+Name:           parrot
+Version:        2.5.0
+Release:        1%{?dist}
+Summary:        a virtual machine
+License:        Artistic 2.0
+Group:          Development/Libraries
+URL:            http://www.parrot.org/
+
+Source0:        ftp://ftp.parrot.org/pub/parrot/releases/devel/%{version}/parrot-%{version}.tar.gz
+Source1:        %{name}.desk.in.tar.gz
+
+Patch0:         parrot.patch
+#
+# see for upstream:       https://trac.parrot.org/parrot/ticket/509
+# patched file:           lib/Parrot/Install.pm
+# is to have the symlink:    libparrot.so  ->  libparrot.so.%{version}
+# Without this %{_libdir}/libparrot.so would not be a symbolic link to
+# %{_libdir}/libparrot.so.%{version}  
+
+BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildRequires:  readline-devel
+BuildRequires:  ncurses-devel
+BuildRequires:  gmp-devel
+BuildRequires:  gdbm-devel
+BuildRequires:  libicu-devel
+BuildRequires:  perl(Test::Harness)
+BuildRequires:  perl(Test::Simple)
+BuildRequires:  ctags
+BuildRequires:  openssl-devel
+BuildRequires:  flex
+BuildRequires:  bison
+# Needed to generate the Parrot PDF book
+BuildRequires:  perl(Pod::PseudoPod::LaTeX), texlive-latex
+# Needed to desktop-file-install usage
+BuildRequires:  desktop-file-utils
+ 
+
+%package docs
+Summary:        Parrot Virtual Machine documentation
+Group:          Documentation
+Requires:       perl(strict)
+Requires:       perl(warnings)
+# Provides the executable in the desktop file (xdg-open)
+Requires:       xdg-utils
+BuildArch:      noarch
+
+#--
+
+%package devel
+Summary:        Parrot Virtual Machine development headers and libraries
+Group:          Development/Libraries
+Requires:       %{name} = %{version}-%{release}
+Requires:       pkgconfig
+
+#--
+
+%package tools
+Summary:        Parrot Virtual Machine development for languages
+Group:          Development/Libraries
+Requires:       %{name} = %{version}-%{release}
+Requires:       perl(Pod::Simple)
+Requires:       perl(File::Which) >= 0.05
+Requires:       perl(Parrot::OpLib::core)
+# It is necessary to have installed the package "perl-Perl-Critic" to install
+# the parrot-tools
+Provides:       perl(Parrot::Pmc2c::MethodEmitter) = %{version}
+Provides:       perl(Parrot::Pmc2c::PCCMETHOD_BITS) = %{version}
+Provides:       perl(Parrot::Pmc2c::PMCEmitter) = %{version}
+Provides:       perl(Parrot::OpLib::core) = %{version}
+
+
+%description
+Parrot is a virtual machine designed to efficiently compile and execute
+bytecode for dynamic languages. Parrot is the target for Rakudo Perl 6,
+as well as variety of other languages.
+
+#--
+
+%description docs
+Documentation in text-, POD- and HTML-format (docs/html-subdirectory) and also
+examples about the Parrot Virtual Machine.
+
+#--
+
+%description devel
+Parrot Virtual Machine development headers and libraries.
+
+#--
+
+%description tools
+Parrot Virtual Machine development files for building languages.
+
+
+%prep
+%setup -q
+%patch0 -p0
+
+
+cat << \EOF > %{name}-prov
+#!/bin/sh
+%{__perl_provides} $* | %{__sed} -e '/perl(A)/d' -e '/perl(B)/d' \
+                            -e '/perl(DB)/d' -e '/perl(Parrot::OpLib::core)/d'
+EOF
+
+%global __perl_provides %{_builddir}/%{name}-%{version}/%{name}-prov
+chmod +x %{__perl_provides}
+
+
+%build
+%ifarch %{ix86} x86_64
+    RPM_OPT_FLAGS="$RPM_OPT_FLAGS -maccumulate-outgoing-args"
+%else
+# The PowerPC-architecture do not build with the '-maccumulate-outgoing-args'
+# option.
+    RPM_OPT_FLAGS="$RPM_OPT_FLAGS"
+%endif
+
+# there are problems in this version with the optimize="-O2" option building on
+# ppc64 and ppc with nqp-rx
+%ifarch ppc64 ppc
+    RPM_OPT_FLAGS=`echo "$RPM_OPT_FLAGS" | %{__perl} -pi -e 's/-O2//'`
+%endif
+
+%{__perl} Configure.pl \
+    --prefix=%{_usr} \
+    --libdir=%{_libdir} \
+    --sysconfdir=%{_sysconfdir} \
+    --infodir=%{_datadir}/info \
+    --mandir=%{_mandir} \
+    --cc="%{__cc}" \
+    --cxx=%{__cxx} \
+    --optimize="$RPM_OPT_FLAGS" \
+    --parrot_is_shared \
+    --disable-rpath \
+    --pkgconfigdir=pkgconfig \
+    --lex=%{_bindir}/flex
+
+# The LD_LIBRARY_PATH hack is needed for "miniparrot"
+# to find his parrot-library in "blib/lib" 
+export LD_LIBRARY_PATH=$( pwd )/blib/lib
+
+# pbc_to_exe would not build if %{_smp_mflags} would used
+make
+make html pdf
+
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+# The LD_LIBRARY_PATH hack is needed for the command "pbc_to_exe parrot-nqp.pbc"
+# to find his parrot-library in "blib/lib" 
+export LD_LIBRARY_PATH=$( pwd )/blib/lib
+
+make install DESTDIR=$RPM_BUILD_ROOT
+
+# Creating man-pages
+%{__install} -d $RPM_BUILD_ROOT%{_mandir}/man1
+for var in 'parrot docs/running.pod' 'parrot_debugger src/parrot_debugger.c' \
+           'pbc_disassemble src/pbc_disassemble.c' 'pbc_dump src/pbc_dump.c' \
+           'pbc_merge src/pbc_merge.c' 'pbc_to_exe tools/dev/pbc_to_exe.pir' \
+           'parrot_config tools/build/parrot_config_c.pl' \
+           'parrot-nqp compilers/nqp/README.pod'
+do
+    MAN_NAME=`echo $var | %{__perl} -na -e 'print $F[0]'`
+    MAN_SOURCE=`echo $var | %{__perl} -na -e 'print $F[1]'`
+    pod2man --section=1 --name=$MAN_NAME $MAN_SOURCE | %{__gzip} -c > $RPM_BUILD_ROOT%{_mandir}/man1/${MAN_NAME}.1.gz
+done
+
+# Drop the docs so rpm can pick them up itself.
+rm -rf $RPM_BUILD_ROOT%{_defaultdocdir}/%{name}
+
+# Force permissions on doc directories.
+find docs examples -type d -exec chmod 755 {} \;
+find docs examples -type f -exec chmod 644 {} \;
+
+
+%define RPM_PAR_LIB_DIR $RPM_BUILD_ROOT%{_libdir}/%{name}/%{version}/
+
+
+# Force permissions on shared versioned libs so they get stripped.
+# The parrot-install-script don't set the permissions right
+# With changed permissions the dependencies will be found
+find %{RPM_PAR_LIB_DIR}dynext -type f -name '*.so' -exec chmod 755 {} \;
+
+# Remove module that should be install instead (perl(File::Which))
+rm -rf %{RPM_PAR_LIB_DIR}tools/lib/File
+
+
+# Added to reduce output errors when using rpmlint
+
+# Force permission on perl-scripts in the "tools" subdirctory
+find %{RPM_PAR_LIB_DIR}tools -type f -name "*.pl" -exec chmod 755 {} \; \
+    -exec %{__sed} -i -e '1 s&#! perl&#!/usr/bin/perl&' {} \;
+# Set path to parrot binary and Force permission
+find %{RPM_PAR_LIB_DIR}tools/dev -type f -name "pbc_to_exe.pir" \
+    -exec %{__sed} -i -e '1 s&#! parrot&#!/usr/bin/parrot&' {} \; \
+    -exec chmod 755 {} \;
+
+# Remove doc-files with zero-length
+find docs/html -type f -size 0 -exec rm -f {} \;
+find docs -wholename 'docs/doc-prep' -type f -size 0 -exec rm -f {} \;
+
+# Set path for installed programs in docs package
+find examples -type f \( -name "*.pir" -o \
+                         -wholename 'examples/shootout/random.pasm' \)  \
+    -exec %{__sed} -i -e '1 s&#!.*\(parrot\)&#!/usr/bin/\1&' {} \;
+
+find examples -type f \( -name '*.pl' -o \
+                         -wholename 'examples/pir/befunge/t/basic.t' -o  \
+                         -path 'examples/languages/*/harness'               \) \
+    -exec %{__sed} -i -e '1 s&#! perl&#!/usr/bin/perl&' {} \;
+find examples -type f -name "*.py" \
+    -exec %{__sed} -i -e '1 s&#! python&#!/usr/bin/python&' {} \;
+find examples -type f -name "*.rb" \
+    -exec %{__sed} -i -e '1 s&#! ruby&#!/usr/bin/ruby&' {} \;
+
+find examples -wholename 'examples/languages/abc/t/01-tests.t' \
+    -exec %{__sed} -i -e '1 s&#!perl&#!/usr/bin/perl&' {} \;
+
+find examples -wholename 'examples/languages/abc/t/harness' \
+    -exec %{__perl} -pi -e 's/\r$//' {} \;
+
+#install desktop file
+%{__mkdir} ${RPM_BUILD_ROOT}%{_datadir}/applications/
+%{__tar} xzf %{SOURCE1} parrot_html.desk.in --to-stdout | %{__sed} "s|@DOCDIR@|%{_docdir}/%{name}-docs-%{version}|g" > ${RPM_BUILD_ROOT}%{_datadir}/applications/parrot_html.desktop
+%{__tar} xzf %{SOURCE1} parrot_pdf.desk.in --to-stdout | %{__sed} "s|@DOCDIR@|%{_docdir}/%{name}-docs-%{version}|g" > ${RPM_BUILD_ROOT}%{_datadir}/applications/parrot_pdf.desktop
+
+desktop-file-install --delete-original --add-category="Documentation"  \
+    --dir=${RPM_BUILD_ROOT}%{_datadir}/applications                    \
+    ${RPM_BUILD_ROOT}%{_datadir}/applications/parrot_html.desktop
+desktop-file-install --delete-original --add-category="Documentation"  \
+    --dir=${RPM_BUILD_ROOT}%{_datadir}/applications                    \
+    ${RPM_BUILD_ROOT}%{_datadir}/applications/parrot_pdf.desktop
+
+
+%check
+# 'make fulltest' is done by default; it take a lot of time
+export LD_LIBRARY_PATH=$( pwd )/blib/lib
+FULL='full'
+%{?_without_fulltest: FULL=''}
+%{?!_without_tests: make ${FULL}test; rm -f docs/doc-prep}
+
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files
+%defattr(-,root,root,-)
+%doc ChangeLog CREDITS NEWS PBC_COMPAT PLATFORMS README
+%doc RESPONSIBLE_PARTIES TODO LICENSE
+%{_bindir}/parrot
+%{_libdir}/parrot/
+%exclude %{_libdir}/parrot/%{version}/tools
+%exclude %{_libdir}/parrot/%{version}/VERSION
+%{_libdir}/libparrot.so.*
+%{_mandir}/man1/parrot.1.gz
+
+%files docs
+%defattr(-,root,root,-)
+%doc docs examples
+%{_datadir}/applications/parrot_html.desktop
+%{_datadir}/applications/parrot_pdf.desktop
+
+%files devel
+%defattr(-,root,root,-)
+%{_bindir}/parrot_config
+%{_bindir}/parrot_debugger
+%{_bindir}/parrot_nci_thunk_gen
+%{_bindir}/parrot-nqp
+%{_bindir}/parrot-prove
+%{_bindir}/pbc_disassemble
+%{_bindir}/pbc_merge
+%{_bindir}/pbc_to_exe
+%{_bindir}/pbc_dump
+%{_bindir}/ops2c
+%{_includedir}/parrot
+%{_libdir}/libparrot.so
+%exclude %{_libdir}/libparrot.a
+%{_libdir}/pkgconfig/*
+%{_mandir}/man1/parrot_config.1.gz
+%{_mandir}/man1/parrot_debugger.1.gz
+%{_mandir}/man1/pbc_disassemble.1.gz
+%{_mandir}/man1/pbc_merge.1.gz
+%{_mandir}/man1/pbc_to_exe.1.gz
+%{_mandir}/man1/pbc_dump.1.gz
+%{_mandir}/man1/parrot-nqp.1.gz
+
+%files tools
+%defattr(-,root,root,-)
+# Files for building languages
+%{_libdir}/parrot/%{version}/tools/*
+%{_libdir}/parrot/%{version}/VERSION
+%{_usr}/src/parrot/*
+
+
+%changelog
+* Fri Jun 18 2010 Gerd Pokorra <gp at zimt.uni-siegen.de> 2.5.0-1
+- updated to 2.5.0
+- add the ops2c binary
+- add the parrot-prove binary
+
+* Tue Apr 20 2010 Gerd Pokorra <gp at zimt.uni-siegen.de> 2.3.0-1
+- add desktop files to access the documentation for reading
+- add the parrot_nci_thunk_gen binary
+
+* Wed Jan 20 2010 Gerd Pokorra <gp at zimt.uni-siegen.de> 2.0.0-1
+- new upstream version
+- add the parrot-nqp binary, with generating of the man-page
+
+* Fri Aug 21 2009 Gerd Pokorra <gp at zimt.uni-siegen.de> 1.5.0-1
+- add man pages
+
+* Sat Aug 1 2009 Gerd Pokorra <gp at zimt.uni-siegen.de> 1.4.0-9
+- include the necessary module Parrot::OpLib::core
+- change the place of header files to /usr/include/parrot/<version>
+- install the files /usr/src/parrot/*
+- add the new disable-rpath configure option
+
+* Wed Mar 25 2009 Gerd Pokorra <gp at zimt.uni-siegen.de> 1.0.0-6
+- add a list of changes from Lubomir Rintel
+- add filtering Provides
+- change requires for docs-subpackage
+- enable test suite
+- change the group of the subpackage "-docs" to Documentation
+- put the main-documentation from the docs-package to the main package
+- LICENSE file added
+- add Provides-lines
+- add patch for the file "tools/dev/install_files.pl"
+- add commands to reduce output of errors when using rpmlint
+- define RPM_PAR_LIB_DIR added
+- add subpackage "tools"
+- exclude tools directory from main-package
+- added make html
+
+* Sun Mar 22 2009 Fabien Georget <fabien.georget at gmail.com> 1.0.0-4
+- add tools
+
+* Sun Mar 22 2009 David Fetter <david at fetter.org> 1.0.0-3
+- Removed wrong prefix from pkgconfig per Christoph Wickert
+
+* Tue Mar 17 2009 Allison Randal <allison at parrot.org> 1.0.0
+- updated to 1.0.0
+
+* Tue Jan 23 2009 Reini Urban <rurban at x-ray.at> 0.9.0
+- added parrot_utils to devel
+
+* Tue Dec 16 2008 Whiteknight <wknight8111 at gmail.com> 0.8.2
+- updated to 0.8.2
+
+* Wed Feb 20 2008 Patrick Michaud <pmichaud at pobox.com> 0.5.3
+- Update to 0.5.3.
+
+* Sat Mar 10 2007 Steven Pritchard <steve at kspei.com> 0.4.9-1
+- Update to 0.4.9.
+- BuildRequires ncurses-devel.
+- For some reason now I need to force -lm too.
+- Remove some files/directories that shouldn't be included.
+- Override lib_dir and make various substitutions to try to fix multilib.
+- Remove rpath use from Makefile.
+- Fix a pod error in src/ops/experimental.ops.
+- Enable "make test" since t/doc/pod.t won't fail now.
+- Force permissions on shared libraries so rpmbuild strips them.
+- Fix URL, description, summary, etc.
+- Add post/postun.
+- Move parrot-config to the devel sub-package.
+- Force permissions on the doc directories.
+- Add -lcurses to get readline detection to work.
+- Add BuildRequires libicu-devel.

Modified: branches/gsoc_past_optimization/runtime/parrot/library/LWP/UserAgent.pir
==============================================================================
--- branches/gsoc_past_optimization/runtime/parrot/library/LWP/UserAgent.pir	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/runtime/parrot/library/LWP/UserAgent.pir	Wed Jun 23 00:34:17 2010	(r47770)
@@ -17,7 +17,6 @@
 =cut
 
 .namespace ['LWP';'UserAgent']
-.loadlib 'io_ops'
 
 .sub '' :init :load :anon
     load_bytecode 'URI.pbc'
@@ -287,17 +286,19 @@
 .sub 'progress' :method
     .param string status
     .param pmc msg
+    .local pmc stderr
+    stderr = getstderr
     $P0 = getattribute self, 'show_progress'
     if null $P0 goto L1
     unless $P0 goto L1
     unless status == 'begin' goto L2
-    printerr "** "
+    print stderr, "** "
     $P0 = getattribute msg, 'method'
-    printerr $P0
-    printerr " "
+    print stderr, $P0
+    print stderr, " "
     $P0 = getattribute msg, 'uri'
-    printerr $P0
-    printerr " ==> "
+    print stderr, $P0
+    print stderr, " ==> "
     $N1 = time
     $P0 = box $N1
     setattribute self, 'progress_start', $P0
@@ -316,15 +317,15 @@
     setattribute self, 'progress_lastp', $P0
     setattribute self, 'progress_ani', $P0
     $S0 = msg.'status_line'()
-    printerr $S0
+    print stderr, $S0
     $N0 =$N2 - $N1
     $I0 = $N0
     unless $I0 goto L4
-    printerr " ("
-    printerr $I0
-    printerr "s)"
+    print stderr, " ("
+    print stderr, $I0
+    print stderr, "s)"
   L4:
-    printerr "\n"
+    print stderr, "\n"
     goto L1
   L3:
     unless status == 'tick' goto L5
@@ -333,8 +334,8 @@
     $P0 %= 4
     $P1 = split '', '-\|/'
     $S0 = $P1[$P0]
-    printerr $S0
-    printerr "\b"
+    print stderr, $S0
+    print stderr, "\b"
     goto L1
   L5:
     $N0 = status
@@ -347,8 +348,8 @@
     $S0 = $P0
     if $S0 == $S1 goto L1
     set $P0, $S1
-    printerr $S1
-    printerr "\b\b\b\b"
+    print stderr, $S1
+    print stderr, "\b\b\b\b"
   L1:
 .end
 

Copied: branches/gsoc_past_optimization/runtime/parrot/library/URI/Escape.pir (from r47769, trunk/runtime/parrot/library/URI/Escape.pir)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_past_optimization/runtime/parrot/library/URI/Escape.pir	Wed Jun 23 00:34:17 2010	(r47770, copy of r47769, trunk/runtime/parrot/library/URI/Escape.pir)
@@ -0,0 +1,155 @@
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+URI/Escape - percent-encoding conversions
+
+=head1 DESCRIPTION
+
+Based on CPAN URL::Escape module.
+
+Sub names in the CPAN module are not used, reserved for eventual
+implementation more compatible.
+
+http://en.wikipedia.org/wiki/Percent_encoding
+
+=cut
+
+.namespace [ 'URI' ; 'Escape' ]
+
+.const string URIcomponentunchange = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~"
+.const string URIunchange          = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~!*\'();:@&=+$,/?#[]"
+
+.const string hexdigits     = '0123456789ABCDEF'
+
+=head1 Subs
+
+=over 4
+
+=item percent_encode_except
+
+$S0 = 'percent_encode_except'(source, except)
+
+Return the percent encoding of the source string preserving the characters
+present in the except string.
+
+=cut
+
+.sub percent_encode_except
+    .param string s
+    .param string except
+
+    .local int asciicharset, utf8enc, scharset, senc
+    asciicharset = find_charset 'ascii'
+    scharset = charset s
+    if scharset == asciicharset goto encodeit
+
+    utf8enc = find_encoding 'utf8'
+    senc = encoding s
+    if utf8enc == senc goto encodeit
+    s = trans_encoding s, utf8enc
+
+  encodeit:
+    .local pmc buf, result, it
+    .local string c
+    .local int code
+    buf = root_new ['parrot';'ByteBuffer']
+    buf = s
+    result = root_new ['parrot';'ByteBuffer']
+    it = iter buf
+  nextbuf:
+    unless it goto endbuf
+    code = shift it
+    c = chr code
+    $I0 = index except, c
+    if $I0 == -1 goto isreserved
+    push result, code
+    goto nextbuf
+  isreserved:
+    push result, 0x25
+    $I0 = code / 16
+    c = substr hexdigits, $I0, 1
+    $I0 = ord c
+    push result, $I0
+    $I0 = code % 16
+    c = substr hexdigits, $I0, 1
+    $I0 = ord c
+    push result, $I0
+    goto nextbuf
+  endbuf:
+    s = result.'get_string_as'(ascii:"")
+  done:
+    .return(s)
+.end
+
+=item percent_encode
+
+$S0 = 'percent_encode'(source)
+
+Return the percent encoding of the source string preserving the URI unreserved
+characters. Intended for usage with full URIs.
+
+=cut
+
+.sub percent_encode
+    .param string s
+    .tailcall 'percent_encode_except'(s, URIunchange)
+.end
+
+=item percent_encode_component
+
+$S0 = 'percent_encode_component'(source)
+
+Return the percent encoding of the source string prserving the URI unreserved
+and URI reserved characters. Intended for usage with URIs components, such as
+form data in HTTP GET requests.
+
+=cut
+
+.sub percent_encode_component
+    .param string s
+    .tailcall 'percent_encode_except'(s, URIcomponentunchange)
+.end
+
+=item main
+
+A main function for testing purposes.
+
+Prints the percent_encode and percent_encode_component of the command line
+args provided.
+
+=cut
+
+.sub main :anon :main
+    .param pmc args :optional
+    .local pmc it
+    .local string arg, encoded
+    it = iter args
+    unless it goto end
+    arg = shift it
+  next:
+    unless it goto end
+    arg = shift it
+    encoded = 'percent_encode'(arg)
+    print "'"
+    print arg
+    print "' -> '"
+    print encoded
+    print "' , '"
+    encoded = 'percent_encode_component'(arg)
+    print encoded
+    print "'\n"
+    goto next
+  end:
+.end
+
+=back
+
+=cut
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/gsoc_past_optimization/src/call/context.c
==============================================================================
--- branches/gsoc_past_optimization/src/call/context.c	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/call/context.c	Wed Jun 23 00:34:17 2010	(r47770)
@@ -261,12 +261,7 @@
 init_context(PARROT_INTERP, ARGMOD(PMC *pmcctx), ARGIN_NULLOK(PMC *pmcold))
 {
     ASSERT_ARGS(init_context)
-    Parrot_Context * const ctx    = CONTEXT_STRUCT(pmcctx);
-
-    /* pmcold may be null */
-    Parrot_Context *old    = PMC_IS_NULL(pmcold)
-                           ? NULL
-                           : CONTEXT_STRUCT(pmcold);
+    Parrot_Context * const ctx = CONTEXT_STRUCT(pmcctx);
 
     PARROT_ASSERT_MSG(!PMC_IS_NULL(pmcctx), "Can't initialise Null CallContext");
 
@@ -286,7 +281,17 @@
     ctx->current_sig       = PMCNULL;
     ctx->current_sub       = PMCNULL;
 
-    if (old) {
+    if (PMC_IS_NULL(pmcold)) {
+        ctx->constants         = NULL;
+        ctx->warns             = 0;
+        ctx->errors            = 0;
+        ctx->trace_flags       = 0;
+        ctx->current_HLL       = 0;
+        ctx->current_namespace = PMCNULL;
+        ctx->recursion_depth   = 0;
+    }
+    else {
+        Parrot_Context *old = CONTEXT_STRUCT(pmcold);
         /* some items should better be COW copied */
         ctx->constants         = old->constants;
         ctx->warns             = old->warns;
@@ -298,18 +303,6 @@
         ctx->recursion_depth   = old->recursion_depth;
         ctx->caller_ctx        = pmcold;
     }
-    else {
-        ctx->constants         = NULL;
-        ctx->warns             = 0;
-        ctx->errors            = 0;
-        ctx->trace_flags       = 0;
-        ctx->current_HLL       = 0;
-        ctx->current_namespace = PMCNULL;
-        ctx->recursion_depth   = 0;
-    }
-
-    /* other stuff is set inside Sub.invoke */
-    clear_regs(interp, ctx);
 }
 
 
@@ -467,7 +460,11 @@
         ARGIN(const UINTVAL *number_regs_used))
 {
     ASSERT_ARGS(Parrot_pcc_allocate_registers)
-    allocate_registers(interp, pmcctx, number_regs_used);
+    if (number_regs_used[0]
+    ||  number_regs_used[1]
+    ||  number_regs_used[2]
+    ||  number_regs_used[3])
+        allocate_registers(interp, pmcctx, number_regs_used);
 }
 
 
@@ -518,7 +515,7 @@
     ARGIN_NULLOK(PMC *old))
 {
     ASSERT_ARGS(Parrot_alloc_context)
-    PMC            *pmcctx = Parrot_pmc_new(interp, enum_class_CallContext);
+    PMC * const pmcctx = Parrot_pmc_new(interp, enum_class_CallContext);
 
     allocate_registers(interp, pmcctx, number_regs_used);
     init_context(interp, pmcctx, old);
@@ -544,7 +541,7 @@
 Parrot_pcc_allocate_empty_context(PARROT_INTERP, ARGIN_NULLOK(PMC *old))
 {
     ASSERT_ARGS(Parrot_pcc_allocate_empty_context)
-    PMC            *pmcctx = Parrot_pmc_new(interp, enum_class_CallContext);
+    PMC * const pmcctx = Parrot_pmc_new(interp, enum_class_CallContext);
 
     init_context(interp, pmcctx, old);
 
@@ -622,8 +619,9 @@
 Parrot_clear_i(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_clear_i)
+    const UINTVAL regs_used = Parrot_pcc_get_regs_used(interp, CURRENT_CONTEXT(interp), REGNO_INT);
     UINTVAL i;
-    for (i = 0; i < Parrot_pcc_get_regs_used(interp, CURRENT_CONTEXT(interp), REGNO_INT); ++i)
+    for (i = 0; i < regs_used; ++i)
         REG_INT(interp, i) = 0;
 }
 
@@ -643,8 +641,9 @@
 Parrot_clear_s(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_clear_s)
+    const UINTVAL regs_used = Parrot_pcc_get_regs_used(interp, CURRENT_CONTEXT(interp), REGNO_STR);
     UINTVAL i;
-    for (i = 0; i < Parrot_pcc_get_regs_used(interp, CURRENT_CONTEXT(interp), REGNO_STR); ++i)
+    for (i = 0; i < regs_used; ++i)
         REG_STR(interp, i) = NULL;
 }
 
@@ -664,8 +663,9 @@
 Parrot_clear_p(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_clear_p)
+    const UINTVAL regs_used = Parrot_pcc_get_regs_used(interp, CURRENT_CONTEXT(interp), REGNO_PMC);
     UINTVAL i;
-    for (i = 0; i < Parrot_pcc_get_regs_used(interp, CURRENT_CONTEXT(interp), REGNO_PMC); ++i)
+    for (i = 0; i < regs_used; ++i)
         REG_PMC(interp, i) = PMCNULL;
 }
 
@@ -685,8 +685,9 @@
 Parrot_clear_n(PARROT_INTERP)
 {
     ASSERT_ARGS(Parrot_clear_n)
+    const UINTVAL regs_used = Parrot_pcc_get_regs_used(interp, CURRENT_CONTEXT(interp), REGNO_NUM);
     UINTVAL i;
-    for (i = 0; i < Parrot_pcc_get_regs_used(interp, CURRENT_CONTEXT(interp), REGNO_NUM); ++i)
+    for (i = 0; i < regs_used; ++i)
         REG_NUM(interp, i) = 0.0;
 }
 

Modified: branches/gsoc_past_optimization/src/dynpmc/Defines.in
==============================================================================
--- branches/gsoc_past_optimization/src/dynpmc/Defines.in	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/dynpmc/Defines.in	Wed Jun 23 00:34:17 2010	(r47770)
@@ -41,7 +41,6 @@
     include/parrot/extend_vtable.h \
     include/parrot/feature.h \
     include/parrot/gc_api.h \
-    include/parrot/global.h \
     include/parrot/global_setup.h \
     include/parrot/has_header.h \
     include/parrot/hash.h \
@@ -54,6 +53,7 @@
     include/parrot/memory.h \
     include/parrot/misc.h \
     include/parrot/multidispatch.h \
+    include/parrot/namespace.h \
     include/parrot/nci.h \
     include/parrot/oo.h \
     include/parrot/op.h \

Modified: branches/gsoc_past_optimization/src/exceptions.c
==============================================================================
--- branches/gsoc_past_optimization/src/exceptions.c	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/exceptions.c	Wed Jun 23 00:34:17 2010	(r47770)
@@ -68,7 +68,7 @@
         long error, ARGIN_NULLOK(STRING *msg))
 {
     ASSERT_ARGS(Parrot_ex_build_exception)
-    PMC *exception = Parrot_pmc_new(interp, enum_class_Exception);
+    PMC * const 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);

Modified: branches/gsoc_past_optimization/src/gc/gc_private.h
==============================================================================
--- branches/gsoc_past_optimization/src/gc/gc_private.h	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/gc/gc_private.h	Wed Jun 23 00:34:17 2010	(r47770)
@@ -85,7 +85,7 @@
 
 typedef enum _gc_sys_type_enum {
     MS,  /*mark and sweep*/
-    INF /*infinite memory core*/
+    INF  /*infinite memory core*/
 } gc_sys_type_enum;
 
 /* how often to skip a full GC when this pool has nothing free */

Deleted: branches/gsoc_past_optimization/src/global.c
==============================================================================
--- branches/gsoc_past_optimization/src/global.c	Wed Jun 23 00:34:17 2010	(r47769)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,854 +0,0 @@
-/*
-Copyright (C) 2004-2009, Parrot Foundation.
-$Id$
-
-=head1 NAME
-
-src/global.c
-
-=head1 DESCRIPTION
-
-Access to global PMCs
-
-=head1 FUNCTIONS
-
-=over 4
-
-=cut
-
-*/
-
-#include "parrot/parrot.h"
-#include "global.str"
-#include "pmc/pmc_sub.h"
-#include "pmc/pmc_callcontext.h"
-
-/* HEADERIZER HFILE: include/parrot/global.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 PMC * get_namespace_pmc(PARROT_INTERP, ARGIN(PMC *sub_pmc))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-static PMC * internal_ns_keyed(PARROT_INTERP,
-    ARGIN(PMC *base_ns),
-    ARGIN(PMC *pmc_key),
-    int flags)
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3);
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-static PMC * internal_ns_keyed_key(PARROT_INTERP,
-    ARGIN(PMC *ns),
-    ARGIN(PMC *key),
-    int flags)
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3);
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-static PMC * internal_ns_keyed_str(PARROT_INTERP,
-    ARGIN(PMC *base_ns),
-    ARGIN(STRING *key),
-    int flags)
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3);
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-static PMC * internal_ns_maybe_create(PARROT_INTERP,
-    ARGIN(PMC *ns),
-    ARGIN(STRING *key),
-    int flags)
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3);
-
-static void store_sub_in_multi(PARROT_INTERP,
-    ARGIN(PMC *sub_pmc),
-    ARGIN(PMC *ns))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3);
-
-#define ASSERT_ARGS_get_namespace_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(sub_pmc))
-#define ASSERT_ARGS_internal_ns_keyed __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(base_ns) \
-    , PARROT_ASSERT_ARG(pmc_key))
-#define ASSERT_ARGS_internal_ns_keyed_key __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(ns) \
-    , PARROT_ASSERT_ARG(key))
-#define ASSERT_ARGS_internal_ns_keyed_str __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(base_ns) \
-    , PARROT_ASSERT_ARG(key))
-#define ASSERT_ARGS_internal_ns_maybe_create __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(ns) \
-    , PARROT_ASSERT_ARG(key))
-#define ASSERT_ARGS_store_sub_in_multi __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
-       PARROT_ASSERT_ARG(interp) \
-    , PARROT_ASSERT_ARG(sub_pmc) \
-    , PARROT_ASSERT_ARG(ns))
-/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
-/* HEADERIZER END: static */
-
-#define DEBUG_GLOBAL 0
-
-/* flags for internal_ns_keyed */
-#define INTERN_NS_CREAT 1       /* I'm a fan of the classics */
-
-/*
-
-=item C<static PMC * internal_ns_keyed_str(PARROT_INTERP, PMC *base_ns, STRING
-*key, int flags)>
-
-Internal function to do keyed namespace lookup relative to a given namespace
-PMC.  Understands STRINGs.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-static PMC *
-internal_ns_keyed_str(PARROT_INTERP, ARGIN(PMC *base_ns),
-    ARGIN(STRING *key), int flags)
-{
-    ASSERT_ARGS(internal_ns_keyed_str)
-    PMC * const ns = VTABLE_get_pmc_keyed_str(interp, base_ns, key);
-
-    if (!PMC_IS_NULL(ns) && VTABLE_isa(interp, ns, CONST_STRING(interp, "NameSpace")))
-        return ns;
-
-    return internal_ns_maybe_create(interp, base_ns, key, flags);
-}
-
-/*
-
-=item C<static PMC * internal_ns_keyed_key(PARROT_INTERP, PMC *ns, PMC *key, int
-flags)>
-
-Internal function to do keyed namespace lookup relative to a given namespace
-PMC.  Understands Key PMCs.  Used from C<internal_ns_keyed>.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-static PMC *
-internal_ns_keyed_key(PARROT_INTERP, ARGIN(PMC *ns), ARGIN(PMC *key), int flags)
-{
-    ASSERT_ARGS(internal_ns_keyed_key)
-    while (key) {
-        STRING * const part = VTABLE_get_string(interp, key);
-        PMC    *sub_ns      = VTABLE_get_pmc_keyed_str(interp, ns, part);
-
-        if (PMC_IS_NULL(sub_ns) || !VTABLE_isa(interp, sub_ns, CONST_STRING(interp, "NameSpace"))) {
-            sub_ns = internal_ns_maybe_create(interp, ns, part, flags);
-
-            if (PMC_IS_NULL(sub_ns))
-                return PMCNULL;
-        }
-
-        ns  = sub_ns;
-        key = VTABLE_shift_pmc(interp, key);
-    }
-
-    return ns;
-}
-
-/*
-
-=item C<static PMC * internal_ns_keyed(PARROT_INTERP, PMC *base_ns, PMC
-*pmc_key, int flags)>
-
-internal_ns_keyed: Internal function to do keyed namespace lookup relative to a
-given namespace PMC.  Understands String, Key, and array PMCs containing
-strings.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-static PMC *
-internal_ns_keyed(PARROT_INTERP, ARGIN(PMC *base_ns), ARGIN(PMC *pmc_key), int flags)
-{
-    ASSERT_ARGS(internal_ns_keyed)
-
-    if (VTABLE_isa(interp, pmc_key, CONST_STRING(interp, "String"))) {
-        STRING * const str_key = VTABLE_get_string(interp, pmc_key);
-        return internal_ns_keyed_str(interp, base_ns, str_key, flags);
-    }
-    else if (pmc_key->vtable->base_type == enum_class_Key)
-        return internal_ns_keyed_key(interp, base_ns, pmc_key, flags);
-    else {
-        /* array of strings */
-        STRING * const isans = CONST_STRING(interp, "NameSpace");
-        const INTVAL n = VTABLE_elements(interp, pmc_key);
-        INTVAL i;
-        PMC *ns = base_ns;
-
-        for (i = 0; i < n; ++i) {
-            STRING * const part = VTABLE_get_string_keyed_int(interp, pmc_key, i);
-            PMC *sub_ns = VTABLE_get_pmc_keyed_str(interp, ns, part);
-
-            if (PMC_IS_NULL(sub_ns) || !VTABLE_isa(interp, sub_ns, isans)) {
-                sub_ns = internal_ns_maybe_create(interp, ns, part, flags);
-                if (PMC_IS_NULL(sub_ns))
-                    return PMCNULL;
-            }
-            ns = sub_ns;
-        }
-        return ns;
-    }
-}
-
-/*
-
-=item C<static PMC * internal_ns_maybe_create(PARROT_INTERP, PMC *ns, STRING
-*key, int flags)>
-
-Given the a namespace PMC, a STRING containing a name, and flags from
-C<internal_ns_keyed> or C<internal_ns_keyed_str>, creates and returns a new
-namespace with the given name in the given namespace.  This is an internal
-function only.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-static PMC *
-internal_ns_maybe_create(PARROT_INTERP, ARGIN(PMC *ns), ARGIN(STRING *key), int flags)
-{
-    ASSERT_ARGS(internal_ns_maybe_create)
-    PMC *sub_ns;
-
-    /* TT #1220 - stop depending on typed namespace */
-    if (!(flags & INTERN_NS_CREAT))
-        return PMCNULL;
-
-    /* TT #1221 - match HLL of enclosing namespace? */
-    sub_ns = Parrot_pmc_new(interp, Parrot_get_ctx_HLL_type(interp,
-                                                 enum_class_NameSpace));
-
-    if (PMC_IS_NULL(sub_ns))
-        return PMCNULL;
-
-    VTABLE_set_pmc_keyed_str(interp, ns, key, sub_ns);
-
-    return sub_ns;
-}
-
-
-/*
-
-=item C<PMC * Parrot_get_namespace_keyed(PARROT_INTERP, PMC *base_ns, PMC
-*pmc_key)>
-
-Find the namespace relative to the namespace C<base_ns> with the key
-C<pmc_key>, which may be a String, a Key, or an array of strings.  Return
-the namespace, or NULL if not found.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC *
-Parrot_get_namespace_keyed(PARROT_INTERP, ARGIN(PMC *base_ns), ARGIN(PMC *pmc_key))
-{
-    ASSERT_ARGS(Parrot_get_namespace_keyed)
-    return internal_ns_keyed(interp, base_ns, pmc_key, 0);
-}
-
-/*
-
-=item C<PMC * Parrot_get_namespace_keyed_str(PARROT_INTERP, PMC *base_ns, STRING
-*str_key)>
-
-Find the namespace relative to the namespace C<base_ns> with the string key
-C<str_key>.  Return the namespace, or NULL if not found.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC *
-Parrot_get_namespace_keyed_str(PARROT_INTERP, ARGIN(PMC *base_ns),
-        ARGIN_NULLOK(STRING *str_key))
-{
-    ASSERT_ARGS(Parrot_get_namespace_keyed_str)
-    return internal_ns_keyed_str(interp, base_ns, str_key, 0);
-}
-
-/*
-
-=item C<PMC * Parrot_make_namespace_keyed(PARROT_INTERP, PMC *base_ns, PMC
-*pmc_key)>
-
-Find, or create if necessary, the namespace relative to the namespace
-C<base_ns> with the key C<pmc_key>, which may be a String, a Key, or an
-array of strings.  Return the namespace.  Errors will result in exceptions.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC *
-Parrot_make_namespace_keyed(PARROT_INTERP, ARGIN(PMC *base_ns),
-        ARGIN(PMC *pmc_key))
-{
-    ASSERT_ARGS(Parrot_make_namespace_keyed)
-    return internal_ns_keyed(interp, base_ns, pmc_key, INTERN_NS_CREAT);
-}
-
-/*
-
-=item C<PMC * Parrot_make_namespace_keyed_str(PARROT_INTERP, PMC *base_ns,
-STRING *str_key)>
-
-Find, or create if necessary, the namespace relative to the namespace
-C<base_ns> with the string key C<str_key>.  Return the namespace.  Errors
-will result in exceptions.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC *
-Parrot_make_namespace_keyed_str(PARROT_INTERP, ARGIN(PMC *base_ns),
-        ARGIN(STRING *str_key))
-{
-    ASSERT_ARGS(Parrot_make_namespace_keyed_str)
-    return internal_ns_keyed_str(interp, base_ns, str_key, INTERN_NS_CREAT);
-}
-
-
-/*
-
-=item C<PMC * Parrot_make_namespace_autobase(PARROT_INTERP, PMC *key)>
-
-Find, or create if necessary, a namespace with the key C<key>, which may be a
-String, a Key, or an array of strings. If it is a String, then the lookup is
-relative to the current namespace. Otherwise, it is relative to the current HLL
-root namespace. Return the namespace.  Errors will result in exceptions.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC *
-Parrot_make_namespace_autobase(PARROT_INTERP, ARGIN_NULLOK(PMC *key))
-{
-    ASSERT_ARGS(Parrot_make_namespace_autobase)
-    PMC *base_ns;
-    if (VTABLE_isa(interp, key, CONST_STRING(interp, "String")))
-        base_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
-    else
-        base_ns = VTABLE_get_pmc_keyed_int(interp, interp->HLL_namespace,
-            Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp)));
-    return Parrot_make_namespace_keyed(interp, base_ns, key);
-}
-
-/*
-
-=item C<PMC * Parrot_ns_get_name(PARROT_INTERP, PMC *_namespace)>
-
-Retrieve an array of names from a namespace object.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC *
-Parrot_ns_get_name(PARROT_INTERP, ARGIN(PMC *_namespace))
-{
-    ASSERT_ARGS(Parrot_ns_get_name)
-    PMC *names;
-    Parrot_pcc_invoke_method_from_c_args(interp, _namespace, CONST_STRING(interp, "get_name"), "->P", &names);
-    return names;
-}
-
-/*
-
-=item C<PMC * Parrot_get_global(PARROT_INTERP, PMC *ns, STRING *globalname)>
-
-Parrot_get_global allows a null namespace without throwing an exception; it
-simply returns PMCNULL in that case.
-
-NOTE: At present the use of the {get, set}_global functions is mandatory due to the
-      wacky namespace typing of the default Parrot namespace.  Eventually it will be
-      safe to just use the standard hash interface (if desired).
-
-Look up the global named C<globalname> in the namespace C<ns>.  Return the
-global, or return PMCNULL if C<ns> is null or if the global is not found.
-
-KLUDGE ALERT: Currently prefers non-namespaces in case of collision.
-
-=cut
-
-*/
-
-
-/*
- * {get, set}_global.
- *
- * Parrot_get_global allows a null namespace without throwing an exception; it
- * simply returns PMCNULL in that case.
- *
- * NOTE: At present the use of the {get, set}_global functions is mandatory due to the
- *       wacky namespace typing of the default Parrot namespace.  Eventually it will be
- *       safe to just use the standard hash interface (if desired).
- */
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC *
-Parrot_get_global(PARROT_INTERP, ARGIN_NULLOK(PMC *ns), ARGIN_NULLOK(STRING *globalname))
-{
-    ASSERT_ARGS(Parrot_get_global)
-    if (PMC_IS_NULL(ns))
-        return PMCNULL;
-
-    return (PMC *)VTABLE_get_pointer_keyed_str(interp, ns, globalname);
-}
-
-/*
-
-=item C<void Parrot_set_global(PARROT_INTERP, PMC *ns, STRING *globalname, PMC
-*val)>
-
-Set the global named C<globalname> in the namespace C<ns> to the value C<val>.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_set_global(PARROT_INTERP, ARGIN_NULLOK(PMC *ns),
-        ARGIN_NULLOK(STRING *globalname), ARGIN_NULLOK(PMC *val))
-{
-    ASSERT_ARGS(Parrot_set_global)
-    VTABLE_set_pmc_keyed_str(interp, ns, globalname, val);
-}
-
-
-/*
-
-=item C<PMC * Parrot_find_global_n(PARROT_INTERP, PMC *ns, STRING *globalname)>
-
-Search the namespace PMC C<ns> for an object with name C<globalname>.
-Return the object, or NULL if not found.
-
-TT #1222 - For now this function prefers non-namespaces, it will eventually
-entirely use the untyped interface.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC *
-Parrot_find_global_n(PARROT_INTERP, ARGIN_NULLOK(PMC *ns), ARGIN_NULLOK(STRING *globalname))
-{
-    ASSERT_ARGS(Parrot_find_global_n)
-    PMC *res;
-
-#if DEBUG_GLOBAL
-    if (globalname)
-        Parrot_io_printf(interp, "find_global name '%Ss'\n", globalname);
-#endif
-
-    if (PMC_IS_NULL(ns))
-        res = PMCNULL;
-    else {
-        /*
-         * TT #1219 - we should be able to use 'get_pmc_keyed' here,
-         * but we can't because Parrot's default namespaces are not
-         * fully typed and there's a pseudo-typed interface that
-         * distinguishes 'get_pmc_keyed' from 'get_pointer_keyed';
-         * the former is for NS and the latter is for non-NS.
-         */
-        res = (PMC *)VTABLE_get_pointer_keyed_str(interp, ns, globalname);
-    }
-
-    return PMC_IS_NULL(res) ? NULL : res;
-}
-
-/*
-
-=item C<PMC * Parrot_find_global_cur(PARROT_INTERP, STRING *globalname)>
-
-Finds and returns the data time named C<globalname> in the current namespace.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC *
-Parrot_find_global_cur(PARROT_INTERP, ARGIN_NULLOK(STRING *globalname))
-{
-    ASSERT_ARGS(Parrot_find_global_cur)
-    PMC * const ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
-    return Parrot_find_global_n(interp, ns, globalname);
-}
-
-/*
-
-=item C<PMC * Parrot_find_global_s(PARROT_INTERP, STRING *str_key, STRING
-*globalname)>
-
-Search the namespace designated by C<str_key>, or the HLL root if
-C<str_key> is NULL, for an object with name C<globalname>.  Return the
-object, or NULL if not found.
-
-TT #1222 - For now this function prefers non-namespaces, it will eventually
-entirely use the untyped interface.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC *
-Parrot_find_global_s(PARROT_INTERP, ARGIN_NULLOK(STRING *str_key),
-        ARGIN_NULLOK(STRING *globalname))
-{
-    ASSERT_ARGS(Parrot_find_global_s)
-    PMC *const ns =
-        Parrot_get_namespace_keyed_str(interp,
-                                       Parrot_get_ctx_HLL_namespace(interp),
-                                       str_key);
-    return Parrot_find_global_n(interp, ns, globalname);
-}
-
-/*
-
-=item C<void Parrot_store_global_n(PARROT_INTERP, PMC *ns, STRING *globalname,
-PMC *val)>
-
-Store the PMC C<val> into the namespace PMC C<ns> with name C<globalname>.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_store_global_n(PARROT_INTERP, ARGIN_NULLOK(PMC *ns),
-        ARGIN_NULLOK(STRING *globalname), ARGIN_NULLOK(PMC *val))
-{
-    ASSERT_ARGS(Parrot_store_global_n)
-#if DEBUG_GLOBAL
-    if (globalname)
-        Parrot_io_printf(interp, "store_global name '%Ss'\n", globalname);
-#endif
-
-    if (PMC_IS_NULL(ns))
-        return;
-
-    VTABLE_set_pmc_keyed_str(interp, ns, globalname, val);
-}
-
-/*
-
-=item C<void Parrot_store_global_s(PARROT_INTERP, STRING *str_key, STRING
-*globalname, PMC *val)>
-
-Store the PMC C<val> into the namespace designated by C<str_key>, or
-the HLL root if C<str_key> is NULL, with the name C<globalname>.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_store_global_s(PARROT_INTERP, ARGIN_NULLOK(STRING *str_key),
-        ARGIN_NULLOK(STRING *globalname), ARGIN_NULLOK(PMC *val))
-{
-    ASSERT_ARGS(Parrot_store_global_s)
-    PMC * const ns = Parrot_make_namespace_keyed_str(interp,
-                                         Parrot_get_ctx_HLL_namespace(interp),
-                                         str_key);
-
-    Parrot_store_global_n(interp, ns, globalname, val);
-
-    /* TT #1225 - method cache invalidation should be a namespace function */
-    Parrot_invalidate_method_cache(interp, str_key);
-}
-
-
-/*
-
-=item C<PMC * Parrot_find_global_op(PARROT_INTERP, PMC *ns, STRING *globalname,
-void *next)>
-
-If the global exists in the given namespace PMC, return it.  If not, return
-PMCNULL.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-PMC *
-Parrot_find_global_op(PARROT_INTERP, ARGIN(PMC *ns),
-        ARGIN_NULLOK(STRING *globalname), ARGIN_NULLOK(void *next))
-{
-    ASSERT_ARGS(Parrot_find_global_op)
-    PMC *res;
-
-    if (STRING_IS_NULL(globalname))
-        Parrot_ex_throw_from_c_args(interp, next, EXCEPTION_GLOBAL_NOT_FOUND,
-            "Tried to get null global");
-
-    res = Parrot_find_global_n(interp, ns, globalname);
-    if (!res)
-        res = PMCNULL;
-
-    return res;
-}
-
-
-/*
-
-=item C<PMC * Parrot_find_name_op(PARROT_INTERP, STRING *name, void *next)>
-
-TT #1223 - THIS IS BROKEN - it doesn't walk up the scopes yet
-
-Find the given C<name> in lexicals, then the current namespace, then the HLL
-root namespace, and finally Parrot builtins.  If the name isn't found
-anywhere, return PMCNULL.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC *
-Parrot_find_name_op(PARROT_INTERP, ARGIN(STRING *name), SHIM(void *next))
-{
-    ASSERT_ARGS(Parrot_find_name_op)
-    PMC * const ctx     = CURRENT_CONTEXT(interp);
-    PMC * const lex_pad = Parrot_find_pad(interp, name, ctx);
-    PMC *g;
-
-    if (PMC_IS_NULL(lex_pad))
-        g = PMCNULL;
-    else
-        g = VTABLE_get_pmc_keyed_str(interp, lex_pad, name);
-
-    /* TT #1223 - walk up the scopes!  duh!! */
-
-    if (PMC_IS_NULL(g))
-        g = Parrot_find_global_cur(interp, name);
-
-    if (PMC_IS_NULL(g))
-        g = Parrot_find_global_n(interp, Parrot_get_ctx_HLL_namespace(interp), name);
-
-    if (PMC_IS_NULL(g))
-        return PMCNULL;
-    else
-        return g;
-}
-
-/*
-
-=item C<static PMC * get_namespace_pmc(PARROT_INTERP, PMC *sub_pmc)>
-
-Return the namespace PMC associated with the PMC C<sub>. If C<sub> is NULL,
-return the Associated HLL namespace PMC instead.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-static PMC *
-get_namespace_pmc(PARROT_INTERP, ARGIN(PMC *sub_pmc))
-{
-    ASSERT_ARGS(get_namespace_pmc)
-    Parrot_Sub_attributes *sub;
-    PMC        *nsname, *nsroot;
-
-    PMC_get_sub(interp, sub_pmc, sub);
-    nsname = sub->namespace_name;
-    nsroot = Parrot_get_HLL_namespace(interp, sub->HLL_id);
-
-    /* If we have a NULL, return the HLL namespace */
-    if (PMC_IS_NULL(nsname))
-        return nsroot;
-    /* If we have a String, do a string lookup */
-    else if (nsname->vtable->base_type == enum_class_String)
-        return Parrot_make_namespace_keyed_str(interp, nsroot,
-                VTABLE_get_string(interp, nsname));
-    /* Otherwise, do a PMC lookup */
-    else
-        return Parrot_make_namespace_keyed(interp, nsroot, nsname);
-}
-
-/*
-
-=item C<static void store_sub_in_multi(PARROT_INTERP, PMC *sub_pmc, PMC *ns)>
-
-Adds the sub C<sub> into a mulisub of the same name in the namespace C<ns>.
-If no multisub by that name currently exists, we create one.
-
-=cut
-
-*/
-
-static void
-store_sub_in_multi(PARROT_INTERP, ARGIN(PMC *sub_pmc), ARGIN(PMC *ns))
-{
-    ASSERT_ARGS(store_sub_in_multi)
-    Parrot_Sub_attributes *sub;
-    STRING     *ns_entry_name;
-    PMC        *multisub;
-
-    PMC_get_sub(interp, sub_pmc, sub);
-    ns_entry_name = sub->ns_entry_name;
-    multisub      = VTABLE_get_pmc_keyed_str(interp, ns, ns_entry_name);
-
-    /* is there an existing MultiSub PMC? or do we need to create one? */
-    if (PMC_IS_NULL(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);
-        VTABLE_set_pmc_keyed_str(interp, ns, ns_entry_name, multisub);
-    }
-    else
-        VTABLE_push_pmc(interp, multisub, sub_pmc);
-}
-
-/*
-
-=item C<void Parrot_store_sub_in_namespace(PARROT_INTERP, PMC *sub_pmc)>
-
-Adds the PMC C<sub> into the current namespace. Adds the sub to a multi of the
-same name if it's defined as a multi.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_store_sub_in_namespace(PARROT_INTERP, ARGIN(PMC *sub_pmc))
-{
-    ASSERT_ARGS(Parrot_store_sub_in_namespace)
-    const INTVAL cur_id = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp));
-
-    PMC        *ns;
-    Parrot_Sub_attributes *sub;
-
-    /* PF structures aren't fully constructed yet */
-    Parrot_block_GC_mark(interp);
-
-    /* store relative to HLL namespace */
-    PMC_get_sub(interp, sub_pmc, sub);
-    Parrot_pcc_set_HLL(interp, CURRENT_CONTEXT(interp), sub->HLL_id);
-
-    ns = get_namespace_pmc(interp, sub_pmc);
-
-    /* attach a namespace to the sub for lookups */
-    sub->namespace_stash = ns;
-
-    /* store a :multi sub */
-    if (!PMC_IS_NULL(sub->multi_signature))
-        store_sub_in_multi(interp, sub_pmc, ns);
-
-    /* store other subs (as long as they're not :anon) */
-    else if (!(PObj_get_FLAGS(sub_pmc) & SUB_FLAG_PF_ANON)
-        || sub->vtable_index != -1) {
-        STRING * const ns_entry_name = sub->ns_entry_name;
-        PMC    * const nsname        = sub->namespace_name;
-
-        Parrot_store_global_n(interp, ns, ns_entry_name, sub_pmc);
-
-        /* TT #1224:
-           TEMPORARY HACK - cache invalidation should be a namespace function */
-        if (!PMC_IS_NULL(nsname)) {
-            STRING * const nsname_s = VTABLE_get_string(interp, nsname);
-            Parrot_invalidate_method_cache(interp, nsname_s);
-        }
-    }
-
-    /* restore HLL_id */
-    Parrot_pcc_set_HLL(interp, CURRENT_CONTEXT(interp), cur_id);
-    Parrot_unblock_GC_mark(interp);
-}
-
-/*
-
-=back
-
-=head1 SEE ALSO
-
-F<include/parrot/global.h>
-
-=cut
-
-*/
-
-
-/*
- * Local variables:
- *   c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */

Modified: branches/gsoc_past_optimization/src/hll.c
==============================================================================
--- branches/gsoc_past_optimization/src/hll.c	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/hll.c	Wed Jun 23 00:34:17 2010	(r47770)
@@ -167,7 +167,7 @@
      * ns_hash to another type, if mappings provide one
      * XXX - FIXME
      */
-    ns_hash = Parrot_make_namespace_keyed_str(interp, interp->root_namespace,
+    ns_hash = Parrot_ns_make_namespace_keyed_str(interp, interp->root_namespace,
                                               hll_name);
 
     /* cache HLL's toplevel namespace */
@@ -500,7 +500,7 @@
              * here because the typemap already exists, but it is not currently
              * done for consistency.
              */
-            ns_hash = Parrot_make_namespace_keyed_str(interp,
+            ns_hash = Parrot_ns_make_namespace_keyed_str(interp,
                 interp->root_namespace, hll_name);
 
             VTABLE_set_pmc_keyed_int(interp, interp->HLL_namespace,

Modified: branches/gsoc_past_optimization/src/io/io_private.h
==============================================================================
--- branches/gsoc_past_optimization/src/io/io_private.h	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/io/io_private.h	Wed Jun 23 00:34:17 2010	(r47770)
@@ -27,23 +27,19 @@
 
 #define PARROT_IN_IO 1
 #define PARROT_ASYNC_DEVEL 0
-#define PARROT_NET_DEVEL 1
 
 #include <parrot/io.h>
 
-#if PARROT_NET_DEVEL
 /* XXX: Parrot config is currently not probing for all headers so
  * I'm sticking here rather than parrot.h
  */
-#  ifdef UNIX
-#    include <sys/socket.h>
-#  endif
-
-#  ifdef WIN32
-#    include <winsock.h>
-#  endif
+#ifdef UNIX
+#  include <sys/socket.h>
+#endif
 
-#endif /* PARROT_NET_DEVEL */
+#ifdef WIN32
+#  include <winsock.h>
+#endif
 
 /* IO object flags */
 #define PIO_F_READ      00000001

Modified: branches/gsoc_past_optimization/src/io/socket_unix.c
==============================================================================
--- branches/gsoc_past_optimization/src/io/socket_unix.c	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/io/socket_unix.c	Wed Jun 23 00:34:17 2010	(r47770)
@@ -67,8 +67,6 @@
 
 =head2 Networking
 
-Define C<PARROT_NET_DEVEL> to enable networking.
-
 These could be native extensions but they probably should be here if we
 wish to make them integrated with the async IO system.
 
@@ -110,8 +108,6 @@
 }
 
 
-#  if PARROT_NET_DEVEL
-
 /*
 
 =item C<INTVAL Parrot_io_socket_unix(PARROT_INTERP, PMC *s, int fam, int type,
@@ -314,13 +310,13 @@
         switch (errno) {
           case EINTR:
             goto AGAIN;
-#    ifdef EWOULDBLOCK
+#  ifdef EWOULDBLOCK
           case EWOULDBLOCK:
             goto AGAIN;
-#    else
+#  else
           case EAGAIN:
             goto AGAIN;
-#    endif
+#  endif
           case EPIPE:
             /* XXX why close it here and not below */
             close(io->os_handle);
@@ -363,13 +359,13 @@
         switch (errno) {
           case EINTR:
             goto AGAIN;
-#    ifdef EWOULDBLOCK
+#  ifdef EWOULDBLOCK
           case EWOULDBLOCK:
             goto AGAIN;
-#    else
+#  else
           case EAGAIN:
             goto AGAIN;
-#    endif
+#  endif
           case ECONNRESET:
             /* XXX why close it on err return result is -1 anyway */
             close(io->os_handle);
@@ -457,12 +453,12 @@
     const int family = AF_INET;
 
     struct sockaddr_in * const sa = (struct sockaddr_in*)VTABLE_get_pointer(interp, sockaddr);
-#    ifdef PARROT_DEF_INET_ATON
+#  ifdef PARROT_DEF_INET_ATON
     if (inet_aton(host, &sa->sin_addr) != 0) {
-#    else
+#  else
     /* positive retval is success */
     if (inet_pton(family, host, &sa->sin_addr) > 0) {
-#    endif
+#  endif
         /* Success converting numeric IP */
     }
     else {
@@ -482,7 +478,6 @@
     sa->sin_family = family;
     sa->sin_port = htons(port);
 }
-#  endif
 
 
 #endif /* PIO_OS_UNIX */

Modified: branches/gsoc_past_optimization/src/io/socket_win32.c
==============================================================================
--- branches/gsoc_past_optimization/src/io/socket_win32.c	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/io/socket_win32.c	Wed Jun 23 00:34:17 2010	(r47770)
@@ -51,13 +51,11 @@
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
 
-#  if PARROT_NET_DEVEL
-
 /* Helper macros to get sockaddr_in */
-#    define SOCKADDR_LOCAL(p) ((struct sockaddr_in*)VTABLE_get_pointer(interp, \
-                PARROT_SOCKET((p))->local))
-#    define SOCKADDR_REMOTE(p) ((struct sockaddr_in*)VTABLE_get_pointer(interp, \
-                PARROT_SOCKET((p))->remote))
+#  define SOCKADDR_LOCAL(p) ((struct sockaddr_in*)VTABLE_get_pointer(interp, \
+              PARROT_SOCKET((p))->local))
+#  define SOCKADDR_REMOTE(p) ((struct sockaddr_in*)VTABLE_get_pointer(interp, \
+              PARROT_SOCKET((p))->remote))
 
 /*
 
@@ -262,13 +260,13 @@
         switch (errno) {
           case WSAEINTR:
             goto AGAIN;
-#    ifdef WSAEWOULDBLOCK
+#  ifdef WSAEWOULDBLOCK
           case WSAEWOULDBLOCK:
             goto AGAIN;
-#    else
+#  else
           case WSAEAGAIN:
             goto AGAIN;
-#    endif
+#  endif
           case EPIPE:
             /* XXX why close it here and not below */
             close((int)io->os_handle);
@@ -311,13 +309,13 @@
         switch (errno) {
           case EINTR:
             goto AGAIN;
-#    ifdef WSAEWOULDBLOCK
+#  ifdef WSAEWOULDBLOCK
           case WSAEWOULDBLOCK:
             goto AGAIN;
-#    else
+#  else
           case WSAEAGAIN:
             goto AGAIN;
-#    endif
+#  endif
           case WSAECONNRESET:
             /* XXX why close it on err return result is -1 anyway */
             close((int)io->os_handle);
@@ -452,8 +450,6 @@
     return sockaddr;
 }
 
-#  endif /* PARROT_NET_DEVEL */
-
 #endif /* PIO_OS_WIN32 */
 
 /*

Modified: branches/gsoc_past_optimization/src/io/win32.c
==============================================================================
--- branches/gsoc_past_optimization/src/io/win32.c	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/io/win32.c	Wed Jun 23 00:34:17 2010	(r47770)
@@ -134,10 +134,8 @@
 {
     ASSERT_ARGS(Parrot_io_init_win32)
     HANDLE h;
-#  if PARROT_NET_DEVEL
     struct WSAData sockinfo;
     int ret;
-#  endif
 
     if ((h = GetStdHandle(STD_INPUT_HANDLE)) != INVALID_HANDLE_VALUE) {
         _PIO_STDIN(interp) = Parrot_io_fdopen_win32(interp, PMCNULL, h, PIO_F_READ);
@@ -157,7 +155,6 @@
     else {
         _PIO_STDERR(interp) = PMCNULL;
     }
-#  if PARROT_NET_DEVEL
     /* Start Winsock
      * no idea where or whether destroy it
      */
@@ -167,7 +164,6 @@
                   WSAGetLastError());
         return -4;
     }
-#  endif
     return 0;
 }
 

Modified: branches/gsoc_past_optimization/src/key.c
==============================================================================
--- branches/gsoc_past_optimization/src/key.c	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/key.c	Wed Jun 23 00:34:17 2010	(r47770)
@@ -146,31 +146,6 @@
     return key_new_string(interp, Parrot_str_new(interp, value, 0));
 }
 
-
-/*
-
-=item C<PMC * key_new_pmc(PARROT_INTERP, PMC *value)>
-
-Returns a new PMC C<Key> PMC with value C<value>.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-PMC *
-key_new_pmc(PARROT_INTERP, ARGIN(PMC *value))
-{
-    ASSERT_ARGS(key_new_pmc)
-    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");
-}
-
-
 /*
 
 =item C<void key_set_integer(PARROT_INTERP, PMC *key, INTVAL value)>
@@ -263,33 +238,6 @@
     return;
 }
 
-
-/*
-
-=item C<void key_set_pmc(PARROT_INTERP, PMC *key, PMC *value)>
-
-Set the PMC C<value> in C<key>.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-key_set_pmc(PARROT_INTERP, ARGMOD(PMC *key), ARGIN(PMC *value))
-{
-    ASSERT_ARGS(key_set_pmc)
-    PObj_get_FLAGS(key) &= ~KEY_type_FLAGS;
-    PObj_get_FLAGS(key) |=  KEY_pmc_FLAG;
-
-    /*
-     * XXX leo
-     * what for is this indirection?
-     */
-    Parrot_ex_throw_from_c_args(interp, NULL, 1, "this is broken - see slice.pmc");
-}
-
-
 /*
 
 =item C<INTVAL key_type(PARROT_INTERP, const PMC *key)>

Modified: branches/gsoc_past_optimization/src/library.c
==============================================================================
--- branches/gsoc_past_optimization/src/library.c	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/library.c	Wed Jun 23 00:34:17 2010	(r47770)
@@ -809,6 +809,7 @@
     ASSERT_ARGS(Parrot_get_runtime_prefix)
     char * const env = Parrot_getenv(interp, CONST_STRING(interp, "PARROT_RUNTIME"));
 
+    Parrot_warn_deprecated(interp, "Parrot_get_runtime_prefix is deprecated TT #1191");
     if (env)
         return env;
     else {

Modified: branches/gsoc_past_optimization/src/multidispatch.c
==============================================================================
--- branches/gsoc_past_optimization/src/multidispatch.c	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/multidispatch.c	Wed Jun 23 00:34:17 2010	(r47770)
@@ -329,9 +329,9 @@
 {
     ASSERT_ARGS(Parrot_mmd_find_multi_from_long_sig)
     STRING * const multi_str = CONST_STRING(interp, "MULTI");
-    PMC    * const ns        = Parrot_make_namespace_keyed_str(interp,
+    PMC    * const ns        = Parrot_ns_make_namespace_keyed_str(interp,
                                     interp->root_namespace, multi_str);
-    PMC    * const multi_sub = Parrot_get_global(interp, ns, name);
+    PMC    * const multi_sub = Parrot_ns_get_global(interp, ns, name);
 
     if (PMC_IS_NULL(multi_sub)) {
         return PMCNULL;
@@ -844,7 +844,7 @@
     if (PMC_IS_NULL(ns))
         return;
 
-    multi_sub = Parrot_get_global(interp, ns, name);
+    multi_sub = Parrot_ns_get_global(interp, ns, name);
 
     if (PMC_IS_NULL(multi_sub))
         return;
@@ -868,9 +868,9 @@
 {
     ASSERT_ARGS(mmd_search_global)
     STRING * const multi_str = CONST_STRING(interp, "MULTI");
-    PMC    * const ns        = Parrot_get_namespace_keyed_str(interp,
+    PMC    * const ns        = Parrot_ns_get_namespace_keyed_str(interp,
                                     interp->root_namespace, multi_str);
-    PMC           *multi_sub = Parrot_get_global(interp, ns, name);
+    PMC           *multi_sub = Parrot_ns_get_global(interp, ns, name);
 
     if (PMC_IS_NULL(multi_sub))
         return;
@@ -896,13 +896,13 @@
 {
     ASSERT_ARGS(mmd_add_multi_global)
     STRING * const multi_str = CONST_STRING(interp, "MULTI");
-    PMC    * const ns        = Parrot_make_namespace_keyed_str(interp,
+    PMC    * const ns        = Parrot_ns_make_namespace_keyed_str(interp,
                                     interp->root_namespace, multi_str);
-    PMC           *multi_sub = Parrot_get_global(interp, ns, sub_name);
+    PMC           *multi_sub = Parrot_ns_get_global(interp, ns, sub_name);
 
     if (PMC_IS_NULL(multi_sub)) {
         multi_sub = Parrot_pmc_new_constant(interp, enum_class_MultiSub);
-        Parrot_set_global(interp, ns, sub_name, multi_sub);
+        Parrot_ns_set_global(interp, ns, sub_name, multi_sub);
     }
 
     PARROT_ASSERT(multi_sub->vtable->base_type == enum_class_MultiSub);
@@ -930,12 +930,12 @@
     PMC * const hll_ns = VTABLE_get_pmc_keyed_int(interp,
                         interp->HLL_namespace,
                         Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp)));
-    PMC * const ns     = Parrot_make_namespace_keyed_str(interp, hll_ns, ns_name);
-    PMC        *multi_sub = Parrot_get_global(interp, ns, sub_name);
+    PMC * const ns     = Parrot_ns_make_namespace_keyed_str(interp, hll_ns, ns_name);
+    PMC        *multi_sub = Parrot_ns_get_global(interp, ns, sub_name);
 
     if (PMC_IS_NULL(multi_sub)) {
         multi_sub = Parrot_pmc_new_constant(interp, enum_class_MultiSub);
-        Parrot_set_global(interp, ns, sub_name, multi_sub);
+        Parrot_ns_set_global(interp, ns, sub_name, multi_sub);
     }
 
     PARROT_ASSERT(multi_sub->vtable->base_type == enum_class_MultiSub);

Copied: branches/gsoc_past_optimization/src/namespace.c (from r47769, trunk/src/namespace.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_past_optimization/src/namespace.c	Wed Jun 23 00:34:17 2010	(r47770, copy of r47769, trunk/src/namespace.c)
@@ -0,0 +1,842 @@
+/*
+Copyright (C) 2004-2009, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/namespace.c
+
+=head1 DESCRIPTION
+
+Common routines for storing and finding elements in namespaces
+
+=cut
+
+*/
+
+#include "parrot/parrot.h"
+#include "namespace.str"
+#include "pmc/pmc_sub.h"
+#include "pmc/pmc_callcontext.h"
+
+/* HEADERIZER HFILE: include/parrot/namespace.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 PMC * get_namespace_pmc(PARROT_INTERP, ARGIN(PMC *sub_pmc))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+static PMC * internal_ns_keyed(PARROT_INTERP,
+    ARGIN(PMC *base_ns),
+    ARGIN(PMC *pmc_key),
+    int flags)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+static PMC * internal_ns_keyed_key(PARROT_INTERP,
+    ARGIN(PMC *ns),
+    ARGIN(PMC *key),
+    int flags)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+static PMC * internal_ns_keyed_str(PARROT_INTERP,
+    ARGIN(PMC *base_ns),
+    ARGIN(STRING *key),
+    int flags)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+static PMC * internal_ns_maybe_create(PARROT_INTERP,
+    ARGIN(PMC *ns),
+    ARGIN(STRING *key),
+    int flags)
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
+static void store_sub_in_multi(PARROT_INTERP,
+    ARGIN(PMC *sub_pmc),
+    ARGIN(PMC *ns))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
+#define ASSERT_ARGS_get_namespace_pmc __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(sub_pmc))
+#define ASSERT_ARGS_internal_ns_keyed __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(base_ns) \
+    , PARROT_ASSERT_ARG(pmc_key))
+#define ASSERT_ARGS_internal_ns_keyed_key __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(ns) \
+    , PARROT_ASSERT_ARG(key))
+#define ASSERT_ARGS_internal_ns_keyed_str __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(base_ns) \
+    , PARROT_ASSERT_ARG(key))
+#define ASSERT_ARGS_internal_ns_maybe_create __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(ns) \
+    , PARROT_ASSERT_ARG(key))
+#define ASSERT_ARGS_store_sub_in_multi __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(sub_pmc) \
+    , PARROT_ASSERT_ARG(ns))
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: static */
+
+/* flags for internal_ns_keyed */
+#define INTERN_NS_CREAT 1       /* I'm a fan of the classics */
+
+/*
+
+=head1 Internal Static Functions
+
+=over 4
+
+=item C<static PMC * internal_ns_keyed_str(PARROT_INTERP, PMC *base_ns, STRING
+*key, int flags)>
+
+Looks up a nested NameSpace PMC starting from C<base_ns> and doing a relative
+lookup. C<key> is a STRING containing the name of the NameSpace to look up.
+Flags can be 0 or INTERN_NS_CREAT. In the former case, PMCNULL is returned
+if the namespace is not found. In the later, a new namespace with the given
+is created and returned if it is not found.
+
+=cut
+
+*/
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+static PMC *
+internal_ns_keyed_str(PARROT_INTERP, ARGIN(PMC *base_ns),
+    ARGIN(STRING *key), int flags)
+{
+    ASSERT_ARGS(internal_ns_keyed_str)
+    PMC * const ns = VTABLE_get_pmc_keyed_str(interp, base_ns, key);
+
+    if (!PMC_IS_NULL(ns) && VTABLE_isa(interp, ns, CONST_STRING(interp, "NameSpace")))
+        return ns;
+
+    return internal_ns_maybe_create(interp, base_ns, key, flags);
+}
+
+/*
+
+=item C<static PMC * internal_ns_keyed_key(PARROT_INTERP, PMC *ns, PMC *key, int
+flags)>
+
+Internal function to do keyed namespace lookup relative to a given namespace
+PMC. The namespace to find is located by C<key> relative to C<ns>. C<flags>
+determines what happens when an existing namespace is not found. 0 means
+PMCNULL is returned, INTERN_NS_CREAT means a new namespace is created.
+
+=cut
+
+*/
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+static PMC *
+internal_ns_keyed_key(PARROT_INTERP, ARGIN(PMC *ns), ARGIN(PMC *key), int flags)
+{
+    ASSERT_ARGS(internal_ns_keyed_key)
+    while (key) {
+        STRING * const part = VTABLE_get_string(interp, key);
+        PMC    *sub_ns      = VTABLE_get_pmc_keyed_str(interp, ns, part);
+
+        if (PMC_IS_NULL(sub_ns) || !VTABLE_isa(interp, sub_ns, CONST_STRING(interp, "NameSpace"))) {
+            sub_ns = internal_ns_maybe_create(interp, ns, part, flags);
+
+            if (PMC_IS_NULL(sub_ns))
+                return PMCNULL;
+        }
+
+        ns  = sub_ns;
+        key = VTABLE_shift_pmc(interp, key);
+    }
+
+    return ns;
+}
+
+/*
+
+=item C<static PMC * internal_ns_keyed(PARROT_INTERP, PMC *base_ns, PMC
+*pmc_key, int flags)>
+
+Search for a namespace PMC starting from a base namespace C<base_ns> and
+following C<pmc_key> to the nested namespace. C<pmc_key> can be a String,
+a Key, or an array of strings (such as an ResizableStringArray, or a
+ResizablePMCArray that contains Strings). Flags determines what we do if the
+requested namespace is not found: 0 means we return PMCNULL, INTERN_NS_CREAT
+means we create the new namespace and return it.
+
+=cut
+
+*/
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+static PMC *
+internal_ns_keyed(PARROT_INTERP, ARGIN(PMC *base_ns), ARGIN(PMC *pmc_key), int flags)
+{
+    ASSERT_ARGS(internal_ns_keyed)
+
+    if (VTABLE_isa(interp, pmc_key, CONST_STRING(interp, "String"))) {
+        STRING * const str_key = VTABLE_get_string(interp, pmc_key);
+        return internal_ns_keyed_str(interp, base_ns, str_key, flags);
+    }
+    else if (PMC_IS_TYPE(pmc_key, Key))
+        return internal_ns_keyed_key(interp, base_ns, pmc_key, flags);
+    else {
+        /* array of strings */
+        STRING * const isans = CONST_STRING(interp, "NameSpace");
+        const INTVAL n = VTABLE_elements(interp, pmc_key);
+        INTVAL i;
+        PMC *ns = base_ns;
+
+        for (i = 0; i < n; ++i) {
+            STRING * const part = VTABLE_get_string_keyed_int(interp, pmc_key, i);
+            PMC *sub_ns = VTABLE_get_pmc_keyed_str(interp, ns, part);
+
+            if (PMC_IS_NULL(sub_ns) || !VTABLE_isa(interp, sub_ns, isans)) {
+                sub_ns = internal_ns_maybe_create(interp, ns, part, flags);
+                if (PMC_IS_NULL(sub_ns))
+                    return PMCNULL;
+            }
+            ns = sub_ns;
+        }
+        return ns;
+    }
+}
+
+/*
+
+=item C<static PMC * internal_ns_maybe_create(PARROT_INTERP, PMC *ns, STRING
+*key, int flags)>
+
+Given a namespace PMC C<ns>, a STRING C<key> containing a name, and flags from
+C<internal_ns_keyed> or C<internal_ns_keyed_str>, creates and returns a new
+namespace with the given name as a child of the given namespace.  This is an
+internal function only.
+
+=cut
+
+*/
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+static PMC *
+internal_ns_maybe_create(PARROT_INTERP, ARGIN(PMC *ns), ARGIN(STRING *key), int flags)
+{
+    ASSERT_ARGS(internal_ns_maybe_create)
+
+    /* TT #1220 - stop depending on typed namespace */
+    if (!(flags & INTERN_NS_CREAT))
+        return PMCNULL;
+    else {
+        const INTVAL type_id = Parrot_get_ctx_HLL_type(interp, enum_class_NameSpace);
+        /* TT #1221 - match HLL of enclosing namespace? */
+        PMC * const sub_ns = Parrot_pmc_new(interp, type_id);
+
+        if (PMC_IS_NULL(sub_ns))
+            return PMCNULL;
+
+        VTABLE_set_pmc_keyed_str(interp, ns, key, sub_ns);
+        return sub_ns;
+    }
+}
+
+/*
+
+=item C<static PMC * get_namespace_pmc(PARROT_INTERP, PMC *sub_pmc)>
+
+Return the namespace PMC associated with the PMC C<sub>. If there is no
+NameSpace associated with the sub, return it's HLL NameSpace PMC instead.
+
+=cut
+
+*/
+
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+static PMC *
+get_namespace_pmc(PARROT_INTERP, ARGIN(PMC *sub_pmc))
+{
+    ASSERT_ARGS(get_namespace_pmc)
+    Parrot_Sub_attributes *sub;
+    PMC        *nsname, *nsroot;
+
+    PMC_get_sub(interp, sub_pmc, sub);
+    nsname = sub->namespace_name;
+    nsroot = Parrot_get_HLL_namespace(interp, sub->HLL_id);
+
+    /* If we have a NULL, return the HLL namespace */
+    if (PMC_IS_NULL(nsname))
+        return nsroot;
+    /* If we have a String, do a string lookup */
+    else if (nsname->vtable->base_type == enum_class_String)
+        return Parrot_ns_make_namespace_keyed_str(interp, nsroot,
+                VTABLE_get_string(interp, nsname));
+    /* Otherwise, do a PMC lookup */
+    else
+        return Parrot_ns_make_namespace_keyed(interp, nsroot, nsname);
+}
+
+/*
+
+=item C<static void store_sub_in_multi(PARROT_INTERP, PMC *sub_pmc, PMC *ns)>
+
+Adds the sub C<sub> into a multisub of the same name in the namespace C<ns>.
+If no multisub by that name currently exists, we create one.
+
+=cut
+
+*/
+
+static void
+store_sub_in_multi(PARROT_INTERP, ARGIN(PMC *sub_pmc), ARGIN(PMC *ns))
+{
+    ASSERT_ARGS(store_sub_in_multi)
+    Parrot_Sub_attributes *sub;
+    STRING     *ns_entry_name;
+    PMC        *multisub;
+
+    PMC_get_sub(interp, sub_pmc, sub);
+    ns_entry_name = sub->ns_entry_name;
+    multisub      = VTABLE_get_pmc_keyed_str(interp, ns, ns_entry_name);
+
+    /* is there an existing MultiSub PMC? or do we need to create one? */
+    if (PMC_IS_NULL(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);
+        VTABLE_set_pmc_keyed_str(interp, ns, ns_entry_name, multisub);
+    }
+    else
+        VTABLE_push_pmc(interp, multisub, sub_pmc);
+}
+
+/*
+
+=back
+
+=head1 NameSpace API Functions
+
+=over 4
+
+=item C<PMC * Parrot_ns_get_namespace_keyed(PARROT_INTERP, PMC *base_ns, PMC
+*pmc_key)>
+
+Find the namespace relative to the namespace C<base_ns> with the key
+C<pmc_key>, which may be a String, a Key, or an array of strings.  Return
+the namespace, or NULL if not found.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC *
+Parrot_ns_get_namespace_keyed(PARROT_INTERP, ARGIN(PMC *base_ns), ARGIN(PMC *pmc_key))
+{
+    ASSERT_ARGS(Parrot_ns_get_namespace_keyed)
+    return internal_ns_keyed(interp, base_ns, pmc_key, 0);
+}
+
+/*
+
+=item C<PMC * Parrot_ns_get_namespace_keyed_str(PARROT_INTERP, PMC *base_ns,
+STRING *str_key)>
+
+Find the namespace relative to the namespace C<base_ns> with the string key
+C<str_key>.  Return the namespace, or NULL if not found.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC *
+Parrot_ns_get_namespace_keyed_str(PARROT_INTERP, ARGIN(PMC *base_ns),
+        ARGIN_NULLOK(STRING *str_key))
+{
+    ASSERT_ARGS(Parrot_ns_get_namespace_keyed_str)
+    return internal_ns_keyed_str(interp, base_ns, str_key, 0);
+}
+
+/*
+
+=item C<PMC * Parrot_ns_make_namespace_keyed(PARROT_INTERP, PMC *base_ns, PMC
+*pmc_key)>
+
+Find, or create if necessary, the namespace relative to the namespace
+C<base_ns> with the key C<pmc_key>, which may be a String, a Key, or an
+array of strings.  Return the namespace.  Errors will result in exceptions.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC *
+Parrot_ns_make_namespace_keyed(PARROT_INTERP, ARGIN(PMC *base_ns),
+        ARGIN(PMC *pmc_key))
+{
+    ASSERT_ARGS(Parrot_ns_make_namespace_keyed)
+    return internal_ns_keyed(interp, base_ns, pmc_key, INTERN_NS_CREAT);
+}
+
+/*
+
+=item C<PMC * Parrot_ns_make_namespace_keyed_str(PARROT_INTERP, PMC *base_ns,
+STRING *str_key)>
+
+Find, or create if necessary, the namespace relative to the namespace
+C<base_ns> with the string key C<str_key>.  Return the namespace.  Errors
+will result in exceptions.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC *
+Parrot_ns_make_namespace_keyed_str(PARROT_INTERP, ARGIN(PMC *base_ns),
+        ARGIN(STRING *str_key))
+{
+    ASSERT_ARGS(Parrot_ns_make_namespace_keyed_str)
+    return internal_ns_keyed_str(interp, base_ns, str_key, INTERN_NS_CREAT);
+}
+
+/*
+
+=item C<PMC * Parrot_ns_make_namespace_autobase(PARROT_INTERP, PMC *key)>
+
+Find, or create if necessary, a namespace with the key C<key>, which may be a
+String, a Key, or an array of strings. If it is a String, then the lookup is
+relative to the current namespace. Otherwise, it is relative to the current HLL
+root namespace. Return the namespace.  Errors will result in exceptions.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC *
+Parrot_ns_make_namespace_autobase(PARROT_INTERP, ARGIN_NULLOK(PMC *key))
+{
+    ASSERT_ARGS(Parrot_ns_make_namespace_autobase)
+    PMC *base_ns;
+    if (VTABLE_isa(interp, key, CONST_STRING(interp, "String")))
+        base_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
+    else
+        base_ns = VTABLE_get_pmc_keyed_int(interp, interp->HLL_namespace,
+            Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp)));
+    return Parrot_ns_make_namespace_keyed(interp, base_ns, key);
+}
+
+/*
+
+=item C<PMC * Parrot_ns_get_name(PARROT_INTERP, PMC *_namespace)>
+
+Get the name of the namespace, as a ResizableStringArray. For instance, the
+namespace Foo:Bar:Baz would return an RSA with three elements.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC *
+Parrot_ns_get_name(PARROT_INTERP, ARGIN(PMC *_namespace))
+{
+    ASSERT_ARGS(Parrot_ns_get_name)
+    PMC *names;
+    STRING * const get_name = CONST_STRING(interp, "get_name");
+    Parrot_pcc_invoke_method_from_c_args(interp, _namespace, get_name, "->P", &names);
+    return names;
+}
+
+/*
+
+=item C<PMC * Parrot_ns_get_global(PARROT_INTERP, PMC *ns, STRING *globalname)>
+
+Look up the global named C<globalname> in the namespace C<ns>.  Return the
+global, or return PMCNULL if C<ns> is null or if the global is not found.
+
+Parrot_ns_get_global allows a null namespace without throwing an exception; it
+simply returns PMCNULL in that case.
+
+NOTE: At present the use of the {get, set}_global functions is mandatory due
+      to the wacky namespace typing of the default Parrot namespace.
+      Eventually it will be safe to just use the standard hash interface
+      (if desired).
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC *
+Parrot_ns_get_global(PARROT_INTERP, ARGIN_NULLOK(PMC *ns), ARGIN_NULLOK(STRING *globalname))
+{
+    ASSERT_ARGS(Parrot_ns_get_global)
+    if (PMC_IS_NULL(ns))
+        return PMCNULL;
+
+    return (PMC *)VTABLE_get_pointer_keyed_str(interp, ns, globalname);
+}
+
+/*
+
+=item C<void Parrot_ns_set_global(PARROT_INTERP, PMC *ns, STRING *globalname,
+PMC *val)>
+
+Set the global named C<globalname> in the namespace C<ns> to the value C<val>.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+void
+Parrot_ns_set_global(PARROT_INTERP, ARGIN_NULLOK(PMC *ns),
+        ARGIN_NULLOK(STRING *globalname), ARGIN_NULLOK(PMC *val))
+{
+    ASSERT_ARGS(Parrot_ns_set_global)
+    VTABLE_set_pmc_keyed_str(interp, ns, globalname, val);
+}
+
+
+/*
+
+=item C<PMC * Parrot_ns_find_namespace_global(PARROT_INTERP, PMC *ns, STRING
+*globalname)>
+
+Search the namespace PMC C<ns> for an object with name C<globalname>.
+Return the object, or NULL if not found.
+
+TT #1222 - For now this function prefers non-namespaces, it will eventually
+entirely use the untyped interface.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC *
+Parrot_ns_find_namespace_global(PARROT_INTERP,
+        ARGIN_NULLOK(PMC *ns), ARGIN_NULLOK(STRING *globalname))
+{
+    ASSERT_ARGS(Parrot_ns_find_namespace_global)
+    PMC *res;
+
+    if (PMC_IS_NULL(ns))
+        res = PMCNULL;
+    else {
+        /*
+         * TT #1219 - we should be able to use 'get_pmc_keyed' here,
+         * but we can't because Parrot's default namespaces are not
+         * fully typed and there's a pseudo-typed interface that
+         * distinguishes 'get_pmc_keyed' from 'get_pointer_keyed';
+         * the former is for NS and the latter is for non-NS.
+         */
+        res = (PMC *)VTABLE_get_pointer_keyed_str(interp, ns, globalname);
+    }
+
+    return PMC_IS_NULL(res) ? NULL : res;
+}
+
+/*
+
+=item C<PMC * Parrot_ns_find_current_namespace_global(PARROT_INTERP, STRING
+*globalname)>
+
+Finds and returns the data time named C<globalname> in the current namespace.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC *
+Parrot_ns_find_current_namespace_global(PARROT_INTERP, ARGIN_NULLOK(STRING *globalname))
+{
+    ASSERT_ARGS(Parrot_ns_find_current_namespace_global)
+    PMC * const ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
+    return Parrot_ns_find_namespace_global(interp, ns, globalname);
+}
+
+/*
+
+=item C<PMC * Parrot_find_global_s(PARROT_INTERP, STRING *str_key, STRING
+*globalname)>
+
+Search the namespace designated by C<str_key>, or the HLL root if
+C<str_key> is NULL, for an object with name C<globalname>.  Return the
+object, or NULL if not found.
+
+TT #1222 - For now this function prefers non-namespaces, it will eventually
+entirely use the untyped interface.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC *
+Parrot_find_global_s(PARROT_INTERP, ARGIN_NULLOK(STRING *str_key),
+        ARGIN_NULLOK(STRING *globalname))
+{
+    ASSERT_ARGS(Parrot_find_global_s)
+    PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
+    PMC * const ns = Parrot_ns_get_namespace_keyed_str(interp, hll_ns, str_key);
+    return Parrot_ns_find_namespace_global(interp, ns, globalname);
+}
+
+/*
+
+=item C<void Parrot_ns_store_global(PARROT_INTERP, PMC *ns, STRING *globalname,
+PMC *val)>
+
+Store the PMC C<val> into the namespace PMC C<ns> with name C<globalname>. If
+the namespace is null, do nothing.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+void
+Parrot_ns_store_global(PARROT_INTERP, ARGIN_NULLOK(PMC *ns),
+        ARGIN_NULLOK(STRING *globalname), ARGIN_NULLOK(PMC *val))
+{
+    ASSERT_ARGS(Parrot_ns_store_global)
+
+    if (PMC_IS_NULL(ns))
+        return;
+
+    VTABLE_set_pmc_keyed_str(interp, ns, globalname, val);
+}
+
+/*
+
+=item C<void Parrot_store_global_s(PARROT_INTERP, STRING *str_key, STRING
+*globalname, PMC *val)>
+
+Store the PMC C<val> into the namespace designated by C<str_key>, or
+the HLL root if C<str_key> is NULL, with the name C<globalname>.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+void
+Parrot_store_global_s(PARROT_INTERP, ARGIN_NULLOK(STRING *str_key),
+        ARGIN_NULLOK(STRING *globalname), ARGIN_NULLOK(PMC *val))
+{
+    ASSERT_ARGS(Parrot_store_global_s)
+    PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
+    PMC * const ns = Parrot_ns_make_namespace_keyed_str(interp, hll_ns, str_key);
+    Parrot_ns_store_global(interp, ns, globalname, val);
+
+    /* TT #1225 - method cache invalidation should be a namespace function */
+    Parrot_invalidate_method_cache(interp, str_key);
+}
+
+
+/*
+
+=item C<PMC * Parrot_ns_find_global_from_op(PARROT_INTERP, PMC *ns, STRING
+*globalname, void *next)>
+
+If the global exists in the given namespace PMC, return it.  If not, return
+PMCNULL. Throw an exception if a NULL name is passed.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CANNOT_RETURN_NULL
+PMC *
+Parrot_ns_find_global_from_op(PARROT_INTERP, ARGIN(PMC *ns),
+        ARGIN_NULLOK(STRING *globalname), ARGIN_NULLOK(void *next))
+{
+    ASSERT_ARGS(Parrot_ns_find_global_from_op)
+    if (STRING_IS_NULL(globalname))
+        Parrot_ex_throw_from_c_args(interp, next, EXCEPTION_GLOBAL_NOT_FOUND,
+            "Tried to get null global");
+    else {
+        PMC * const res = Parrot_ns_find_namespace_global(interp, ns, globalname);
+        if (!res)
+            return PMCNULL;
+        return res;
+    }
+}
+
+
+/*
+
+=item C<PMC * Parrot_ns_find_named_item(PARROT_INTERP, STRING *name, void
+*next)>
+
+TT #1223 - THIS IS BROKEN - it doesn't walk up the scopes yet
+
+Find the given C<name> in lexicals, then the current namespace, then the HLL
+root namespace, and finally Parrot builtins.  If the name isn't found
+anywhere, return PMCNULL.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+PARROT_WARN_UNUSED_RESULT
+PARROT_CAN_RETURN_NULL
+PMC *
+Parrot_ns_find_named_item(PARROT_INTERP, ARGIN(STRING *name), SHIM(void *next))
+{
+    ASSERT_ARGS(Parrot_ns_find_named_item)
+    PMC * const ctx     = CURRENT_CONTEXT(interp);
+    PMC * const lex_pad = Parrot_find_pad(interp, name, ctx);
+    PMC * g = PMCNULL;
+
+    if (!PMC_IS_NULL(lex_pad)) {
+        g = VTABLE_get_pmc_keyed_str(interp, lex_pad, name);
+
+        /* TT #1223 - walk up the scopes!  duh!! */
+        if (!PMC_IS_NULL(g))
+            return g;
+    }
+
+    g = Parrot_ns_find_current_namespace_global(interp, name);
+    if (!PMC_IS_NULL(g))
+        return g;
+
+    g = Parrot_ns_find_namespace_global(interp, Parrot_get_ctx_HLL_namespace(interp), name);
+    if (!PMC_IS_NULL(g))
+        return g;
+    return PMCNULL;
+}
+
+/*
+
+=item C<void Parrot_ns_store_sub(PARROT_INTERP, PMC *sub_pmc)>
+
+Adds the PMC C<sub> into the current namespace. Adds the sub to a multi of the
+same name if it's defined as a multi.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+void
+Parrot_ns_store_sub(PARROT_INTERP, ARGIN(PMC *sub_pmc))
+{
+    ASSERT_ARGS(Parrot_ns_store_sub)
+    const INTVAL cur_id = Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp));
+
+    PMC *ns;
+    Parrot_Sub_attributes *sub;
+
+    /* PF structures aren't fully constructed yet */
+    Parrot_block_GC_mark(interp);
+
+    /* store relative to HLL namespace */
+    PMC_get_sub(interp, sub_pmc, sub);
+    Parrot_pcc_set_HLL(interp, CURRENT_CONTEXT(interp), sub->HLL_id);
+
+    ns = get_namespace_pmc(interp, sub_pmc);
+
+    /* attach a namespace to the sub for lookups */
+    sub->namespace_stash = ns;
+
+    /* store a :multi sub */
+    if (!PMC_IS_NULL(sub->multi_signature))
+        store_sub_in_multi(interp, sub_pmc, ns);
+
+    /* store other subs (as long as they're not :anon) */
+    else if (!(PObj_get_FLAGS(sub_pmc) & SUB_FLAG_PF_ANON)
+        || sub->vtable_index != -1) {
+        STRING * const ns_entry_name = sub->ns_entry_name;
+        PMC    * const nsname        = sub->namespace_name;
+
+        Parrot_ns_store_global(interp, ns, ns_entry_name, sub_pmc);
+
+        /* TT #1224:
+           TEMPORARY HACK - cache invalidation should be a namespace function
+         */
+        if (!PMC_IS_NULL(nsname)) {
+            STRING * const nsname_s = VTABLE_get_string(interp, nsname);
+            Parrot_invalidate_method_cache(interp, nsname_s);
+        }
+    }
+
+    /* restore HLL_id */
+    Parrot_pcc_set_HLL(interp, CURRENT_CONTEXT(interp), cur_id);
+    Parrot_unblock_GC_mark(interp);
+}
+
+/*
+
+=back
+
+=head1 SEE ALSO
+
+F<include/parrot/namespace.h>
+
+=cut
+
+*/
+
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */

Modified: branches/gsoc_past_optimization/src/nci/core_thunks.c
==============================================================================
--- branches/gsoc_past_optimization/src/nci/core_thunks.c	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/nci/core_thunks.c	Wed Jun 23 00:34:17 2010	(r47770)
@@ -125,7 +125,7 @@
     char *t_1; STRING *ts_1;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (PMC *)(*fn_pointer)(interp, t_1);
@@ -868,7 +868,7 @@
     char *t_2; STRING *ts_2;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (int)(*fn_pointer)(interp, t_1, t_2);

Modified: branches/gsoc_past_optimization/src/nci/extra_thunks.c
==============================================================================
--- branches/gsoc_past_optimization/src/nci/extra_thunks.c	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/nci/extra_thunks.c	Wed Jun 23 00:34:17 2010	(r47770)
@@ -195,7 +195,7 @@
     PMC *t_1;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_0 = STRING_IS_NULL(ts_0) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_0);
     GETATTR_NCI_orig_func(interp, nci, 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));
@@ -296,7 +296,7 @@
     INTVAL t_3;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -346,7 +346,7 @@
     char *t_1; STRING *ts_1;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -392,7 +392,7 @@
     char *t_2; STRING *ts_2;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -417,7 +417,7 @@
     char *t_2; STRING *ts_2;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -445,7 +445,7 @@
     char *t_6; STRING *ts_6;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);t_6 = STRING_IS_NULL(ts_6) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_6);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -476,7 +476,7 @@
     PMC * t_4;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (void *)(*fn_pointer)(interp, t_1, t_2, t_3, t_4);
@@ -507,7 +507,7 @@
     INTVAL t_3;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -585,7 +585,7 @@
     char *t_1; STRING *ts_1;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -608,7 +608,7 @@
     char *t_2; STRING *ts_2;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -1369,7 +1369,7 @@
     INTVAL t_3;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -1424,7 +1424,7 @@
     INTVAL t_3;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -1452,7 +1452,7 @@
     INTVAL t_2;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -1481,7 +1481,7 @@
     INTVAL t_4;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);t_3 = STRING_IS_NULL(ts_3) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_3);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -1642,7 +1642,7 @@
     char *t_1; STRING *ts_1;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_0 = STRING_IS_NULL(ts_0) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_0);t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (char *)(*fn_pointer)(t_0, t_1);
@@ -1666,7 +1666,7 @@
     char *t_2; STRING *ts_2;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (INTVAL)(*fn_pointer)(interp, t_1, t_2);
@@ -2027,7 +2027,7 @@
     INTVAL t_3;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (long)(*fn_pointer)(t_0, t_1, t_2, t_3);
@@ -2223,7 +2223,7 @@
     char *t_5; STRING *ts_5;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);t_3 = STRING_IS_NULL(ts_3) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_3);t_4 = STRING_IS_NULL(ts_4) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_4);t_5 = STRING_IS_NULL(ts_5) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_5);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -2252,7 +2252,7 @@
     char *t_3; STRING *ts_3;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);t_3 = STRING_IS_NULL(ts_3) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_3);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -2284,7 +2284,7 @@
     INTVAL t_7;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);t_3 = STRING_IS_NULL(ts_3) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_3);t_4 = STRING_IS_NULL(ts_4) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_4);t_6 = STRING_IS_NULL(ts_6) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_6);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -2317,7 +2317,7 @@
     char *t_1; STRING *ts_1;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -2341,7 +2341,7 @@
     INTVAL t_2;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -2431,7 +2431,7 @@
     char *t_1; STRING *ts_1;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -2460,7 +2460,7 @@
     char *t_2; STRING *ts_2;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -2489,7 +2489,7 @@
     char *t_2; STRING *ts_2;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -2542,7 +2542,7 @@
     INTVAL t_2;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_0 = STRING_IS_NULL(ts_0) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_0);t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (long)(*fn_pointer)(t_0, t_1, t_2);
@@ -2568,7 +2568,7 @@
     INTVAL t_3;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -2592,7 +2592,7 @@
     char *t_0; STRING *ts_0;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_0 = STRING_IS_NULL(ts_0) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_0);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
      (*fn_pointer)(t_0);
@@ -2621,7 +2621,7 @@
     INTVAL t_7;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);t_3 = STRING_IS_NULL(ts_3) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_3);t_4 = STRING_IS_NULL(ts_4) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_4);t_6 = STRING_IS_NULL(ts_6) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_6);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -2658,7 +2658,7 @@
     PMC * t_4;
     UNUSED(return_data); /* Potentially unused, at least */
     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);
+    t_0 = STRING_IS_NULL(ts_0) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_0);t_2 = STRING_IS_NULL(ts_2) ? (char *) NULL : Parrot_str_to_cstring(interp, ts_2);i_3 = VTABLE_get_integer(interp, t_3);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (void *)(*fn_pointer)(t_0, t_1, &t_2, &i_3, t_4);
@@ -2692,7 +2692,7 @@
     PMC * t_4;
     UNUSED(return_data); /* Potentially unused, at least */
     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);
+    t_0 = STRING_IS_NULL(ts_0) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_0);i_3 = VTABLE_get_integer(interp, t_3);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -2728,7 +2728,7 @@
     INTVAL t_7;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -2761,7 +2761,7 @@
     INTVAL t_5;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_0 = STRING_IS_NULL(ts_0) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_0);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -2795,7 +2795,7 @@
     INTVAL t_7;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -2870,7 +2870,7 @@
     PMC *t_4;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);
     GETATTR_NCI_orig_func(interp, nci, 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));
@@ -2906,7 +2906,7 @@
     INTVAL t_6;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -3052,7 +3052,7 @@
     INTVAL t_2;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -3108,7 +3108,7 @@
     INTVAL t_3;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -3138,7 +3138,7 @@
     INTVAL t_1;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_0 = STRING_IS_NULL(ts_0) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_0);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (void *)(*fn_pointer)(t_0, t_1);
@@ -3167,7 +3167,7 @@
     PMC *t_2;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);
     GETATTR_NCI_orig_func(interp, nci, 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));
@@ -3197,7 +3197,7 @@
     PMC *t_3; int i_3;
     UNUSED(return_data); /* Potentially unused, at least */
     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);
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);i_2 = VTABLE_get_integer(interp, t_2);i_3 = VTABLE_get_integer(interp, t_3);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -3643,7 +3643,7 @@
     char *t_2; STRING *ts_2;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (int)(*fn_pointer)(t_0, t_1, t_2);
@@ -3669,7 +3669,7 @@
     INTVAL t_3;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (int)(*fn_pointer)(t_0, t_1, t_2, t_3);
@@ -3722,7 +3722,7 @@
     INTVAL t_2;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (int)(*fn_pointer)(t_0, t_1, t_2);
@@ -4253,7 +4253,7 @@
     char *t_3; STRING *ts_3;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_3 = STRING_IS_NULL(ts_3) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_3);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -4281,7 +4281,7 @@
     INTVAL t_4;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_3 = STRING_IS_NULL(ts_3) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_3);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -4615,7 +4615,7 @@
     INTVAL t_2;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -4641,7 +4641,7 @@
     INTVAL t_3;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -4813,7 +4813,7 @@
     char *t_0; STRING *ts_0;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_0 = STRING_IS_NULL(ts_0) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_0);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (int)(*fn_pointer)(t_0);
@@ -4835,7 +4835,7 @@
     INTVAL t_1;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_0 = STRING_IS_NULL(ts_0) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_0);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (int)(*fn_pointer)(t_0, t_1);
@@ -5097,7 +5097,7 @@
     char *t_0; STRING *ts_0;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_0 = STRING_IS_NULL(ts_0) ? (char *) NULL : Parrot_str_to_cstring(interp, ts_0);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (void *)(*fn_pointer)(&t_0);
@@ -5149,7 +5149,7 @@
     char *t_1; STRING *ts_1;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (void *)(*fn_pointer)(interp, t_1);
@@ -5402,7 +5402,7 @@
     char *t_0; STRING *ts_0;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_0 = STRING_IS_NULL(ts_0) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_0);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (void *)(*fn_pointer)(t_0);
@@ -5430,7 +5430,7 @@
     PMC *t_2;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_0 = STRING_IS_NULL(ts_0) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_0);
     GETATTR_NCI_orig_func(interp, nci, 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));
@@ -5464,7 +5464,7 @@
     char *t_6; STRING *ts_6;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_0 = STRING_IS_NULL(ts_0) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_0);t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);t_3 = STRING_IS_NULL(ts_3) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_3);t_4 = STRING_IS_NULL(ts_4) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_4);t_5 = STRING_IS_NULL(ts_5) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_5);t_6 = STRING_IS_NULL(ts_6) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_6);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -5636,7 +5636,7 @@
     char *t_0; STRING *ts_0;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_0 = STRING_IS_NULL(ts_0) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_0);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (char *)(*fn_pointer)(t_0);
@@ -5661,7 +5661,7 @@
     PMC *t_2; long i_2;
     UNUSED(return_data); /* Potentially unused, at least */
     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);
+    t_0 = STRING_IS_NULL(ts_0) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_0);i_2 = VTABLE_get_integer(interp, t_2);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (char *)(*fn_pointer)(t_0, t_1, &i_2);
@@ -5687,7 +5687,7 @@
     PMC *t_1; long i_1;
     UNUSED(return_data); /* Potentially unused, at least */
     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);
+    t_0 = STRING_IS_NULL(ts_0) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_0);i_1 = VTABLE_get_integer(interp, t_1);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (char *)(*fn_pointer)(t_0, &i_1);
@@ -5851,7 +5851,7 @@
     char *t_0; STRING *ts_0;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_0 = STRING_IS_NULL(ts_0) ? (char *) NULL : Parrot_str_to_cstring(interp, ts_0);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (char *)(*fn_pointer)(&t_0);
@@ -6062,7 +6062,7 @@
     char *t_2; STRING *ts_2;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (int)(*fn_pointer)(interp, t_1, t_2);
@@ -6085,7 +6085,7 @@
     char *t_1; STRING *ts_1;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (int)(*fn_pointer)(interp, t_1);
@@ -6385,7 +6385,7 @@
     char *t_2; STRING *ts_2;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);
     GETATTR_NCI_orig_func(interp, nci, 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);
@@ -6608,7 +6608,7 @@
     PMC *t_1; void *v_1;
     UNUSED(return_data); /* Potentially unused, at least */
     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);
+    t_0 = STRING_IS_NULL(ts_0) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_0);v_1 = VTABLE_get_pointer(interp, t_1);
     GETATTR_NCI_orig_func(interp, nci, orig_func);
     fn_pointer = (func_t)D2FPTR(orig_func);
     return_data =  (int)(*fn_pointer)(t_0, &v_1);
@@ -6634,7 +6634,7 @@
     PMC *t_4;
     UNUSED(return_data); /* Potentially unused, at least */
     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);
+    t_1 = STRING_IS_NULL(ts_1) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_1);v_3 = VTABLE_get_pointer(interp, t_3);
     GETATTR_NCI_orig_func(interp, nci, 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));
@@ -6688,7 +6688,7 @@
     INTVAL t_4;
     UNUSED(return_data); /* Potentially unused, at least */
     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;
+    t_2 = STRING_IS_NULL(ts_2) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_2);
     GETATTR_NCI_orig_func(interp, nci, 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);

Modified: branches/gsoc_past_optimization/src/oo.c
==============================================================================
--- branches/gsoc_past_optimization/src/oo.c	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/oo.c	Wed Jun 23 00:34:17 2010	(r47770)
@@ -190,7 +190,7 @@
                 PMC * const hll_ns = VTABLE_get_pmc_keyed_int(interp,
                                         interp->HLL_namespace,
                                         Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp)));
-                PMC * const ns     = Parrot_get_namespace_keyed(interp,
+                PMC * const ns     = Parrot_ns_get_namespace_keyed(interp,
                                         hll_ns, key);
 
                 if (!PMC_IS_NULL(ns))
@@ -334,9 +334,9 @@
         return type_class;
     }
     else {
-        PMC * const parrot_hll = Parrot_get_namespace_keyed_str(interp, interp->root_namespace, CONST_STRING(interp, "parrot"));
+        PMC * const parrot_hll = Parrot_ns_get_namespace_keyed_str(interp, interp->root_namespace, CONST_STRING(interp, "parrot"));
         PMC * const pmc_ns =
-            Parrot_make_namespace_keyed_str(interp, parrot_hll,
+            Parrot_ns_make_namespace_keyed_str(interp, parrot_hll,
                 interp->vtables[type]->whoami);
         PMC * proxy = VTABLE_get_class(interp, pmc_ns);
 
@@ -375,7 +375,7 @@
         /* First check in current HLL namespace */
         PMC * const hll_ns = VTABLE_get_pmc_keyed_int(interp, interp->HLL_namespace,
                                Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp)));
-        PMC * const ns     = Parrot_get_namespace_keyed_str(interp, hll_ns, name);
+        PMC * const ns     = Parrot_ns_get_namespace_keyed_str(interp, hll_ns, name);
         PMC * const _class = PMC_IS_NULL(ns)
                            ? PMCNULL : VTABLE_get_class(interp, ns);
 

Modified: branches/gsoc_past_optimization/src/ops/core.ops
==============================================================================
--- branches/gsoc_past_optimization/src/ops/core.ops	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/ops/core.ops	Wed Jun 23 00:34:17 2010	(r47770)
@@ -542,6 +542,7 @@
             PARROT_ERRORS_RESULT_COUNT_FLAG);
 
     argc = VTABLE_elements(interp, signature);
+    Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), PMCNULL);
     goto OFFSET(argc + 2);
 }
 

Modified: branches/gsoc_past_optimization/src/ops/core_ops.c
==============================================================================
--- branches/gsoc_past_optimization/src/ops/core_ops.c	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/ops/core_ops.c	Wed Jun 23 00:34:17 2010	(r47770)
@@ -14181,7 +14181,7 @@
 opcode_t *
 Parrot_check_events(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    opcode_t * const next =cur_opcode + 1;
+    opcode_t * const next = cur_opcode + 1;
     Parrot_cx_check_tasks(interp, interp->scheduler);return (opcode_t *)next;   /* force this being a branch op */
 }
 
@@ -14243,7 +14243,7 @@
 Parrot_local_branch_p_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     INTVAL return_addr;
-    opcode_t * const dest =cur_opcode + 3;
+    opcode_t * const dest = cur_opcode + 3;
 
     if (PMC_IS_NULL(PREG(1)) || PREG(1)->vtable->base_type != enum_class_ResizableIntegerArray) {
         opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, dest,
@@ -14259,7 +14259,7 @@
 Parrot_local_branch_p_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     INTVAL return_addr;
-    opcode_t * const dest =cur_opcode + 3;
+    opcode_t * const dest = cur_opcode + 3;
 
     if (PMC_IS_NULL(PREG(1)) || PREG(1)->vtable->base_type != enum_class_ResizableIntegerArray) {
         opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, dest,
@@ -14276,7 +14276,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     INTVAL return_addr;
     opcode_t *next;
-    opcode_t * const dest =cur_opcode + 2;
+    opcode_t * const dest = cur_opcode + 2;
 
     if (PMC_IS_NULL(PREG(1)) || PREG(1)->vtable->base_type != enum_class_ResizableIntegerArray) {
         opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, dest,
@@ -14375,7 +14375,7 @@
 Parrot_invokecc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const p     = PREG(1);
-    opcode_t *dest         =cur_opcode + 2;
+    opcode_t *dest         = cur_opcode + 2;
     PMC      * const signature = Parrot_pcc_get_signature(interp,
                                     CURRENT_CONTEXT(interp));
 
@@ -14390,7 +14390,7 @@
 opcode_t *
 Parrot_invoke_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    opcode_t   *dest       =cur_opcode + 3;
+    opcode_t   *dest       = cur_opcode + 3;
     PMC * const p          = PREG(1);
     PMC * const signature  = Parrot_pcc_get_signature(interp,
                                     CURRENT_CONTEXT(interp));
@@ -14407,7 +14407,7 @@
 opcode_t *
 Parrot_yield(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    opcode_t   *dest =cur_opcode + 1;
+    opcode_t   *dest = cur_opcode + 1;
     PMC * const p    = Parrot_pcc_get_sub(interp, CURRENT_CONTEXT(interp));
 
     VTABLE_increment(interp, p);
@@ -14418,7 +14418,7 @@
 Parrot_tailcall_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const p               = PREG(1);
-    opcode_t   *dest            =cur_opcode + 2;
+    opcode_t   *dest            = cur_opcode + 2;
     PMC * const ctx             = CURRENT_CONTEXT(interp);
     PMC * const parent_ctx      = Parrot_pcc_get_caller_ctx(interp, ctx);
     PMC * const this_call_sig   = Parrot_pcc_get_signature(interp, ctx);
@@ -14435,7 +14435,7 @@
 Parrot_returncc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const p = Parrot_pcc_get_continuation(interp, CURRENT_CONTEXT(interp));
-    opcode_t * const dest = VTABLE_invoke(interp, p,cur_opcode + 1);return (opcode_t *)dest;
+    opcode_t * const dest = VTABLE_invoke(interp, p, cur_opcode + 1);return (opcode_t *)dest;
 }
 
 opcode_t *
@@ -14516,7 +14516,8 @@
     Parrot_pcc_fill_params_from_op(interp, call_object, signature, raw_params,
             PARROT_ERRORS_RESULT_COUNT_FLAG);
 
-    argc = VTABLE_elements(interp, signature);return (opcode_t *)cur_opcode + argc + 2;
+    argc = VTABLE_elements(interp, signature);
+    Parrot_pcc_set_signature(interp, CURRENT_CONTEXT(interp), PMCNULL);return (opcode_t *)cur_opcode + argc + 2;
 }
 
 opcode_t *
@@ -14628,7 +14629,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * except = PREG(1);
     opcode_t *dest;
-    opcode_t * const ret    =cur_opcode + 2;
+    opcode_t * const ret    = cur_opcode + 2;
     PMC      * const resume = pmc_new(interp, enum_class_Continuation);
 
     VTABLE_set_pointer(interp, resume, ret);
@@ -14660,7 +14661,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     opcode_t * dest;
     if (PMC_IS_NULL(PREG(1)) || PREG(1)->vtable->base_type != enum_class_Exception) {
-        opcode_t * const ret    =cur_opcode + 2;
+        opcode_t * const ret    = cur_opcode + 2;
         PMC      * const except = Parrot_ex_build_exception(interp, EXCEPT_fatal,
                 EXCEPTION_UNIMPLEMENTED,
                 Parrot_str_new_constant(interp, "Not a throwable object"));
@@ -14681,7 +14682,7 @@
 Parrot_die_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     opcode_t        *dest;
-    opcode_t * const ret       =cur_opcode + 2;
+    opcode_t * const ret       = cur_opcode + 2;
     PMC      * const resume    = pmc_new(interp, enum_class_Continuation);
     PMC      * const exception = Parrot_ex_build_exception(interp, EXCEPT_error,
                                     CONTROL_ERROR, SREG(1));
@@ -14697,7 +14698,7 @@
 Parrot_die_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     opcode_t        *dest;
-    opcode_t * const ret       =cur_opcode + 2;
+    opcode_t * const ret       = cur_opcode + 2;
     PMC      * const resume    = pmc_new(interp, enum_class_Continuation);
     PMC      * const exception = Parrot_ex_build_exception(interp, EXCEPT_error,
                                     CONTROL_ERROR, CONST(1)->u.string);
@@ -14713,7 +14714,7 @@
 Parrot_die_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     opcode_t        *dest;
-    opcode_t * const ret       =cur_opcode + 2;
+    opcode_t * const ret       = cur_opcode + 2;
     PMC      * const resume    = pmc_new(interp, enum_class_Continuation);
     STRING   * const msg       = PMC_IS_NULL(PREG(1)) ? NULL : VTABLE_get_string(interp, PREG(1));
     PMC      * const exception =
@@ -14730,7 +14731,7 @@
 Parrot_die_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     opcode_t        *dest;
-    opcode_t * const ret       =cur_opcode + 2;
+    opcode_t * const ret       = cur_opcode + 2;
     PMC      * const resume    = pmc_new(interp, enum_class_Continuation);
     STRING   * const msg       = PMC_IS_NULL(CONST(1)->u.key) ? NULL : VTABLE_get_string(interp, CONST(1)->u.key);
     PMC      * const exception =
@@ -14749,7 +14750,7 @@
     if (IREG(1) == EXCEPT_doomed)
         _exit(IREG(2));
     else {
-        opcode_t * const ret       =cur_opcode + 3;
+        opcode_t * const ret       = cur_opcode + 3;
         PMC      * const exception = Parrot_ex_build_exception(interp, IREG(1), IREG(2), NULL);
         opcode_t * const dest      = Parrot_ex_throw_from_op(interp, exception, ret);return (opcode_t *)dest;
     }
@@ -14761,7 +14762,7 @@
     if (cur_opcode[1] == EXCEPT_doomed)
         _exit(IREG(2));
     else {
-        opcode_t * const ret       =cur_opcode + 3;
+        opcode_t * const ret       = cur_opcode + 3;
         PMC      * const exception = Parrot_ex_build_exception(interp, cur_opcode[1], IREG(2), NULL);
         opcode_t * const dest      = Parrot_ex_throw_from_op(interp, exception, ret);return (opcode_t *)dest;
     }
@@ -14773,7 +14774,7 @@
     if (IREG(1) == EXCEPT_doomed)
         _exit(cur_opcode[2]);
     else {
-        opcode_t * const ret       =cur_opcode + 3;
+        opcode_t * const ret       = cur_opcode + 3;
         PMC      * const exception = Parrot_ex_build_exception(interp, IREG(1), cur_opcode[2], NULL);
         opcode_t * const dest      = Parrot_ex_throw_from_op(interp, exception, ret);return (opcode_t *)dest;
     }
@@ -14785,7 +14786,7 @@
     if (cur_opcode[1] == EXCEPT_doomed)
         _exit(cur_opcode[2]);
     else {
-        opcode_t * const ret       =cur_opcode + 3;
+        opcode_t * const ret       = cur_opcode + 3;
         PMC      * const exception = Parrot_ex_build_exception(interp, cur_opcode[1], cur_opcode[2], NULL);
         opcode_t * const dest      = Parrot_ex_throw_from_op(interp, exception, ret);return (opcode_t *)dest;
     }
@@ -14795,9 +14796,9 @@
 Parrot_exit_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     opcode_t        *dest;
-    opcode_t * const ret       =cur_opcode + 2;
+    opcode_t * const ret       = cur_opcode + 2;
     PMC      * const resume    = pmc_new(interp, enum_class_Continuation);
-    PMC      * const exception = Parrot_ex_build_exception(interp, EXCEPT_exit, 
+    PMC      * const exception = Parrot_ex_build_exception(interp, EXCEPT_exit,
                                                            CONTROL_EXIT, NULL);
 
     VTABLE_set_pointer(interp, resume, ret);
@@ -14813,9 +14814,9 @@
 Parrot_exit_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     opcode_t        *dest;
-    opcode_t * const ret       =cur_opcode + 2;
+    opcode_t * const ret       = cur_opcode + 2;
     PMC      * const resume    = pmc_new(interp, enum_class_Continuation);
-    PMC      * const exception = Parrot_ex_build_exception(interp, EXCEPT_exit, 
+    PMC      * const exception = Parrot_ex_build_exception(interp, EXCEPT_exit,
                                                            CONTROL_EXIT, NULL);
 
     VTABLE_set_pointer(interp, resume, ret);
@@ -15362,7 +15363,7 @@
 Parrot_annotations_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     if (interp->code->annotations) {
-        const opcode_t cur_pos = (cur_opcode + 2) - interp->code->base.data;
+        const opcode_t cur_pos = ( cur_opcode + 2) - interp->code->base.data;
         PREG(1) = PackFile_Annotations_lookup(interp, interp->code->annotations,
                 cur_pos, NULL);
     }
@@ -15376,7 +15377,7 @@
 Parrot_annotations_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     if (interp->code->annotations) {
-        const opcode_t cur_pos = (cur_opcode + 3) - interp->code->base.data;
+        const opcode_t cur_pos = ( cur_opcode + 3) - interp->code->base.data;
         PREG(1) = PackFile_Annotations_lookup(interp, interp->code->annotations,
                 cur_pos, SREG(2));
     }
@@ -15390,7 +15391,7 @@
 Parrot_annotations_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     if (interp->code->annotations) {
-        const opcode_t cur_pos = (cur_opcode + 3) - interp->code->base.data;
+        const opcode_t cur_pos = ( cur_opcode + 3) - interp->code->base.data;
         PREG(1) = PackFile_Annotations_lookup(interp, interp->code->annotations,
                 cur_pos, CONST(2)->u.string);
     }
@@ -17374,7 +17375,7 @@
     PMC * const p = PREG(1);
 
     if (PMC_IS_NULL(p)) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 2,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 2,
              EXCEPTION_UNEXPECTED_NULL,
             "Null PMC in say");return (opcode_t *)handler;
     }
@@ -17684,7 +17685,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     INTVAL den = IREG(2);
     if (den == 0) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 3,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -17697,7 +17698,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     INTVAL den = cur_opcode[2];
     if (den == 0) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 3,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -17710,7 +17711,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     FLOATVAL den = NREG(2);
     if (FLOAT_IS_ZERO(den)) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 3,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -17723,7 +17724,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     FLOATVAL den = CONST(2)->u.number;
     if (FLOAT_IS_ZERO(den)) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 3,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -17771,7 +17772,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     INTVAL den = IREG(3);
     if (den == 0) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -17784,7 +17785,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     INTVAL den = IREG(3);
     if (den == 0) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -17797,7 +17798,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     INTVAL den = cur_opcode[3];
     if (den == 0) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -17810,7 +17811,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     INTVAL den = cur_opcode[3];
     if (den == 0) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -17823,7 +17824,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     FLOATVAL den = NREG(3);
     if (FLOAT_IS_ZERO(den)) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -17836,7 +17837,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     FLOATVAL den = NREG(3);
     if (FLOAT_IS_ZERO(den)) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -17849,7 +17850,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     FLOATVAL den = CONST(3)->u.number;
     if (FLOAT_IS_ZERO(den)) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -17862,7 +17863,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     FLOATVAL den = CONST(3)->u.number;
     if (FLOAT_IS_ZERO(den)) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -17912,7 +17913,7 @@
     FLOATVAL f;
 
     if (den == 0) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 3,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -17929,7 +17930,7 @@
     FLOATVAL f;
 
     if (den == 0) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 3,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -17944,7 +17945,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     FLOATVAL den = NREG(2);
     if (FLOAT_IS_ZERO(den)) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 3,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -17957,7 +17958,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     FLOATVAL den = CONST(2)->u.number;
     if (FLOAT_IS_ZERO(den)) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 3,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -18007,7 +18008,7 @@
     FLOATVAL f;
 
     if (den == 0) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -18024,7 +18025,7 @@
     FLOATVAL f;
 
     if (den == 0) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -18041,7 +18042,7 @@
     FLOATVAL f;
 
     if (den == 0) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -18056,7 +18057,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     FLOATVAL den = NREG(3);
     if (FLOAT_IS_ZERO(den)) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -18069,7 +18070,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     FLOATVAL den = NREG(3);
     if (FLOAT_IS_ZERO(den)) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -18082,7 +18083,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     FLOATVAL den = CONST(3)->u.number;
     if (FLOAT_IS_ZERO(den)) {
-        opcode_t *handler = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *handler = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_DIV_BY_ZERO,
             "Divide by zero");return (opcode_t *)handler;
     }
@@ -18664,7 +18665,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const object     = PREG(1);
     STRING   * const meth       = SREG(2);
-    opcode_t * const next       =cur_opcode + 3;
+    opcode_t * const next       = cur_opcode + 3;
 
     PMC      * const method_pmc = VTABLE_find_method(interp, object, meth);
     opcode_t *dest              = NULL;
@@ -18700,7 +18701,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const object     = PREG(1);
     STRING   * const meth       = CONST(2)->u.string;
-    opcode_t * const next       =cur_opcode + 3;
+    opcode_t * const next       = cur_opcode + 3;
 
     PMC      * const method_pmc = VTABLE_find_method(interp, object, meth);
     opcode_t *dest              = NULL;
@@ -18735,7 +18736,7 @@
 Parrot_callmethodcc_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     opcode_t        *dest;
-    opcode_t * const next  =cur_opcode + 3;
+    opcode_t * const next  = cur_opcode + 3;
     PMC      *       signature  = Parrot_pcc_get_signature(interp,
                                     CURRENT_CONTEXT(interp));
 
@@ -18752,7 +18753,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const object     = PREG(1);
     STRING   * const meth       = SREG(2);
-    opcode_t * const next       =cur_opcode + 4;
+    opcode_t * const next       = cur_opcode + 4;
 
     PMC      * const method_pmc = VTABLE_find_method(interp, object, meth);
     opcode_t *dest              = NULL;
@@ -18779,7 +18780,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const object     = PREG(1);
     STRING   * const meth       = CONST(2)->u.string;
-    opcode_t * const next       =cur_opcode + 4;
+    opcode_t * const next       = cur_opcode + 4;
 
     PMC      * const method_pmc = VTABLE_find_method(interp, object, meth);
     opcode_t *dest              = NULL;
@@ -18806,7 +18807,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const object     = PREG(1);
     PMC      * const method_pmc = PREG(2);
-    opcode_t * const next       =cur_opcode + 4;
+    opcode_t * const next       = cur_opcode + 4;
 
     opcode_t *dest;
     PMC      *       signature  = Parrot_pcc_get_signature(interp,
@@ -18823,7 +18824,7 @@
 opcode_t *
 Parrot_tailcallmethod_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    opcode_t * const next       =cur_opcode + 3;
+    opcode_t * const next       = cur_opcode + 3;
     PMC      * const object     = PREG(1);
     STRING   * const meth       = SREG(2);
     PMC      * const method_pmc = VTABLE_find_method(interp, object, meth);
@@ -18849,7 +18850,7 @@
 opcode_t *
 Parrot_tailcallmethod_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    opcode_t * const next       =cur_opcode + 3;
+    opcode_t * const next       = cur_opcode + 3;
     PMC      * const object     = PREG(1);
     STRING   * const meth       = CONST(2)->u.string;
     PMC      * const method_pmc = VTABLE_find_method(interp, object, meth);
@@ -18875,7 +18876,7 @@
 opcode_t *
 Parrot_tailcallmethod_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    opcode_t * const next       =cur_opcode + 3;
+    opcode_t * const next       = cur_opcode + 3;
     PMC      * const object     = PREG(1);
     PMC      * const method_pmc = PREG(2);
 
@@ -19011,7 +19012,7 @@
 Parrot_subclass_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const parent_class = Parrot_oo_get_class(interp, PREG(2));
-    opcode_t * const next         =cur_opcode + 3;
+    opcode_t * const next         = cur_opcode + 3;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -19026,7 +19027,7 @@
 Parrot_subclass_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
-    opcode_t * const next         =cur_opcode + 3;
+    opcode_t * const next         = cur_opcode + 3;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -19041,7 +19042,7 @@
 Parrot_subclass_p_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const parent_class = Parrot_oo_get_class(interp, PREG(2));
-    opcode_t * const next         =cur_opcode + 4;
+    opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t * handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -19056,7 +19057,7 @@
 Parrot_subclass_p_pc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
-    opcode_t * const next         =cur_opcode + 4;
+    opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t * handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -19071,7 +19072,7 @@
 Parrot_subclass_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const parent_class = Parrot_oo_get_class(interp, PREG(2));
-    opcode_t * const next         =cur_opcode + 4;
+    opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t * handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -19086,7 +19087,7 @@
 Parrot_subclass_p_pc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
-    opcode_t * const next         =cur_opcode + 4;
+    opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t * handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -19101,7 +19102,7 @@
 Parrot_subclass_p_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const parent_class = Parrot_oo_get_class(interp, PREG(2));
-    opcode_t * const next         =cur_opcode + 4;
+    opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -19116,7 +19117,7 @@
 Parrot_subclass_p_pc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
-    opcode_t * const next         =cur_opcode + 4;
+    opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -19131,7 +19132,7 @@
 Parrot_subclass_p_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const parent_class = Parrot_oo_get_class(interp, PREG(2));
-    opcode_t * const next         =cur_opcode + 4;
+    opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -19146,7 +19147,7 @@
 Parrot_subclass_p_pc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const parent_class = Parrot_oo_get_class(interp, CONST(2)->u.key);
-    opcode_t * const next         =cur_opcode + 4;
+    opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -19161,7 +19162,7 @@
 Parrot_subclass_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, SREG(2));
-    opcode_t * const next         =cur_opcode + 3;
+    opcode_t * const next         = cur_opcode + 3;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -19177,7 +19178,7 @@
 Parrot_subclass_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
-    opcode_t * const next         =cur_opcode + 3;
+    opcode_t * const next         = cur_opcode + 3;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -19193,7 +19194,7 @@
 Parrot_subclass_p_s_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, SREG(2));
-    opcode_t * const next         =cur_opcode + 4;
+    opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -19209,7 +19210,7 @@
 Parrot_subclass_p_sc_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
-    opcode_t * const next         =cur_opcode + 4;
+    opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -19225,7 +19226,7 @@
 Parrot_subclass_p_s_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, SREG(2));
-    opcode_t * const next         =cur_opcode + 4;
+    opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -19241,7 +19242,7 @@
 Parrot_subclass_p_sc_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
-    opcode_t * const next         =cur_opcode + 4;
+    opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -19257,7 +19258,7 @@
 Parrot_subclass_p_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, SREG(2));
-    opcode_t * const next         =cur_opcode + 4;
+    opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -19273,7 +19274,7 @@
 Parrot_subclass_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
-    opcode_t * const next         =cur_opcode + 4;
+    opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -19289,7 +19290,7 @@
 Parrot_subclass_p_s_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, SREG(2));
-    opcode_t * const next         =cur_opcode + 4;
+    opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -19305,7 +19306,7 @@
 Parrot_subclass_p_sc_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC      * const parent_class = Parrot_oo_get_class_str(interp, CONST(2)->u.string);
-    opcode_t * const next         =cur_opcode + 4;
+    opcode_t * const next         = cur_opcode + 4;
 
     if (PMC_IS_NULL(parent_class)) {
         opcode_t *handler = Parrot_ex_throw_from_op_args(interp, next,
@@ -19558,7 +19559,7 @@
     else {
         const INTVAL type = Parrot_pmc_get_type_str(interp, name);
         if (type <= 0) {
-            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 3,
+            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", name);return (opcode_t *)dest;
         }
@@ -19580,7 +19581,7 @@
     else {
         const INTVAL type = Parrot_pmc_get_type_str(interp, name);
         if (type <= 0) {
-            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 3,
+            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", name);return (opcode_t *)dest;
         }
@@ -19602,7 +19603,7 @@
     else {
         const INTVAL type = Parrot_pmc_get_type_str(interp, name);
         if (type <= 0) {
-            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", name);return (opcode_t *)dest;
         }
@@ -19624,7 +19625,7 @@
     else {
         const INTVAL type = Parrot_pmc_get_type_str(interp, name);
         if (type <= 0) {
-            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", name);return (opcode_t *)dest;
         }
@@ -19646,7 +19647,7 @@
     else {
         const INTVAL type = Parrot_pmc_get_type_str(interp, name);
         if (type <= 0) {
-            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", name);return (opcode_t *)dest;
         }
@@ -19668,7 +19669,7 @@
     else {
         const INTVAL type = Parrot_pmc_get_type_str(interp, name);
         if (type <= 0) {
-            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", name);return (opcode_t *)dest;
         }
@@ -19688,7 +19689,7 @@
     else {
         const INTVAL type = Parrot_pmc_get_type(interp, name_key);
         if (type <= 0) {
-            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 3,
+            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));return (opcode_t *)dest;
         }
@@ -19708,7 +19709,7 @@
     else {
         const INTVAL type = Parrot_pmc_get_type(interp, name_key);
         if (type <= 0) {
-            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 3,
+            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));return (opcode_t *)dest;
         }
@@ -19728,7 +19729,7 @@
     else {
         const INTVAL type = Parrot_pmc_get_type(interp, name_key);
         if (type <= 0) {
-            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));return (opcode_t *)dest;
         }
@@ -19748,7 +19749,7 @@
     else {
         const INTVAL type = Parrot_pmc_get_type(interp, name_key);
         if (type <= 0) {
-            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));return (opcode_t *)dest;
         }
@@ -19768,7 +19769,7 @@
     else {
         const INTVAL type = Parrot_pmc_get_type(interp, name_key);
         if (type <= 0) {
-            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));return (opcode_t *)dest;
         }
@@ -19788,7 +19789,7 @@
     else {
         const INTVAL type = Parrot_pmc_get_type(interp, name_key);
         if (type <= 0) {
-            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+            opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));return (opcode_t *)dest;
         }
@@ -19802,7 +19803,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const key      = PREG(2);
     PMC * const root_ns  = interp->root_namespace;
-    PMC * const ns       = Parrot_get_namespace_keyed(interp, root_ns, key);
+    PMC * const ns       = Parrot_ns_get_namespace_keyed(interp, root_ns, key);
     PMC * classobj       = PMCNULL;
 
     if (!PMC_IS_NULL(ns))
@@ -19810,7 +19811,7 @@
     if (!PMC_IS_NULL(classobj))
         PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
     else {
-        opcode_t * const dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 3,
+        opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
             EXCEPTION_NO_CLASS,
             "Class '%Ss' not found", VTABLE_get_repr(interp, key));return (opcode_t *)dest;
     }
@@ -19822,7 +19823,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const key      = CONST(2)->u.key;
     PMC * const root_ns  = interp->root_namespace;
-    PMC * const ns       = Parrot_get_namespace_keyed(interp, root_ns, key);
+    PMC * const ns       = Parrot_ns_get_namespace_keyed(interp, root_ns, key);
     PMC * classobj       = PMCNULL;
 
     if (!PMC_IS_NULL(ns))
@@ -19830,7 +19831,7 @@
     if (!PMC_IS_NULL(classobj))
         PREG(1) = VTABLE_instantiate(interp, classobj, PMCNULL);
     else {
-        opcode_t * const dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 3,
+        opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 3,
             EXCEPTION_NO_CLASS,
             "Class '%Ss' not found", VTABLE_get_repr(interp, key));return (opcode_t *)dest;
     }
@@ -19842,7 +19843,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const key      = PREG(2);
     PMC * const root_ns  = interp->root_namespace;
-    PMC * const ns       = Parrot_get_namespace_keyed(interp, root_ns, key);
+    PMC * const ns       = Parrot_ns_get_namespace_keyed(interp, root_ns, key);
     PMC * classobj       = PMCNULL;
 
     if (!PMC_IS_NULL(ns))
@@ -19850,7 +19851,7 @@
     if (!PMC_IS_NULL(classobj))
         PREG(1) = VTABLE_instantiate(interp, classobj, PREG(3));
     else {
-        opcode_t * const dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_NO_CLASS,
             "Class '%Ss' not found", VTABLE_get_repr(interp, key));return (opcode_t *)dest;
     }
@@ -19862,7 +19863,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const key      = CONST(2)->u.key;
     PMC * const root_ns  = interp->root_namespace;
-    PMC * const ns       = Parrot_get_namespace_keyed(interp, root_ns, key);
+    PMC * const ns       = Parrot_ns_get_namespace_keyed(interp, root_ns, key);
     PMC * classobj       = PMCNULL;
 
     if (!PMC_IS_NULL(ns))
@@ -19870,7 +19871,7 @@
     if (!PMC_IS_NULL(classobj))
         PREG(1) = VTABLE_instantiate(interp, classobj, PREG(3));
     else {
-        opcode_t * const dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_NO_CLASS,
             "Class '%Ss' not found", VTABLE_get_repr(interp, key));return (opcode_t *)dest;
     }
@@ -19882,7 +19883,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const key      = PREG(2);
     PMC * const root_ns  = interp->root_namespace;
-    PMC * const ns       = Parrot_get_namespace_keyed(interp, root_ns, key);
+    PMC * const ns       = Parrot_ns_get_namespace_keyed(interp, root_ns, key);
     PMC * classobj       = PMCNULL;
 
     if (!PMC_IS_NULL(ns))
@@ -19890,7 +19891,7 @@
     if (!PMC_IS_NULL(classobj))
         PREG(1) = VTABLE_instantiate(interp, classobj, CONST(3)->u.key);
     else {
-        opcode_t * const dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_NO_CLASS,
             "Class '%Ss' not found", VTABLE_get_repr(interp, key));return (opcode_t *)dest;
     }
@@ -19902,7 +19903,7 @@
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const key      = CONST(2)->u.key;
     PMC * const root_ns  = interp->root_namespace;
-    PMC * const ns       = Parrot_get_namespace_keyed(interp, root_ns, key);
+    PMC * const ns       = Parrot_ns_get_namespace_keyed(interp, root_ns, key);
     PMC * classobj       = PMCNULL;
 
     if (!PMC_IS_NULL(ns))
@@ -19910,7 +19911,7 @@
     if (!PMC_IS_NULL(classobj))
         PREG(1) = VTABLE_instantiate(interp, classobj, CONST(3)->u.key);
     else {
-        opcode_t * const dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_NO_CLASS,
             "Class '%Ss' not found", VTABLE_get_repr(interp, key));return (opcode_t *)dest;
     }
@@ -19941,7 +19942,7 @@
 opcode_t *
 Parrot_find_method_p_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    opcode_t * const resume =cur_opcode + 4;
+    opcode_t * const resume = cur_opcode + 4;
     PREG(1) = VTABLE_find_method(interp, PREG(2), SREG(3));
     if (PMC_IS_NULL(PREG(1)) || !VTABLE_defined(interp, PREG(1))) {
         opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, resume,
@@ -19954,7 +19955,7 @@
 opcode_t *
 Parrot_find_method_p_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    opcode_t * const resume =cur_opcode + 4;
+    opcode_t * const resume = cur_opcode + 4;
     PREG(1) = VTABLE_find_method(interp, PREG(2), CONST(3)->u.string);
     if (PMC_IS_NULL(PREG(1)) || !VTABLE_defined(interp, PREG(1))) {
         opcode_t * const dest = Parrot_ex_throw_from_op_args(interp, resume,
@@ -21086,7 +21087,7 @@
 Parrot_copy_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     if (PMC_IS_NULL(PREG(1))) {
-        opcode_t * const dest =cur_opcode + 3;
+        opcode_t * const dest = cur_opcode + 3;
         opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, dest,
                 EXCEPTION_NULL_REG_ACCESS, "Null PMC in copy");return (opcode_t *)handler;
     }
@@ -22575,7 +22576,7 @@
 opcode_t *
 Parrot_sleep_i(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    opcode_t *next =cur_opcode + 2;
+    opcode_t *next = cur_opcode + 2;
     if (IREG(1) < 0) {
         opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, next,
             EXCEPTION_NEG_SLEEP,
@@ -22587,7 +22588,7 @@
 opcode_t *
 Parrot_sleep_ic(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    opcode_t *next =cur_opcode + 2;
+    opcode_t *next = cur_opcode + 2;
     if (cur_opcode[1] < 0) {
         opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, next,
             EXCEPTION_NEG_SLEEP,
@@ -22599,7 +22600,7 @@
 opcode_t *
 Parrot_sleep_n(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    opcode_t *next =cur_opcode + 2;
+    opcode_t *next = cur_opcode + 2;
     if (NREG(1) < 0.0) {
         opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, next,
             EXCEPTION_NEG_SLEEP,
@@ -22611,7 +22612,7 @@
 opcode_t *
 Parrot_sleep_nc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    opcode_t *next =cur_opcode + 2;
+    opcode_t *next = cur_opcode + 2;
     if (CONST(1)->u.number < 0.0) {
         opcode_t * const handler = Parrot_ex_throw_from_op_args(interp, next,
             EXCEPTION_NEG_SLEEP,
@@ -22822,7 +22823,7 @@
 Parrot_get_namespace_p_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
-    PMC * const ns     = Parrot_get_namespace_keyed(interp, cur_ns, PREG(2));
+    PMC * const ns     = Parrot_ns_get_namespace_keyed(interp, cur_ns, PREG(2));
 
     PREG(1) = PMC_IS_NULL(ns) ? PMCNULL : ns;
 
@@ -22832,7 +22833,7 @@
 Parrot_get_namespace_p_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
-    PMC * const ns     = Parrot_get_namespace_keyed(interp, cur_ns, CONST(2)->u.key);
+    PMC * const ns     = Parrot_ns_get_namespace_keyed(interp, cur_ns, CONST(2)->u.key);
 
     PREG(1) = PMC_IS_NULL(ns) ? PMCNULL : ns;
 
@@ -22853,7 +22854,7 @@
     if (PMC_IS_NULL(hll_ns))
         PREG(1) = PMCNULL;
     else {
-        PMC * const ns = Parrot_get_namespace_keyed(interp, hll_ns, PREG(2));
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, hll_ns, PREG(2));
         PREG(1) = ns;
     }
 
@@ -22866,7 +22867,7 @@
     if (PMC_IS_NULL(hll_ns))
         PREG(1) = PMCNULL;
     else {
-        PMC * const ns = Parrot_get_namespace_keyed(interp, hll_ns, CONST(2)->u.key);
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, hll_ns, CONST(2)->u.key);
         PREG(1) = ns;
     }
 
@@ -22887,7 +22888,7 @@
     if (PMC_IS_NULL(root_ns))
         PREG(1) = PMCNULL;
     else {
-        PMC * const ns = Parrot_get_namespace_keyed(interp, root_ns, PREG(2));
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, PREG(2));
         PREG(1) = ns;
     }
 
@@ -22900,7 +22901,7 @@
     if (PMC_IS_NULL(root_ns))
         PREG(1) = PMCNULL;
     else {
-        PMC * const ns = Parrot_get_namespace_keyed(interp, root_ns, CONST(2)->u.key);
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, CONST(2)->u.key);
         PREG(1) = ns;
     }
 
@@ -22910,7 +22911,7 @@
 Parrot_get_global_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
-    PREG(1) = Parrot_find_global_op(interp, cur_ns, SREG(2),cur_opcode + 3);
+    PREG(1) = Parrot_ns_find_global_from_op(interp, cur_ns, SREG(2), cur_opcode + 3);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -22918,7 +22919,7 @@
 Parrot_get_global_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
-    PREG(1) = Parrot_find_global_op(interp, cur_ns, CONST(2)->u.string,cur_opcode + 3);
+    PREG(1) = Parrot_ns_find_global_from_op(interp, cur_ns, CONST(2)->u.string, cur_opcode + 3);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -22930,11 +22931,11 @@
         PREG(1) = PMCNULL;
     }
     else {
-        PMC * const ns = Parrot_get_namespace_keyed(interp, cur_ns, PREG(2));
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, cur_ns, PREG(2));
         if (PMC_IS_NULL(ns))
             PREG(1) = PMCNULL;
         else
-            PREG(1) = Parrot_find_global_op(interp, ns, SREG(3),cur_opcode + 4);
+            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, SREG(3), cur_opcode + 4);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22947,11 +22948,11 @@
         PREG(1) = PMCNULL;
     }
     else {
-        PMC * const ns = Parrot_get_namespace_keyed(interp, cur_ns, CONST(2)->u.key);
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, cur_ns, CONST(2)->u.key);
         if (PMC_IS_NULL(ns))
             PREG(1) = PMCNULL;
         else
-            PREG(1) = Parrot_find_global_op(interp, ns, SREG(3),cur_opcode + 4);
+            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, SREG(3), cur_opcode + 4);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22964,11 +22965,11 @@
         PREG(1) = PMCNULL;
     }
     else {
-        PMC * const ns = Parrot_get_namespace_keyed(interp, cur_ns, PREG(2));
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, cur_ns, PREG(2));
         if (PMC_IS_NULL(ns))
             PREG(1) = PMCNULL;
         else
-            PREG(1) = Parrot_find_global_op(interp, ns, CONST(3)->u.string,cur_opcode + 4);
+            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3)->u.string, cur_opcode + 4);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22981,11 +22982,11 @@
         PREG(1) = PMCNULL;
     }
     else {
-        PMC * const ns = Parrot_get_namespace_keyed(interp, cur_ns, CONST(2)->u.key);
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, cur_ns, CONST(2)->u.key);
         if (PMC_IS_NULL(ns))
             PREG(1) = PMCNULL;
         else
-            PREG(1) = Parrot_find_global_op(interp, ns, CONST(3)->u.string,cur_opcode + 4);
+            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3)->u.string, cur_opcode + 4);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -22994,7 +22995,7 @@
 Parrot_get_hll_global_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
-    PREG(1) = Parrot_find_global_op(interp, hll_ns, SREG(2),cur_opcode + 3);
+    PREG(1) = Parrot_ns_find_global_from_op(interp, hll_ns, SREG(2), cur_opcode + 3);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -23002,7 +23003,7 @@
 Parrot_get_hll_global_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
-    PREG(1) = Parrot_find_global_op(interp, hll_ns, CONST(2)->u.string,cur_opcode + 3);
+    PREG(1) = Parrot_ns_find_global_from_op(interp, hll_ns, CONST(2)->u.string, cur_opcode + 3);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -23014,11 +23015,11 @@
         PREG(1) = hll_ns;
     }
     else {
-        PMC * const ns = Parrot_get_namespace_keyed(interp, hll_ns, PREG(2));
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, hll_ns, PREG(2));
         if (PMC_IS_NULL(ns))
             PREG(1) = PMCNULL;
         else
-            PREG(1) = Parrot_find_global_op(interp, ns, SREG(3),cur_opcode + 4);
+            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, SREG(3), cur_opcode + 4);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23031,11 +23032,11 @@
         PREG(1) = hll_ns;
     }
     else {
-        PMC * const ns = Parrot_get_namespace_keyed(interp, hll_ns, CONST(2)->u.key);
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, hll_ns, CONST(2)->u.key);
         if (PMC_IS_NULL(ns))
             PREG(1) = PMCNULL;
         else
-            PREG(1) = Parrot_find_global_op(interp, ns, SREG(3),cur_opcode + 4);
+            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, SREG(3), cur_opcode + 4);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23048,11 +23049,11 @@
         PREG(1) = hll_ns;
     }
     else {
-        PMC * const ns = Parrot_get_namespace_keyed(interp, hll_ns, PREG(2));
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, hll_ns, PREG(2));
         if (PMC_IS_NULL(ns))
             PREG(1) = PMCNULL;
         else
-            PREG(1) = Parrot_find_global_op(interp, ns, CONST(3)->u.string,cur_opcode + 4);
+            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3)->u.string, cur_opcode + 4);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23065,11 +23066,11 @@
         PREG(1) = hll_ns;
     }
     else {
-        PMC * const ns = Parrot_get_namespace_keyed(interp, hll_ns, CONST(2)->u.key);
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, hll_ns, CONST(2)->u.key);
         if (PMC_IS_NULL(ns))
             PREG(1) = PMCNULL;
         else
-            PREG(1) = Parrot_find_global_op(interp, ns, CONST(3)->u.string,cur_opcode + 4);
+            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3)->u.string, cur_opcode + 4);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23078,7 +23079,7 @@
 Parrot_get_root_global_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const root_ns = interp->root_namespace;
-    PREG(1) = Parrot_find_global_op(interp, root_ns, SREG(2),cur_opcode + 3);
+    PREG(1) = Parrot_ns_find_global_from_op(interp, root_ns, SREG(2), cur_opcode + 3);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -23086,7 +23087,7 @@
 Parrot_get_root_global_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const root_ns = interp->root_namespace;
-    PREG(1) = Parrot_find_global_op(interp, root_ns, CONST(2)->u.string,cur_opcode + 3);
+    PREG(1) = Parrot_ns_find_global_from_op(interp, root_ns, CONST(2)->u.string, cur_opcode + 3);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -23097,11 +23098,11 @@
     if (PMC_IS_NULL(root_ns))
         PREG(1) = PMCNULL;
     else {
-        PMC * const ns = Parrot_get_namespace_keyed(interp, root_ns, PREG(2));
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, PREG(2));
         if (PMC_IS_NULL(ns))
             PREG(1) = PMCNULL;
         else
-            PREG(1) = Parrot_find_global_op(interp, ns, SREG(3),cur_opcode + 4);
+            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, SREG(3), cur_opcode + 4);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23113,11 +23114,11 @@
     if (PMC_IS_NULL(root_ns))
         PREG(1) = PMCNULL;
     else {
-        PMC * const ns = Parrot_get_namespace_keyed(interp, root_ns, CONST(2)->u.key);
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, CONST(2)->u.key);
         if (PMC_IS_NULL(ns))
             PREG(1) = PMCNULL;
         else
-            PREG(1) = Parrot_find_global_op(interp, ns, SREG(3),cur_opcode + 4);
+            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, SREG(3), cur_opcode + 4);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23129,11 +23130,11 @@
     if (PMC_IS_NULL(root_ns))
         PREG(1) = PMCNULL;
     else {
-        PMC * const ns = Parrot_get_namespace_keyed(interp, root_ns, PREG(2));
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, PREG(2));
         if (PMC_IS_NULL(ns))
             PREG(1) = PMCNULL;
         else
-            PREG(1) = Parrot_find_global_op(interp, ns, CONST(3)->u.string,cur_opcode + 4);
+            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3)->u.string, cur_opcode + 4);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23145,11 +23146,11 @@
     if (PMC_IS_NULL(root_ns))
         PREG(1) = PMCNULL;
     else {
-        PMC * const ns = Parrot_get_namespace_keyed(interp, root_ns, CONST(2)->u.key);
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, CONST(2)->u.key);
         if (PMC_IS_NULL(ns))
             PREG(1) = PMCNULL;
         else
-            PREG(1) = Parrot_find_global_op(interp, ns, CONST(3)->u.string,cur_opcode + 4);
+            PREG(1) = Parrot_ns_find_global_from_op(interp, ns, CONST(3)->u.string, cur_opcode + 4);
     }
 
 return (opcode_t *)cur_opcode + 4;}
@@ -23158,7 +23159,7 @@
 Parrot_set_global_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
-    Parrot_set_global(interp, cur_ns, SREG(1), PREG(2));
+    Parrot_ns_set_global(interp, cur_ns, SREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -23166,7 +23167,7 @@
 Parrot_set_global_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
-    Parrot_set_global(interp, cur_ns, CONST(1)->u.string, PREG(2));
+    Parrot_ns_set_global(interp, cur_ns, CONST(1)->u.string, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -23174,9 +23175,9 @@
 Parrot_set_global_p_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
-    PMC * const ns     = Parrot_make_namespace_keyed(interp, cur_ns, PREG(1));
+    PMC * const ns     = Parrot_ns_make_namespace_keyed(interp, cur_ns, PREG(1));
 
-    Parrot_set_global(interp, ns, SREG(2), PREG(3));
+    Parrot_ns_set_global(interp, ns, SREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -23184,9 +23185,9 @@
 Parrot_set_global_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
-    PMC * const ns     = Parrot_make_namespace_keyed(interp, cur_ns, CONST(1)->u.key);
+    PMC * const ns     = Parrot_ns_make_namespace_keyed(interp, cur_ns, CONST(1)->u.key);
 
-    Parrot_set_global(interp, ns, SREG(2), PREG(3));
+    Parrot_ns_set_global(interp, ns, SREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -23194,9 +23195,9 @@
 Parrot_set_global_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
-    PMC * const ns     = Parrot_make_namespace_keyed(interp, cur_ns, PREG(1));
+    PMC * const ns     = Parrot_ns_make_namespace_keyed(interp, cur_ns, PREG(1));
 
-    Parrot_set_global(interp, ns, CONST(2)->u.string, PREG(3));
+    Parrot_ns_set_global(interp, ns, CONST(2)->u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -23204,9 +23205,9 @@
 Parrot_set_global_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
-    PMC * const ns     = Parrot_make_namespace_keyed(interp, cur_ns, CONST(1)->u.key);
+    PMC * const ns     = Parrot_ns_make_namespace_keyed(interp, cur_ns, CONST(1)->u.key);
 
-    Parrot_set_global(interp, ns, CONST(2)->u.string, PREG(3));
+    Parrot_ns_set_global(interp, ns, CONST(2)->u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -23214,7 +23215,7 @@
 Parrot_set_hll_global_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
-    Parrot_set_global(interp, hll_ns, SREG(1), PREG(2));
+    Parrot_ns_set_global(interp, hll_ns, SREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -23222,7 +23223,7 @@
 Parrot_set_hll_global_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
-    Parrot_set_global(interp, hll_ns, CONST(1)->u.string, PREG(2));
+    Parrot_ns_set_global(interp, hll_ns, CONST(1)->u.string, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -23230,9 +23231,9 @@
 Parrot_set_hll_global_p_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
-    PMC * const ns     = Parrot_make_namespace_keyed(interp, hll_ns, PREG(1));
+    PMC * const ns     = Parrot_ns_make_namespace_keyed(interp, hll_ns, PREG(1));
 
-    Parrot_set_global(interp, ns, SREG(2), PREG(3));
+    Parrot_ns_set_global(interp, ns, SREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -23240,9 +23241,9 @@
 Parrot_set_hll_global_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
-    PMC * const ns     = Parrot_make_namespace_keyed(interp, hll_ns, CONST(1)->u.key);
+    PMC * const ns     = Parrot_ns_make_namespace_keyed(interp, hll_ns, CONST(1)->u.key);
 
-    Parrot_set_global(interp, ns, SREG(2), PREG(3));
+    Parrot_ns_set_global(interp, ns, SREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -23250,9 +23251,9 @@
 Parrot_set_hll_global_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
-    PMC * const ns     = Parrot_make_namespace_keyed(interp, hll_ns, PREG(1));
+    PMC * const ns     = Parrot_ns_make_namespace_keyed(interp, hll_ns, PREG(1));
 
-    Parrot_set_global(interp, ns, CONST(2)->u.string, PREG(3));
+    Parrot_ns_set_global(interp, ns, CONST(2)->u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -23260,9 +23261,9 @@
 Parrot_set_hll_global_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
-    PMC * const ns     = Parrot_make_namespace_keyed(interp, hll_ns, CONST(1)->u.key);
+    PMC * const ns     = Parrot_ns_make_namespace_keyed(interp, hll_ns, CONST(1)->u.key);
 
-    Parrot_set_global(interp, ns, CONST(2)->u.string, PREG(3));
+    Parrot_ns_set_global(interp, ns, CONST(2)->u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -23270,7 +23271,7 @@
 Parrot_set_root_global_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const root_ns = interp->root_namespace;
-    Parrot_set_global(interp, root_ns, SREG(1), PREG(2));
+    Parrot_ns_set_global(interp, root_ns, SREG(1), PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -23278,7 +23279,7 @@
 Parrot_set_root_global_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const root_ns = interp->root_namespace;
-    Parrot_set_global(interp, root_ns, CONST(1)->u.string, PREG(2));
+    Parrot_ns_set_global(interp, root_ns, CONST(1)->u.string, PREG(2));
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -23286,9 +23287,9 @@
 Parrot_set_root_global_p_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const root_ns = interp->root_namespace;
-    PMC * const ns      = Parrot_make_namespace_keyed(interp, root_ns, PREG(1));
+    PMC * const ns      = Parrot_ns_make_namespace_keyed(interp, root_ns, PREG(1));
 
-    Parrot_set_global(interp, ns, SREG(2), PREG(3));
+    Parrot_ns_set_global(interp, ns, SREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -23296,9 +23297,9 @@
 Parrot_set_root_global_pc_s_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const root_ns = interp->root_namespace;
-    PMC * const ns      = Parrot_make_namespace_keyed(interp, root_ns, CONST(1)->u.key);
+    PMC * const ns      = Parrot_ns_make_namespace_keyed(interp, root_ns, CONST(1)->u.key);
 
-    Parrot_set_global(interp, ns, SREG(2), PREG(3));
+    Parrot_ns_set_global(interp, ns, SREG(2), PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -23306,9 +23307,9 @@
 Parrot_set_root_global_p_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const root_ns = interp->root_namespace;
-    PMC * const ns      = Parrot_make_namespace_keyed(interp, root_ns, PREG(1));
+    PMC * const ns      = Parrot_ns_make_namespace_keyed(interp, root_ns, PREG(1));
 
-    Parrot_set_global(interp, ns, CONST(2)->u.string, PREG(3));
+    Parrot_ns_set_global(interp, ns, CONST(2)->u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -23316,9 +23317,9 @@
 Parrot_set_root_global_pc_sc_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     PMC * const root_ns = interp->root_namespace;
-    PMC * const ns      = Parrot_make_namespace_keyed(interp, root_ns, CONST(1)->u.key);
+    PMC * const ns      = Parrot_ns_make_namespace_keyed(interp, root_ns, CONST(1)->u.key);
 
-    Parrot_set_global(interp, ns, CONST(2)->u.string, PREG(3));
+    Parrot_ns_set_global(interp, ns, CONST(2)->u.string, PREG(3));
 
 return (opcode_t *)cur_opcode + 4;}
 
@@ -23331,7 +23332,7 @@
                 "Tried to find null name");return (opcode_t *)handler;
     }
 
-    PREG(1) = Parrot_find_name_op(interp, SREG(2),cur_opcode + 3);
+    PREG(1) = Parrot_ns_find_named_item(interp, SREG(2), cur_opcode + 3);
 
 return (opcode_t *)cur_opcode + 3;}
 
@@ -23344,15 +23345,15 @@
                 "Tried to find null name");return (opcode_t *)handler;
     }
 
-    PREG(1) = Parrot_find_name_op(interp, CONST(2)->u.string,cur_opcode + 3);
+    PREG(1) = Parrot_ns_find_named_item(interp, CONST(2)->u.string, cur_opcode + 3);
 
 return (opcode_t *)cur_opcode + 3;}
 
 opcode_t *
 Parrot_find_sub_not_null_p_s(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    opcode_t *dest =cur_opcode + 3;
-    PMC *sub = Parrot_find_name_op(interp, SREG(2), dest);
+    opcode_t *dest = cur_opcode + 3;
+    PMC *sub = Parrot_ns_find_named_item(interp, SREG(2), dest);
 
     if (PMC_IS_NULL(sub)) {
         opcode_t *handler;
@@ -23369,8 +23370,8 @@
 opcode_t *
 Parrot_find_sub_not_null_p_sc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
-    opcode_t *dest =cur_opcode + 3;
-    PMC *sub = Parrot_find_name_op(interp, CONST(2)->u.string, dest);
+    opcode_t *dest = cur_opcode + 3;
+    PMC *sub = Parrot_ns_find_named_item(interp, CONST(2)->u.string, dest);
 
     if (PMC_IS_NULL(sub)) {
         opcode_t *handler;
@@ -23423,7 +23424,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -23445,7 +23446,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -23467,7 +23468,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -23489,7 +23490,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -23511,7 +23512,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -23533,7 +23534,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -23555,7 +23556,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -23577,7 +23578,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -23599,7 +23600,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -23621,7 +23622,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -23643,7 +23644,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -23665,7 +23666,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -23687,7 +23688,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -23709,7 +23710,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -23731,7 +23732,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -23753,7 +23754,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -23775,7 +23776,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -23797,7 +23798,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -23819,7 +23820,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -23841,7 +23842,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -23863,7 +23864,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -23885,7 +23886,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -23907,7 +23908,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -23929,7 +23930,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -23953,7 +23954,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -23978,7 +23979,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -24003,7 +24004,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -24028,7 +24029,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -24053,7 +24054,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -24078,7 +24079,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -24103,7 +24104,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -24128,7 +24129,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -24152,7 +24153,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -24177,7 +24178,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -24202,7 +24203,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -24227,7 +24228,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -24252,7 +24253,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -24277,7 +24278,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -24302,7 +24303,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -24327,7 +24328,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -24352,7 +24353,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -24377,7 +24378,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -24402,7 +24403,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -24427,7 +24428,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, PREG(4));
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, PREG(4)));return (opcode_t *)dest;
             }
 
@@ -24452,7 +24453,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -24477,7 +24478,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -24502,7 +24503,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -24527,7 +24528,7 @@
             const INTVAL type = Parrot_pmc_get_type(interp, CONST(4)->u.key);
             if (type <= 0) {
                 opcode_t *dest = Parrot_ex_throw_from_op_args(
-                    interp,cur_opcode + 5, EXCEPTION_NO_CLASS,
+                    interp, cur_opcode + 5, EXCEPTION_NO_CLASS,
                     "Class '%Ss' not found", VTABLE_get_repr(interp, CONST(4)->u.key));return (opcode_t *)dest;
             }
 
@@ -24555,7 +24556,7 @@
     else {
         const INTVAL type = Parrot_pmc_get_type_str(interp, name);
         if (type <= 0) {
-            opcode_t *dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+            opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", name);return (opcode_t *)dest;
         }
@@ -24580,7 +24581,7 @@
     else {
         const INTVAL type = Parrot_pmc_get_type_str(interp, name);
         if (type <= 0) {
-            opcode_t *dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+            opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", name);return (opcode_t *)dest;
         }
@@ -24605,7 +24606,7 @@
     else {
         const INTVAL type = Parrot_pmc_get_type_str(interp, name);
         if (type <= 0) {
-            opcode_t *dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+            opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", name);return (opcode_t *)dest;
         }
@@ -24630,7 +24631,7 @@
     else {
         const INTVAL type = Parrot_pmc_get_type_str(interp, name);
         if (type <= 0) {
-            opcode_t *dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+            opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
                 EXCEPTION_NO_CLASS,
                 "Class '%Ss' not found", name);return (opcode_t *)dest;
         }
@@ -24664,7 +24665,7 @@
 
     /* it's a typo */
     else {
-        opcode_t *dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_NO_CLASS,
             "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));return (opcode_t *)dest;
     }
@@ -24696,7 +24697,7 @@
 
     /* it's a typo */
     else {
-        opcode_t *dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_NO_CLASS,
             "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));return (opcode_t *)dest;
     }
@@ -24728,7 +24729,7 @@
 
     /* it's a typo */
     else {
-        opcode_t *dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_NO_CLASS,
             "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));return (opcode_t *)dest;
     }
@@ -24760,7 +24761,7 @@
 
     /* it's a typo */
     else {
-        opcode_t *dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_NO_CLASS,
             "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));return (opcode_t *)dest;
     }
@@ -24778,7 +24779,7 @@
     /* if it's clearly a PIR-level PMC */
     if (type > enum_class_core_max) {
         PMC * const root_ns  = interp->root_namespace;
-        PMC * const ns       = Parrot_get_namespace_keyed(interp, root_ns, name_key);
+        PMC * const ns       = Parrot_ns_get_namespace_keyed(interp, root_ns, name_key);
         PMC * const _class   = Parrot_oo_get_class(interp, ns);
         if (!PMC_IS_NULL(_class)) {
             PMC *initial = Parrot_pmc_new(interp,
@@ -24794,7 +24795,7 @@
 
     /* it's a typo */
     else {
-        opcode_t *dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_NO_CLASS,
             "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));return (opcode_t *)dest;
     }
@@ -24812,7 +24813,7 @@
     /* if it's clearly a PIR-level PMC */
     if (type > enum_class_core_max) {
         PMC * const root_ns  = interp->root_namespace;
-        PMC * const ns       = Parrot_get_namespace_keyed(interp, root_ns, name_key);
+        PMC * const ns       = Parrot_ns_get_namespace_keyed(interp, root_ns, name_key);
         PMC * const _class   = Parrot_oo_get_class(interp, ns);
         if (!PMC_IS_NULL(_class)) {
             PMC *initial = Parrot_pmc_new(interp,
@@ -24828,7 +24829,7 @@
 
     /* it's a typo */
     else {
-        opcode_t *dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_NO_CLASS,
             "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));return (opcode_t *)dest;
     }
@@ -24846,7 +24847,7 @@
     /* if it's clearly a PIR-level PMC */
     if (type > enum_class_core_max) {
         PMC * const root_ns  = interp->root_namespace;
-        PMC * const ns       = Parrot_get_namespace_keyed(interp, root_ns, name_key);
+        PMC * const ns       = Parrot_ns_get_namespace_keyed(interp, root_ns, name_key);
         PMC * const _class   = Parrot_oo_get_class(interp, ns);
         if (!PMC_IS_NULL(_class)) {
             PMC *initial = Parrot_pmc_new(interp,
@@ -24862,7 +24863,7 @@
 
     /* it's a typo */
     else {
-        opcode_t *dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_NO_CLASS,
             "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));return (opcode_t *)dest;
     }
@@ -24880,7 +24881,7 @@
     /* if it's clearly a PIR-level PMC */
     if (type > enum_class_core_max) {
         PMC * const root_ns  = interp->root_namespace;
-        PMC * const ns       = Parrot_get_namespace_keyed(interp, root_ns, name_key);
+        PMC * const ns       = Parrot_ns_get_namespace_keyed(interp, root_ns, name_key);
         PMC * const _class   = Parrot_oo_get_class(interp, ns);
         if (!PMC_IS_NULL(_class)) {
             PMC *initial = Parrot_pmc_new(interp,
@@ -24896,7 +24897,7 @@
 
     /* it's a typo */
     else {
-        opcode_t *dest = Parrot_ex_throw_from_op_args(interp,cur_opcode + 4,
+        opcode_t *dest = Parrot_ex_throw_from_op_args(interp, cur_opcode + 4,
             EXCEPTION_NO_CLASS,
             "Class '%Ss' not found", VTABLE_get_repr(interp, name_key));return (opcode_t *)dest;
     }
@@ -24913,7 +24914,7 @@
     Parrot_str_free_cstring(cstr);
     IREG(1) = U_SUCCESS(err) ? (INTVAL) codepoint : -1;
 #else
-    opcode_t * const dest =cur_opcode + 3;
+    opcode_t * const dest = cur_opcode + 3;
     Parrot_ex_throw_from_op_args(interp, dest, EXCEPTION_LIBRARY_ERROR,
         "no ICU lib loaded");
 #endif
@@ -24930,7 +24931,7 @@
     Parrot_str_free_cstring(cstr);
     IREG(1) = U_SUCCESS(err) ? (INTVAL) codepoint : -1;
 #else
-    opcode_t * const dest =cur_opcode + 3;
+    opcode_t * const dest = cur_opcode + 3;
     Parrot_ex_throw_from_op_args(interp, dest, EXCEPTION_LIBRARY_ERROR,
         "no ICU lib loaded");
 #endif
@@ -24941,7 +24942,7 @@
 Parrot_finalize_p(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     /* Go to the next op after loop unrolling */
-    opcode_t * const dest =cur_opcode + 2;
+    opcode_t * const dest = cur_opcode + 2;
     PMC *eh = PMCNULL;
     if (!PMC_IS_NULL(PREG(1))) {
         /* If isa ExceptionHandler, use it. If isa Exception, get its active handler */
@@ -24980,7 +24981,7 @@
 Parrot_finalize_pc(opcode_t *cur_opcode, PARROT_INTERP)  {
     const Parrot_Context * const CUR_CTX = Parrot_pcc_get_context_struct(interp, interp->ctx);
     /* Go to the next op after loop unrolling */
-    opcode_t * const dest =cur_opcode + 2;
+    opcode_t * const dest = cur_opcode + 2;
     PMC *eh = PMCNULL;
     if (!PMC_IS_NULL(CONST(1)->u.key)) {
         /* If isa ExceptionHandler, use it. If isa Exception, get its active handler */
@@ -25026,7 +25027,7 @@
   PARROT_FUNCTION_CORE,                       /* core_type = PARROT_XX_CORE */
   0,                                /* flags */
   2,    /* major_version */
-  4,    /* minor_version */
+  5,    /* minor_version */
   0,    /* patch_version */
   1083,             /* op_count */
   core_op_info_table,       /* op_info_table */
@@ -25137,7 +25138,7 @@
     }
 }
 op_lib_t *
-Parrot_DynOp_core_2_4_0(PARROT_INTERP, long init) {
+Parrot_DynOp_core_2_5_0(PARROT_INTERP, long init) {
     /* initialize and return op_lib ptr */
     if (init == 1) {
 
@@ -25166,7 +25167,7 @@
 
 {
     PMC *const lib = Parrot_pmc_new(interp, enum_class_ParrotLibrary);
-    ((Parrot_ParrotLibrary_attributes*)PMC_data(lib))->oplib_init = (void *) Parrot_DynOp_core_2_4_0;
+    ((Parrot_ParrotLibrary_attributes*)PMC_data(lib))->oplib_init = (void *) Parrot_DynOp_core_2_5_0;
     dynop_register(interp, lib);
     return lib;
 }

Modified: branches/gsoc_past_optimization/src/ops/experimental.ops
==============================================================================
--- branches/gsoc_past_optimization/src/ops/experimental.ops	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/ops/experimental.ops	Wed Jun 23 00:34:17 2010	(r47770)
@@ -325,7 +325,7 @@
     /* if it's clearly a PIR-level PMC */
     if (type > enum_class_core_max) {
         PMC * const root_ns  = interp->root_namespace;
-        PMC * const ns       = Parrot_get_namespace_keyed(interp, root_ns, name_key);
+        PMC * const ns       = Parrot_ns_get_namespace_keyed(interp, root_ns, name_key);
         PMC * const _class   = Parrot_oo_get_class(interp, ns);
         if (!PMC_IS_NULL(_class)) {
             PMC *initial = Parrot_pmc_new(interp,

Modified: branches/gsoc_past_optimization/src/ops/pmc.ops
==============================================================================
--- branches/gsoc_past_optimization/src/ops/pmc.ops	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/ops/pmc.ops	Wed Jun 23 00:34:17 2010	(r47770)
@@ -146,7 +146,7 @@
 op root_new(out PMC, in PMC) {
     PMC * const key      = $2;
     PMC * const root_ns  = interp->root_namespace;
-    PMC * const ns       = Parrot_get_namespace_keyed(interp, root_ns, key);
+    PMC * const ns       = Parrot_ns_get_namespace_keyed(interp, root_ns, key);
     PMC * classobj       = PMCNULL;
 
     if (!PMC_IS_NULL(ns))
@@ -164,7 +164,7 @@
 op root_new(out PMC, in PMC, in PMC) {
     PMC * const key      = $2;
     PMC * const root_ns  = interp->root_namespace;
-    PMC * const ns       = Parrot_get_namespace_keyed(interp, root_ns, key);
+    PMC * const ns       = Parrot_ns_get_namespace_keyed(interp, root_ns, key);
     PMC * classobj       = PMCNULL;
 
     if (!PMC_IS_NULL(ns))

Modified: branches/gsoc_past_optimization/src/ops/var.ops
==============================================================================
--- branches/gsoc_past_optimization/src/ops/var.ops	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/ops/var.ops	Wed Jun 23 00:34:17 2010	(r47770)
@@ -192,7 +192,7 @@
 
 op get_namespace(out PMC, in PMC) {
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
-    PMC * const ns     = Parrot_get_namespace_keyed(interp, cur_ns, $2);
+    PMC * const ns     = Parrot_ns_get_namespace_keyed(interp, cur_ns, $2);
 
     $1 = PMC_IS_NULL(ns) ? PMCNULL : ns;
 }
@@ -219,7 +219,7 @@
     if (PMC_IS_NULL(hll_ns))
         $1 = PMCNULL;
     else {
-        PMC * const ns = Parrot_get_namespace_keyed(interp, hll_ns, $2);
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, hll_ns, $2);
         $1 = ns;
     }
 }
@@ -245,7 +245,7 @@
     if (PMC_IS_NULL(root_ns))
         $1 = PMCNULL;
     else {
-        PMC * const ns = Parrot_get_namespace_keyed(interp, root_ns, $2);
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, $2);
         $1 = ns;
     }
 }
@@ -275,7 +275,7 @@
 
 op get_global(out PMC, in STR) {
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
-    $1 = Parrot_find_global_op(interp, cur_ns, $2, expr NEXT());
+    $1 = Parrot_ns_find_global_from_op(interp, cur_ns, $2, expr NEXT());
 }
 
 op get_global(out PMC, in PMC, in STR) {
@@ -284,11 +284,11 @@
         $1 = PMCNULL;
     }
     else {
-        PMC * const ns = Parrot_get_namespace_keyed(interp, cur_ns, $2);
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, cur_ns, $2);
         if (PMC_IS_NULL(ns))
             $1 = PMCNULL;
         else
-            $1 = Parrot_find_global_op(interp, ns, $3, expr NEXT());
+            $1 = Parrot_ns_find_global_from_op(interp, ns, $3, expr NEXT());
     }
 }
 
@@ -307,7 +307,7 @@
 
 op get_hll_global(out PMC, in STR) {
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
-    $1 = Parrot_find_global_op(interp, hll_ns, $2, expr NEXT());
+    $1 = Parrot_ns_find_global_from_op(interp, hll_ns, $2, expr NEXT());
 }
 
 op get_hll_global(out PMC, in PMC, in STR) {
@@ -316,11 +316,11 @@
         $1 = hll_ns;
     }
     else {
-        PMC * const ns = Parrot_get_namespace_keyed(interp, hll_ns, $2);
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, hll_ns, $2);
         if (PMC_IS_NULL(ns))
             $1 = PMCNULL;
         else
-            $1 = Parrot_find_global_op(interp, ns, $3, expr NEXT());
+            $1 = Parrot_ns_find_global_from_op(interp, ns, $3, expr NEXT());
     }
 }
 
@@ -339,7 +339,7 @@
 
 op get_root_global(out PMC, in STR) {
     PMC * const root_ns = interp->root_namespace;
-    $1 = Parrot_find_global_op(interp, root_ns, $2, expr NEXT());
+    $1 = Parrot_ns_find_global_from_op(interp, root_ns, $2, expr NEXT());
 }
 
 op get_root_global(out PMC, in PMC, in STR) {
@@ -347,11 +347,11 @@
     if (PMC_IS_NULL(root_ns))
         $1 = PMCNULL;
     else {
-        PMC * const ns = Parrot_get_namespace_keyed(interp, root_ns, $2);
+        PMC * const ns = Parrot_ns_get_namespace_keyed(interp, root_ns, $2);
         if (PMC_IS_NULL(ns))
             $1 = PMCNULL;
         else
-            $1 = Parrot_find_global_op(interp, ns, $3, expr NEXT());
+            $1 = Parrot_ns_find_global_from_op(interp, ns, $3, expr NEXT());
     }
 }
 
@@ -379,14 +379,14 @@
 
 op set_global(in STR, invar PMC) {
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
-    Parrot_set_global(interp, cur_ns, $1, $2);
+    Parrot_ns_set_global(interp, cur_ns, $1, $2);
 }
 
 op set_global(in PMC, in STR, invar PMC) {
     PMC * const cur_ns = Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp));
-    PMC * const ns     = Parrot_make_namespace_keyed(interp, cur_ns, $1);
+    PMC * const ns     = Parrot_ns_make_namespace_keyed(interp, cur_ns, $1);
 
-    Parrot_set_global(interp, ns, $2, $3);
+    Parrot_ns_set_global(interp, ns, $2, $3);
 }
 
 =item B<set_hll_global>(in STR, invar PMC)
@@ -403,14 +403,14 @@
 
 op set_hll_global(in STR, invar PMC) {
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
-    Parrot_set_global(interp, hll_ns, $1, $2);
+    Parrot_ns_set_global(interp, hll_ns, $1, $2);
 }
 
 op set_hll_global(in PMC, in STR, invar PMC) {
     PMC * const hll_ns = Parrot_get_ctx_HLL_namespace(interp);
-    PMC * const ns     = Parrot_make_namespace_keyed(interp, hll_ns, $1);
+    PMC * const ns     = Parrot_ns_make_namespace_keyed(interp, hll_ns, $1);
 
-    Parrot_set_global(interp, ns, $2, $3);
+    Parrot_ns_set_global(interp, ns, $2, $3);
 }
 
 =item B<set_root_global>(in STR, invar PMC)
@@ -427,14 +427,14 @@
 
 op set_root_global(in STR, invar PMC) {
     PMC * const root_ns = interp->root_namespace;
-    Parrot_set_global(interp, root_ns, $1, $2);
+    Parrot_ns_set_global(interp, root_ns, $1, $2);
 }
 
 op set_root_global(in PMC, in STR, invar PMC) {
     PMC * const root_ns = interp->root_namespace;
-    PMC * const ns      = Parrot_make_namespace_keyed(interp, root_ns, $1);
+    PMC * const ns      = Parrot_ns_make_namespace_keyed(interp, root_ns, $1);
 
-    Parrot_set_global(interp, ns, $2, $3);
+    Parrot_ns_set_global(interp, ns, $2, $3);
 }
 
 =back
@@ -470,7 +470,7 @@
         goto ADDRESS(handler);
     }
 
-    $1 = Parrot_find_name_op(interp, $2, expr NEXT());
+    $1 = Parrot_ns_find_named_item(interp, $2, expr NEXT());
 }
 
 =item B<find_sub_not_null>(out PMC, in STR)
@@ -482,7 +482,7 @@
 
 inline op find_sub_not_null(out PMC, in STR) :base_core {
     opcode_t *dest = expr NEXT();
-    PMC *sub = Parrot_find_name_op(interp, $2, dest);
+    PMC *sub = Parrot_ns_find_named_item(interp, $2, dest);
 
     if (PMC_IS_NULL(sub)) {
         opcode_t *handler;

Modified: branches/gsoc_past_optimization/src/packfile.c
==============================================================================
--- branches/gsoc_past_optimization/src/packfile.c	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/packfile.c	Wed Jun 23 00:34:17 2010	(r47770)
@@ -3129,7 +3129,7 @@
         /* Vtable overrides and methods were already cloned, so don't reclone them. */
         if (new_sub->vtable_index == -1
         && !(old_sub->comp_flags   &  SUB_COMP_FLAG_METHOD))
-            Parrot_store_sub_in_namespace(interp, new_sub_pmc);
+            Parrot_ns_store_sub(interp, new_sub_pmc);
 
         ret->u.key = new_sub_pmc;
 
@@ -3987,7 +3987,7 @@
     /* finally place the sub into some namespace stash
      * XXX place this code in Sub.thaw ?  */
     if (VTABLE_isa(interp, pmc, _sub))
-        Parrot_store_sub_in_namespace(interp, pmc);
+        Parrot_ns_store_sub(interp, pmc);
 
     /* restore code */
     interp->code = cs_save;

Modified: branches/gsoc_past_optimization/src/pmc/arrayiterator.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/arrayiterator.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/arrayiterator.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -43,7 +43,7 @@
 TODO: Discuss idea of having separate get_iter/get_reverse_iter VTABLEs
 to avoid this caveat.
 
-=head1 Methods
+=head1 Vtable functions
 
 =over 4
 
@@ -53,6 +53,15 @@
 
 /* HEADERIZER HFILE: none */
 /* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+PARROT_DOES_NOT_RETURN
+static void out_of_bounds(PARROT_INTERP)
+        __attribute__nonnull__(1);
+
+#define ASSERT_ARGS_out_of_bounds __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 */
 
 pmclass ArrayIterator extends Iterator no_ro auto_attrs {
@@ -199,24 +208,25 @@
 
     VTABLE void set_integer_native(INTVAL value) {
         PMC *array;
+        INTVAL element;
+        GET_ATTR_array(INTERP, SELF, array);
+        element = VTABLE_elements(INTERP, array);
 
-        if (value == ITERATE_FROM_START) {
-            GET_ATTR_array(INTERP, SELF, array);
+        switch (value) {
+          case ITERATE_FROM_START:
             SET_ATTR_reverse(INTERP, SELF, 0);
             SET_ATTR_pos(INTERP, SELF, 0);
-            SET_ATTR_length(INTERP, SELF, VTABLE_elements(INTERP, array));
-        }
-        else if (value == ITERATE_FROM_END) {
-            INTVAL element;
-            GET_ATTR_array(INTERP, SELF, array);
-            element = VTABLE_elements(INTERP, array);
+            SET_ATTR_length(INTERP, SELF, element);
+            break;
+          case ITERATE_FROM_END:
             SET_ATTR_reverse(INTERP, SELF, 1);
             SET_ATTR_length(INTERP, SELF, element);
             SET_ATTR_pos(INTERP, SELF, element);
-        }
-        else
+            break;
+          default:
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
                     "Wrong direction for ArrayIterator");
+        }
     }
 
 /*
@@ -254,8 +264,7 @@
         GET_ATTR_length(INTERP, SELF, length);
 
         if (pos >= length)
-            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
-                "StopIteration");
+            out_of_bounds(INTERP);
 
         GET_ATTR_array(INTERP, SELF, array);
         SET_ATTR_pos(INTERP, SELF, pos+1);
@@ -278,8 +287,7 @@
         GET_ATTR_pos(INTERP, SELF, pos);
 
         if (!STATICSELF.get_bool())
-            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
-                "StopIteration");
+            out_of_bounds(INTERP);
 
         GET_ATTR_array(INTERP, SELF, array);
         SET_ATTR_pos(INTERP, SELF, pos+1);
@@ -303,8 +311,7 @@
         GET_ATTR_pos(INTERP, SELF, pos);
 
         if (!STATICSELF.get_bool())
-            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
-                "StopIteration");
+            out_of_bounds(INTERP);
 
         GET_ATTR_array(INTERP, SELF, array);
         SET_ATTR_pos(INTERP, SELF, pos+1);
@@ -331,8 +338,7 @@
 
 
         if (!STATICSELF.get_bool())
-            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
-                "StopIteration");
+            out_of_bounds(INTERP);
 
         GET_ATTR_array(INTERP, SELF, array);
         SET_ATTR_pos(INTERP, SELF, pos+1);
@@ -360,8 +366,7 @@
 
 
         if (!STATICSELF.get_bool())
-            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
-                "StopIteration");
+            out_of_bounds(INTERP);
 
         GET_ATTR_array(INTERP, SELF, array);
         SET_ATTR_pos(INTERP, SELF, --pos);
@@ -384,8 +389,7 @@
         GET_ATTR_pos(INTERP, SELF, pos);
 
         if (!STATICSELF.get_bool())
-            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
-                "StopIteration");
+            out_of_bounds(INTERP);
 
         GET_ATTR_array(INTERP, SELF, array);
         SET_ATTR_pos(INTERP, SELF, --pos);
@@ -409,8 +413,7 @@
         GET_ATTR_pos(INTERP, SELF, pos);
 
         if (!STATICSELF.get_bool())
-            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
-                "StopIteration");
+            out_of_bounds(INTERP);
 
         GET_ATTR_array(INTERP, SELF, array);
         SET_ATTR_pos(INTERP, SELF, --pos);
@@ -436,8 +439,7 @@
         GET_ATTR_pos(INTERP, SELF, pos);
 
         if (!STATICSELF.get_bool())
-            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
-                "StopIteration");
+            out_of_bounds(INTERP);
 
         GET_ATTR_array(INTERP, SELF, array);
         SET_ATTR_pos(INTERP, SELF, --pos);
@@ -646,6 +648,32 @@
     }
 }
 
+
+/*
+
+=back
+
+=head1 Auxiliar functions
+
+=over 4
+
+=item C<static void out_of_bounds(PARROT_INTERP)>
+
+Throw out-of-bounds exception.
+
+=cut
+
+*/
+
+PARROT_DOES_NOT_RETURN
+static void
+out_of_bounds(PARROT_INTERP)
+{
+    ASSERT_ARGS(out_of_bounds)
+    Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_OUT_OF_BOUNDS,
+            "StopIteration");
+}
+
 /*
 
 =back

Copied: branches/gsoc_past_optimization/src/pmc/bytebuffer.pmc (from r47769, trunk/src/pmc/bytebuffer.pmc)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_past_optimization/src/pmc/bytebuffer.pmc	Wed Jun 23 00:34:17 2010	(r47770, copy of r47769, trunk/src/pmc/bytebuffer.pmc)
@@ -0,0 +1,428 @@
+/*
+Copyright (C) 2010, Parrot Foundation.
+$Id$
+
+=head1 NAME
+
+src/pmc/bytebuffer.pmc - A byte buffer
+
+=head1 DESCRIPTION
+
+C<ByteBuffer> provides a resizable byte buffer with random access to
+individual bytes and conversions from and to parrot strings.
+
+=cut
+
+*/
+
+/* HEADERIZER HFILE: none */
+/* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+PARROT_CANNOT_RETURN_NULL
+static STRING * build_string(PARROT_INTERP,
+    ARGIN(const unsigned char *content),
+    INTVAL size,
+    ARGIN_NULLOK(const CHARSET *charset),
+    ARGIN_NULLOK(const ENCODING *encoding))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2);
+
+static INTVAL grow_to(INTVAL position);
+#define ASSERT_ARGS_build_string __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(content))
+#define ASSERT_ARGS_grow_to __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+/* HEADERIZER END: static */
+
+pmclass ByteBuffer auto_attrs {
+    ATTR INTVAL allocated_size;
+    ATTR INTVAL size;
+    ATTR STRING *source;
+    ATTR unsigned char *content;
+
+/*
+
+=head2 Vtable functions
+
+=over 4
+
+=item C<void init()>
+
+Create an empty buffer
+
+=item C<void init_int()>
+
+Create a buffer of initial_size capacity.
+
+=item C<void mark()>
+
+Mark the source string if any.
+
+=item C<void destroy()>
+
+Free the buffer when destroying.
+
+=cut
+
+*/
+
+    VTABLE void init() {
+        PObj_custom_mark_destroy_SETALL(SELF);
+    }
+
+    VTABLE void init_int(INTVAL initial_size) {
+        unsigned char *content;
+        STATICSELF.init();
+        SET_ATTR_size(INTERP, SELF, initial_size);
+        SET_ATTR_allocated_size(INTERP, SELF, initial_size);
+        content = (unsigned char *)Parrot_gc_allocate_memory_chunk(INTERP, initial_size);
+        SET_ATTR_content(INTERP, SELF, content);
+    }
+
+    VTABLE void mark() {
+        STRING * source;
+        GET_ATTR_source(INTERP, SELF, source);
+        if (!STRING_IS_NULL(source))
+            Parrot_gc_mark_STRING_alive(INTERP, source);
+    }
+
+    VTABLE void destroy() {
+        INTVAL allocated_size;
+        GET_ATTR_allocated_size(INTERP, SELF, allocated_size);
+        if (allocated_size) {
+            unsigned char *content;
+            GET_ATTR_content(INTERP, SELF, content);
+            Parrot_gc_free_memory_chunk(INTERP, content);
+        }
+    }
+
+/*
+
+=item C<INTVAL elements()>
+
+Get current size.
+
+=cut
+
+*/
+
+    VTABLE INTVAL elements() {
+        INTVAL size;
+        GET_ATTR_size(INTERP, SELF, size);
+        return size;
+    }
+
+/*
+
+=item C<void set_integer_native()>
+
+Resize the buffer to the given value.
+
+=cut
+
+*/
+
+    VTABLE void set_integer_native(INTVAL set_size) {
+        INTVAL size,  allocated_size;
+        unsigned char *content;
+        if (set_size < 0)
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
+                "Negative size in ByteBuffer");
+
+        GET_ATTR_allocated_size(INTERP, SELF, allocated_size);
+        if (set_size == 0) {
+            if (allocated_size == 0)
+                SET_ATTR_source(INTERP, SELF, STRINGNULL);
+            else {
+                GET_ATTR_content(INTERP, SELF, content);
+                Parrot_gc_free_memory_chunk(INTERP, content);
+            }
+            SET_ATTR_allocated_size(INTERP, SELF, 0);
+            SET_ATTR_size(INTERP, SELF, 0);
+            SET_ATTR_content(INTERP, SELF, NULL);
+        }
+        else {
+            GET_ATTR_size(INTERP, SELF, size);
+            /* If reducing size, just change the size value */
+            if (set_size > size) {
+                INTVAL copysize = set_size < size ? set_size : size;
+                if (allocated_size == 0) {
+                    content = (unsigned char *)Parrot_gc_allocate_memory_chunk(INTERP, set_size);
+                    if (size > 0) {
+                        STRING * source;
+                        GET_ATTR_source(INTERP, SELF, source);
+                        memcpy(content, source->strstart, copysize);
+                    }
+                    SET_ATTR_source(INTERP, SELF, STRINGNULL);
+                }
+                else {
+                    GET_ATTR_content(INTERP, SELF, content);
+                    content = (unsigned char *)
+                        Parrot_gc_reallocate_memory_chunk(INTERP, content, set_size);
+                }
+                if (copysize < set_size)
+                    memset(content + copysize, '\0', set_size - copysize);
+                SET_ATTR_allocated_size(INTERP, SELF, set_size);
+                SET_ATTR_content(INTERP, SELF, content);
+            }
+            SET_ATTR_size(INTERP, SELF, set_size);
+        }
+    }
+
+/*
+
+=item C<void set_string_native()>
+
+Reset the buffer with the content of the string.
+
+=cut
+
+*/
+
+    VTABLE void set_string_native(STRING *new_string) {
+        INTVAL allocated_size;
+        GET_ATTR_allocated_size(INTERP, SELF, allocated_size);
+        if (allocated_size) {
+            unsigned char *content;
+            GET_ATTR_content(INTERP, SELF, content);
+            Parrot_gc_free_memory_chunk(INTERP, content);
+            SET_ATTR_allocated_size(INTERP, SELF, 0);
+        }
+        SET_ATTR_source(INTERP, SELF, new_string);
+        SET_ATTR_size(INTERP, SELF, Parrot_str_byte_length(INTERP, new_string));
+        SET_ATTR_content(INTERP, SELF, (unsigned char *)new_string->strstart);
+    }
+
+/*
+
+=item C<INTVAL get_integer_keyed_int()>
+
+Get the value of the byte at position or 0 if out of bounds.
+
+=cut
+
+*/
+
+    VTABLE INTVAL get_integer_keyed_int(INTVAL position) {
+        INTVAL size;
+        unsigned char *content;
+        GET_ATTR_size(INTERP, SELF, size);
+        GET_ATTR_content(INTERP, SELF, content);
+        return (position >= 0 && position < size) ? content[position] : (INTVAL) 0;
+    }
+
+/*
+
+=item C<void set_integer_keyed_int()>
+
+Set the value of the byte at position, resizing the buffer if the position
+is out of current size.
+
+=cut
+
+*/
+
+    VTABLE void set_integer_keyed_int(INTVAL position, INTVAL value) {
+        unsigned char *content;
+        INTVAL size, allocated_size;
+        if (position < 0)
+            Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
+                "Negative position not allowed");
+
+        GET_ATTR_allocated_size(INTERP, SELF, allocated_size);
+        if (position >= allocated_size) {
+            INTVAL newsize = grow_to(position);
+            if (allocated_size == 0) {
+                INTVAL copysize = newsize;
+                STRING * source;
+                content = (unsigned char *)Parrot_gc_allocate_memory_chunk(INTERP, newsize);
+                GET_ATTR_source(INTERP, SELF, source);
+                if (!STRING_IS_NULL(source)) {
+                    INTVAL srclen = Parrot_str_byte_length(INTERP, source);
+                    if (srclen < copysize)
+                        copysize = srclen;
+                    memcpy(content, source->strstart, copysize);
+                    SET_ATTR_source(INTERP, SELF, STRINGNULL);
+                }
+            }
+            else {
+                GET_ATTR_content(INTERP, SELF, content);
+                content = (unsigned char *)
+                    Parrot_gc_reallocate_memory_chunk(INTERP, content, newsize);
+            }
+
+            SET_ATTR_content(INTERP, SELF, content);
+            SET_ATTR_allocated_size(INTERP, SELF, newsize);
+        }
+        else
+            GET_ATTR_content(INTERP, SELF, content);
+
+        GET_ATTR_size(INTERP, SELF, size);
+        if (position >= size) {
+            size = position + 1;
+            SET_ATTR_size(INTERP, SELF, size);
+        }
+        content[position] = value;
+    }
+
+/*
+
+=item C<void push_integer(INTVAL value)>
+
+Extends the buffer by adding a byte of value C<value> to the end.
+
+=cut
+
+*/
+
+    VTABLE void push_integer(INTVAL value) {
+        INTVAL size;
+
+        GET_ATTR_size(INTERP, SELF, size);
+        SELF.set_integer_keyed_int(size, value);
+    }
+
+/*
+
+=item C<PMC *get_iter()>
+
+Return a new Iterator for this PMC.
+
+=cut
+
+*/
+
+    VTABLE PMC *get_iter() {
+        return Parrot_pmc_new_init(INTERP, enum_class_ArrayIterator, SELF);
+    }
+
+/*
+
+=back
+
+=head2 Methods
+
+=over 4
+
+=item C<get_string(string charset, string encoding)>
+
+Create a string with the buffer content and the charset and encoding
+specified.
+
+=cut
+
+*/
+
+    METHOD get_string(STRING *charsetname, STRING *encodingname) {
+        STRING *result;
+        unsigned char *content;
+        INTVAL size;
+        const CHARSET *charset = Parrot_get_charset(INTERP,
+            Parrot_charset_number(INTERP, charsetname));
+        const ENCODING *encoding = Parrot_get_encoding(INTERP,
+            Parrot_encoding_number(INTERP, encodingname));
+        GET_ATTR_content(INTERP, SELF, content);
+        GET_ATTR_size(INTERP, SELF, size);
+        result = build_string(INTERP, content, size, charset, encoding);
+        RETURN(STRING *result);
+    }
+
+/*
+
+=item C<get_string_as(string as)>
+
+Create a string with the buffer content and the same charset and encoding
+as the string argument.
+
+=cut
+
+*/
+
+    METHOD get_string_as(STRING *as :optional) {
+        STRING *result;
+        unsigned char *content;
+        INTVAL size;
+        const CHARSET* charset = STRING_IS_NULL(as) ? PARROT_DEFAULT_CHARSET : as->charset;
+        const ENCODING *encoding = STRING_IS_NULL(as) ? PARROT_DEFAULT_ENCODING : as->encoding;
+        GET_ATTR_content(INTERP, SELF, content);
+        GET_ATTR_size(INTERP, SELF, size);
+        result = build_string(INTERP, content, size, charset, encoding);
+        RETURN(STRING *result);
+    }
+
+} /* pmclass end */
+
+/*
+
+=back
+
+=head2 Auxiliar functions
+
+=over 4
+
+=item C<static INTVAL grow_to(INTVAL position)>
+
+Calculate new size enough for using position and with some margin to
+decrease the number of reallocations.
+
+=item C<static STRING * build_string(PARROT_INTERP, const unsigned char
+*content, INTVAL size, const CHARSET *charset, const ENCODING *encoding)>
+
+Build a string fro the buffer content with the charset and encoding specified.
+
+=cut
+
+*/
+
+static INTVAL
+grow_to(INTVAL position)
+{
+    ASSERT_ARGS(grow_to)
+
+    const UINTVAL blocksize = 2048;
+    UINTVAL minsize = position + 1;
+    return (INTVAL) (minsize < 64 ? 64 :
+           minsize < 256 ? 256 :
+           minsize < 1024 ? 1024 :
+           ((minsize + blocksize - 1) / blocksize) * blocksize);
+}
+
+PARROT_CANNOT_RETURN_NULL
+static STRING *
+build_string(PARROT_INTERP, ARGIN(const unsigned char *content),
+        INTVAL size,
+        ARGIN_NULLOK(const CHARSET *charset),
+        ARGIN_NULLOK(const ENCODING *encoding))
+{
+    ASSERT_ARGS(build_string)
+    STRING *result;
+    if (charset == NULL)
+        Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_ENCODING,
+                "Invalid charset");
+    if (encoding == NULL)
+        Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_ENCODING,
+                "Invalid encoding");
+    result = Parrot_str_new_init(interp, (const char *)content, size, encoding, charset, 0);
+    if (!CHARSET_VALIDATE(interp, result))
+        Parrot_ex_throw_from_c_args(interp, NULL,
+                EXCEPTION_INVALID_STRING_REPRESENTATION,
+                "Invalid buffer content");
+    return result;
+}
+
+/*
+
+=back
+
+=cut
+
+*/
+
+/*
+ * Local variables:
+ *   c-file-style: "parrot"
+ * End:
+ * vim: expandtab shiftwidth=4:
+ */

Modified: branches/gsoc_past_optimization/src/pmc/class.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/class.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/class.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -284,7 +284,7 @@
         else {
             PMC * const hll_ns = VTABLE_get_pmc_keyed_int(interp,
                     interp->HLL_namespace, Parrot_pcc_get_HLL(interp, CURRENT_CONTEXT(interp)));
-            new_namespace = Parrot_make_namespace_keyed(interp, hll_ns, name_arg);
+            new_namespace = Parrot_ns_make_namespace_keyed(interp, hll_ns, name_arg);
         }
 
         if (PMC_IS_NULL(new_namespace))
@@ -1352,13 +1352,8 @@
         if (classobj->vtable->base_type == enum_class_Class
         ||  classobj->vtable->base_type == enum_class_PMCProxy) {
             STRING *classname = make_class_name(INTERP, classobj);
-
-            if (Parrot_str_equal(INTERP, SELF->vtable->whoami, classname))
-                return 1;
-
-            if (SELF->vtable->isa_hash
-            &&  parrot_hash_exists(INTERP, SELF->vtable->isa_hash,
-                                    (void *)classname))
+            PARROT_ASSERT(SELF->vtable->isa_hash);
+            if (parrot_hash_exists(INTERP, SELF->vtable->isa_hash, classname))
                 return 1;
         }
 
@@ -1589,13 +1584,13 @@
         STRING * const semicolon_str = CONST_STRING(INTERP, ";");
         PMC    * const namespace_array =
             Parrot_str_split(INTERP, semicolon_str, serial_namespace);
-        PMC *ns = Parrot_get_namespace_keyed(INTERP,
+        PMC *ns = Parrot_ns_get_namespace_keyed(INTERP,
                 INTERP->root_namespace, namespace_array);
 
         /* If the namespace doesn't exist, we create it, and initialize
          * ourselves in it */
         if (PMC_IS_NULL(ns)) {
-            ns = Parrot_make_namespace_keyed(INTERP,
+            ns = Parrot_ns_make_namespace_keyed(INTERP,
                     INTERP->root_namespace, namespace_array);
             SELF.init_pmc(ns);
         }

Modified: branches/gsoc_past_optimization/src/pmc/default.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/default.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/default.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -946,18 +946,13 @@
 */
 
     VTABLE INTVAL isa_pmc(PMC *lookup) {
-        Hash   * const isa_hash = SELF->vtable->isa_hash;
-        STRING *pmc_name;
-
         if (PMC_IS_NULL(lookup))
             return 0;
-
-        pmc_name = VTABLE_get_string(INTERP, lookup);
-
-        if (!isa_hash)
-            return Parrot_str_equal(INTERP, SELF->vtable->whoami, pmc_name);
-
-        return parrot_hash_exists(INTERP, isa_hash, (void *)pmc_name);
+        else {
+            Hash   * const isa_hash = SELF->vtable->isa_hash;
+            STRING * const pmc_name = VTABLE_get_string(INTERP, lookup);
+            return parrot_hash_exists(INTERP, isa_hash, pmc_name);
+        }
     }
 
 /*

Modified: branches/gsoc_past_optimization/src/pmc/eval.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/eval.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/eval.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -57,30 +57,25 @@
 {
     ASSERT_ARGS(clear_fixups)
 
-    INTVAL               i;
-    PackFile_ByteCode   * const seg = sub_data->seg;
-    PackFile_FixupTable *ft;
-    PackFile_ConstTable *ct;
-
-    if (!seg)
-        return;
-
-    ft = seg->fixups;
-    if (!ft)
-        return;
-
-    ct = seg->const_table;
-    if (!ct)
-        return;
+    PackFile_ByteCode * const seg = sub_data->seg;
 
-    for (i = 0; i < ft->fixup_count; ++i) {
-        PackFile_FixupEntry * const e = ft->fixups + i;
-
-        if (e->type == enum_fixup_sub) {
-            opcode_t  ci             = e->offset;
-
-            ct->constants[ci]->u.key = NULL;
-            e->type                  = 0;
+    if (seg) {
+        PackFile_FixupTable * const ft = seg->fixups;
+        if (ft) {
+            PackFile_ConstTable * const ct = seg->const_table;
+            if (ct) {
+                INTVAL i;
+                for (i = 0; i < ft->fixup_count; ++i) {
+                    PackFile_FixupEntry * const e = ft->fixups + i;
+
+                    if (e->type == enum_fixup_sub) {
+                        opcode_t  ci             = e->offset;
+
+                        ct->constants[ci]->u.key = NULL;
+                        e->type                  = 0;
+                    }
+                }
+            }
         }
     }
 }
@@ -92,34 +87,29 @@
 {
     ASSERT_ARGS(get_sub)
 
-    INTVAL                 i, n;
     Parrot_Sub_attributes *sub;
     PackFile_ByteCode     *seg;
-    PackFile_FixupTable   *ft;
-    PackFile_ConstTable   *ct;
 
     PMC_get_sub(interp, self, sub);
     seg = sub->seg;
 
-    if (!seg)
-        return PMCNULL;
-
-    ft = seg->fixups;
-    if (!ft)
-        return PMCNULL;
-
-    ct = seg->const_table;
-    if (!ct)
-        return PMCNULL;
-
-    for (i = n = 0; i < ft->fixup_count; ++i) {
-        const PackFile_FixupEntry * const e = ft->fixups + i;
-
-        if (e->type == enum_fixup_sub) {
-            opcode_t ci = e->offset;
-
-            if (n++ == idx)
-                return ct->constants[ci]->u.key;
+    if (seg) {
+        PackFile_FixupTable * const ft = seg->fixups;
+        if (ft) {
+            PackFile_ConstTable * const ct = seg->const_table;
+            if (ct) {
+                INTVAL i, n;
+                for (i = n = 0; i < ft->fixup_count; ++i) {
+                    const PackFile_FixupEntry * const e = ft->fixups + i;
+
+                    if (e->type == enum_fixup_sub) {
+                        opcode_t ci = e->offset;
+
+                        if (n++ == idx)
+                            return ct->constants[ci]->u.key;
+                    }
+                }
+            }
         }
     }
 
@@ -133,32 +123,27 @@
 
     Parrot_Sub_attributes *sub;
     PackFile_ByteCode   *seg;
-    PackFile_FixupTable *ft;
-    PackFile_ConstTable *ct;
-    INTVAL               i;
 
     PMC_get_sub(interp, self, sub);
     seg = sub->seg;
 
-    if (!seg)
-        return;
-
-    ft = seg->fixups;
-    if (!ft)
-        return;
-
-    ct = seg->const_table;
-    if (!ct)
-        return;
-
-    for (i = 0; i < ft->fixup_count; ++i) {
-        const PackFile_FixupEntry * const e = ft->fixups + i;
-
-        if (e->type == enum_fixup_sub) {
-            opcode_t  ci  = e->offset;
-            PMC      *sub = ct->constants[ci]->u.key;
-
-            Parrot_gc_mark_PMC_alive(interp, sub);
+    if (seg) {
+        PackFile_FixupTable * const ft = seg->fixups;
+        if (ft) {
+            PackFile_ConstTable * const ct = seg->const_table;
+            if (ct) {
+                INTVAL i;
+                for (i = 0; i < ft->fixup_count; ++i) {
+                    const PackFile_FixupEntry * const e = ft->fixups + i;
+
+                    if (e->type == enum_fixup_sub) {
+                        opcode_t  ci  = e->offset;
+                        PMC      *sub = ct->constants[ci]->u.key;
+
+                        Parrot_gc_mark_PMC_alive(interp, sub);
+                    }
+                }
+            }
         }
     }
 }
@@ -411,26 +396,24 @@
     }
 
     VTABLE INTVAL elements() {
-        INTVAL               i, n;
+        INTVAL                 n = 0;
         Parrot_Sub_attributes *sub;
-        PackFile_ByteCode   *seg;
-        PackFile_FixupTable *ft;
+        PackFile_ByteCode     *seg;
 
         PMC_get_sub(INTERP, SELF, sub);
         seg = sub->seg;
 
-        if (!seg)
-            return 0;
-
-        ft = seg->fixups;
-        if (!ft)
-            return 0;
-
-        for (i = n = 0; i < ft->fixup_count; ++i) {
-            const PackFile_FixupEntry * const e = ft->fixups + i;
-
-            if (e->type == enum_fixup_sub)
-                ++n;
+        if (seg) {
+            PackFile_FixupTable *const ft = seg->fixups;
+            if (ft) {
+                INTVAL i;
+                for (i = n = 0; i < ft->fixup_count; ++i) {
+                    const PackFile_FixupEntry * const e = ft->fixups + i;
+
+                    if (e->type == enum_fixup_sub)
+                        ++n;
+                }
+            }
         }
 
         return n;

Modified: branches/gsoc_past_optimization/src/pmc/filehandle.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/filehandle.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/filehandle.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -736,11 +736,12 @@
 
 */
 
-    METHOD seek(INTVAL whence, INTVAL offs, INTVAL offs_overflow :optional) {
-        const PIOOFF_T pio_offs = offs_overflow ?
+    METHOD seek(INTVAL whence, INTVAL offs, INTVAL offs_overflow :optional,
+                int has_overflow :opt_flag) {
+        const PIOOFF_T pio_offs = has_overflow ?
                                     Parrot_io_make_offset32(offs_overflow, offs) :
                                     offs;
-        if (Parrot_io_seek(INTERP, SELF, pio_offs, whence))
+        if (0 > Parrot_io_seek(INTERP, SELF, pio_offs, whence))
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_PIO_ERROR, "seek failed");
     }
 

Modified: branches/gsoc_past_optimization/src/pmc/fixedintegerarray.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/fixedintegerarray.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/fixedintegerarray.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -21,8 +21,20 @@
 
 /* HEADERIZER HFILE: none */
 /* HEADERIZER BEGIN: static */
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
+
+static int auxcmpfunc(const INTVAL *i, const INTVAL *j);
+#define ASSERT_ARGS_auxcmpfunc __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
+/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
 
+static int
+auxcmpfunc(const INTVAL *i, const INTVAL *j)
+{
+    ASSERT_ARGS(auxcmpfunc)
+    return *i - *j;
+}
+
 pmclass FixedIntegerArray auto_attrs provides array {
     ATTR INTVAL   size;  /* number of INTVALs stored in this array */
     ATTR INTVAL * int_array; /* INTVALs are stored here */
@@ -492,19 +504,23 @@
         SELF.set_pmc_keyed_int(k, value);
     }
 
-    METHOD sort(PMC *cmp_func) {
-        INTVAL *int_array;
+    METHOD sort(PMC *cmp_func :optional) {
         UINTVAL n;
         INTVAL  size;
 
         GET_ATTR_size(INTERP, SELF, size);
-
         n = (UINTVAL)size;
 
         if (n > 1) {
+            INTVAL *int_array;
             GET_ATTR_int_array(INTERP, SELF, int_array);
-            Parrot_quicksort(INTERP, (void**)int_array, n, cmp_func);
+            if (PMC_IS_NULL(cmp_func))
+                qsort(int_array, n, sizeof (INTVAL),
+                        (int (*)(const void *, const void*))auxcmpfunc);
+            else
+                Parrot_quicksort(INTERP, (void**)int_array, n, cmp_func);
         }
+        RETURN(PMC *SELF);
     }
 
 /*

Modified: branches/gsoc_past_optimization/src/pmc/hash.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/hash.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/hash.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1080,26 +1080,6 @@
 
 /*
 
-=item C<PMC *slice(PMC *key)>
-
-Return a new iterator for the slice PMC C<key>
-
-=cut
-
-*/
-
-    VTABLE PMC *slice(PMC *key, INTVAL f) {
-        if (f == 0) {
-            return SELF.get_iter();
-        }
-
-        Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_OUT_OF_BOUNDS,
-            "Hash: Unknown slice type");
-    }
-
-
-/*
-
 =item C<void visit(PMC *info)>
 
 Used during archiving to visit the elements in the hash.

Modified: branches/gsoc_past_optimization/src/pmc/hashiterator.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/hashiterator.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/hashiterator.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -172,7 +172,7 @@
         Parrot_HashIterator_attributes * const attrs =
                 PARROT_HASHITERATOR(SELF);
 
-        if (value == 0) {
+        if (value == ITERATE_FROM_START) {
             /* Restart iterator */
             attrs->bucket           = 0;
             attrs->pos              = 0;

Modified: branches/gsoc_past_optimization/src/pmc/key.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/key.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/key.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -78,11 +78,8 @@
                 break;
               case KEY_pmc_FLAG:
               case KEY_pmc_FLAG | KEY_register_FLAG:
-                {
-                    PMC * const p = key_pmc(INTERP, key);
-                    key_set_pmc(INTERP, dkey, VTABLE_clone(INTERP, p));
-                }
-                break;
+                Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
+                        "this is broken - see TT #1683");
               default:
                 break;
             }
@@ -223,7 +220,8 @@
 */
 
     VTABLE void set_pmc(PMC *value) {
-        key_set_pmc(INTERP, SELF, value);
+        Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
+                "this is broken - see TT #1683");
     }
 
 /*

Modified: branches/gsoc_past_optimization/src/pmc/namespace.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/namespace.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/namespace.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -456,11 +456,11 @@
                 key                 = VTABLE_shift_pmc(INTERP, key);
 
                 if (!key) {
-                    Parrot_set_global(INTERP, ns, part, value);
+                    Parrot_ns_set_global(INTERP, ns, part, value);
                     return;
                 }
 
-                ns = Parrot_make_namespace_keyed_str(INTERP, ns, part);
+                ns = Parrot_ns_make_namespace_keyed_str(INTERP, ns, part);
             }
         }
 
@@ -471,11 +471,11 @@
                 STRING * const part = VTABLE_get_string_keyed_int(INTERP, key, i);
 
                 if ((i + 1) >= elements) { /* Last entry in the array */
-                    Parrot_set_global(INTERP, ns, part, value);
+                    Parrot_ns_set_global(INTERP, ns, part, value);
                     return;
                 }
 
-                ns = Parrot_make_namespace_keyed_str(INTERP, ns, part);
+                ns = Parrot_ns_make_namespace_keyed_str(INTERP, ns, part);
             }
         }
 
@@ -515,7 +515,7 @@
             if (!key)
                 return VTABLE_get_pmc_keyed_str(INTERP, ns, part);
 
-            ns = Parrot_get_namespace_keyed_str(INTERP, ns, part);
+            ns = Parrot_ns_get_namespace_keyed_str(INTERP, ns, part);
 
             if (PMC_IS_NULL(ns))
                 return PMCNULL;
@@ -531,14 +531,14 @@
                     /* What to do here? Throw an exception or something? */
                     break;
                 }
-                ns = Parrot_get_namespace_keyed_str(INTERP, ns, name);
+                ns = Parrot_ns_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);
+            ns = Parrot_ns_get_namespace_keyed_str(INTERP, ns, name);
             return ns;
         }
         /* If we get the wrong type, should we throw an exception?
@@ -605,7 +605,7 @@
                     if (!key)
                         return VTABLE_get_pointer_keyed_str(INTERP, ns, part);
 
-                    ns = Parrot_get_namespace_keyed_str(INTERP, ns, part);
+                    ns = Parrot_ns_get_namespace_keyed_str(INTERP, ns, part);
 
                     if (PMC_IS_NULL(ns))
                         return PMCNULL;
@@ -621,7 +621,7 @@
                     if ((i + 1) >= elements)
                         return VTABLE_get_pointer_keyed_str(INTERP, ns, part);
 
-                    ns = Parrot_get_namespace_keyed_str(INTERP, ns, part);
+                    ns = Parrot_ns_get_namespace_keyed_str(INTERP, ns, part);
 
                     if (PMC_IS_NULL(ns))
                         return PMCNULL;
@@ -729,9 +729,9 @@
 */
 
     METHOD make_namespace(PMC *key) {
-        PMC *ns = Parrot_get_namespace_keyed(INTERP, SELF, key);
+        PMC *ns = Parrot_ns_get_namespace_keyed(INTERP, SELF, key);
         if (PMC_IS_NULL(ns)) {
-            ns = Parrot_make_namespace_keyed(INTERP, SELF, key);
+            ns = Parrot_ns_make_namespace_keyed(INTERP, SELF, key);
         }
         RETURN(PMC *ns);
     }

Modified: branches/gsoc_past_optimization/src/pmc/packfilefixupentry.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/packfilefixupentry.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/packfilefixupentry.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -47,6 +47,23 @@
         PObj_custom_mark_SET(SELF);
     }
 
+    VTABLE void init_pmc(PMC *init) {
+        Parrot_PackfileFixupEntry_attributes * attrs =
+                PMC_data_typed(SELF, Parrot_PackfileFixupEntry_attributes*);
+        STRING *name    = CONST_STRING_GEN(INTERP, "name");
+        STRING *type    = CONST_STRING_GEN(INTERP, "type");
+        STRING *offset  = CONST_STRING_GEN(INTERP, "offset");
+
+        attrs->name = VTABLE_get_string(INTERP,
+                        VTABLE_get_pmc_keyed_str(INTERP, init, name));
+        attrs->type = VTABLE_get_integer(INTERP,
+                        VTABLE_get_pmc_keyed_str(INTERP, init, type));
+        attrs->offset = VTABLE_get_integer(INTERP,
+                        VTABLE_get_pmc_keyed_str(INTERP, init, offset));
+
+        PObj_custom_mark_SET(SELF);
+    }
+
 /*
 
 =item C<void mark()>

Modified: branches/gsoc_past_optimization/src/pmc/packfilerawsegment.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/packfilerawsegment.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/packfilerawsegment.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -147,6 +147,15 @@
                 PARROT_PACKFILERAWSEGMENT(SELF)->opcodes);
     }
 
+    VTABLE INTVAL get_integer() {
+        return VTABLE_elements(INTERP,
+                PARROT_PACKFILERAWSEGMENT(SELF)->opcodes);
+    }
+
+    VTABLE FLOATVAL get_number() {
+        return VTABLE_elements(INTERP,
+                PARROT_PACKFILERAWSEGMENT(SELF)->opcodes);
+    }
 
 /*
 
@@ -177,6 +186,12 @@
             PARROT_PACKFILERAWSEGMENT(SELF)->opcodes, key, value);
     }
 
+    VTABLE void set_pmc_keyed(PMC *key, PMC *value) {
+        SELF.set_integer_keyed_int(
+            VTABLE_get_integer(INTERP, key),
+            VTABLE_get_integer(INTERP, value));
+    }
+
 /*
 
 =item C<void push_integer(INTVAL value)>
@@ -191,6 +206,12 @@
             PARROT_PACKFILERAWSEGMENT(SELF)->opcodes, value);
     }
 
+    VTABLE void push_pmc(PMC *value)  {
+        VTABLE_push_integer(INTERP,
+            PARROT_PACKFILERAWSEGMENT(SELF)->opcodes,
+                VTABLE_get_integer(INTERP, value));
+    }
+
 /*
 
 =item C<METHOD type()>

Modified: branches/gsoc_past_optimization/src/pmc/parrotinterpreter.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/parrotinterpreter.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/parrotinterpreter.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -844,6 +844,7 @@
 
     METHOD stdhandle(INTVAL fileno, PMC *newhandle :optional) {
         PMC * const handle = Parrot_io_stdhandle(INTERP, fileno, newhandle);
+        Parrot_warn_deprecated(INTERP, "stdhandle method is experimental");
         RETURN(PMC *handle);
     }
 

Modified: branches/gsoc_past_optimization/src/pmc/pmcproxy.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/pmcproxy.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/pmcproxy.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -251,12 +251,8 @@
         /* Look in the isa hash. */
         if (INTERP->vtables[_proxy->id]) {
             Hash *isa_hash = INTERP->vtables[_proxy->id]->isa_hash;
-
-            if (!isa_hash && Parrot_str_equal(INTERP,
-                     INTERP->vtables[_proxy->id]->whoami, classname))
-                return 1;
-
-            if (isa_hash && parrot_hash_exists(INTERP, isa_hash, classname))
+            PARROT_ASSERT(isa_hash);
+            if (parrot_hash_exists(INTERP, isa_hash, classname))
                 return 1;
         }
 

Modified: branches/gsoc_past_optimization/src/pmc/resizableintegerarray.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/resizableintegerarray.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/resizableintegerarray.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -313,8 +313,12 @@
     }
 
     VTABLE void thaw(PMC *info) {
-        const INTVAL n = VTABLE_shift_integer(INTERP, info);
-        const INTVAL rt = VTABLE_shift_integer(INTERP, info);
+        INTVAL n, rt;
+
+        SUPER(info);
+
+        n = VTABLE_shift_integer(INTERP, info);
+        rt = VTABLE_shift_integer(INTERP, info);
 
         SET_ATTR_size(INTERP, SELF, 0);
         SET_ATTR_resize_threshold(INTERP, SELF, rt);

Modified: branches/gsoc_past_optimization/src/pmc/resizablepmcarray.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/resizablepmcarray.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/resizablepmcarray.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -27,6 +27,16 @@
 /* HEADERIZER BEGIN: static */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
+PARROT_INLINE
+static void do_shift(ARGIN(PMC *arr))
+        __attribute__nonnull__(1);
+
+PARROT_INLINE
+static void do_unshift(PARROT_INTERP, ARGIN(PMC *arr), ARGIN(PMC *val))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
 PARROT_DOES_NOT_RETURN
 static void throw_pop_empty(PARROT_INTERP)
         __attribute__nonnull__(1);
@@ -35,6 +45,12 @@
 static void throw_shift_empty(PARROT_INTERP)
         __attribute__nonnull__(1);
 
+#define ASSERT_ARGS_do_shift __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(arr))
+#define ASSERT_ARGS_do_unshift __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(arr) \
+    , PARROT_ASSERT_ARG(val))
 #define ASSERT_ARGS_throw_pop_empty __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp))
 #define ASSERT_ARGS_throw_shift_empty __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
@@ -42,6 +58,34 @@
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: static */
 
+PARROT_INLINE
+static void
+do_shift(ARGIN(PMC *arr))
+{
+    ASSERT_ARGS(do_shift)
+    INTVAL    size = PMC_size(arr);
+    PMC     **item = PMC_array(arr);
+
+    PMC_size(arr) = --size;
+    mem_sys_memmove(item, item + 1, size * sizeof (PMC *));
+    item[size] = PMCNULL;
+}
+
+PARROT_INLINE
+static void
+do_unshift(PARROT_INTERP, ARGIN(PMC *arr), ARGIN(PMC *val))
+{
+    ASSERT_ARGS(do_unshift)
+    const INTVAL size = PMC_size(arr);
+    PMC        **item;
+
+    VTABLE_set_integer_native(interp, arr, size + 1);
+    item = PMC_array(arr);
+    mem_sys_memmove(item + 1, item, size * sizeof (PMC *));
+    item[0] = val;
+}
+
+
 pmclass ResizablePMCArray extends FixedPMCArray auto_attrs provides array {
     ATTR INTVAL resize_threshold; /* max size before array needs resizing */
 
@@ -143,82 +187,50 @@
 */
 
     VTABLE FLOATVAL shift_float() {
-        INTVAL    size = PMC_size(SELF);
-        PMC      *data;
-        PMC     **item;
-        FLOATVAL  value;
+        INTVAL   size = PMC_size(SELF);
+        FLOATVAL value;
 
         if (0 == size)
             throw_shift_empty(INTERP);
 
-        item           = PMC_array(SELF);
-        data           = item[0];
-        value          = VTABLE_get_number(INTERP, data);
-        PMC_size(SELF) = --size;
-
-        mem_sys_memmove(item, item + 1, size * sizeof (PMC *));
-
-        item[size] = PMCNULL;
-
+        value = VTABLE_get_number(INTERP, PMC_array(SELF)[0]);
+        do_shift(SELF);
         return value;
     }
 
     VTABLE INTVAL shift_integer() {
-        INTVAL    size = PMC_size(SELF);
-        PMC      *data;
-        PMC     **item;
-        INTVAL    value;
+        INTVAL size = PMC_size(SELF);
+        INTVAL value;
 
         if (0 == size)
             throw_shift_empty(INTERP);
 
-        item           = PMC_array(SELF);
-        data           = item[0];
-        value          = VTABLE_get_integer(INTERP, data);
-        PMC_size(SELF) = --size;
-
-        mem_sys_memmove(item, item + 1, size * sizeof (PMC*));
-        item[size] = PMCNULL;
-
+        value = VTABLE_get_integer(INTERP, PMC_array(SELF)[0]);
+        do_shift(SELF);
         return value;
     }
 
     VTABLE PMC *shift_pmc() {
-        INTVAL  size = PMC_size(SELF);
-        PMC    *data;
-        PMC   **item;
+        INTVAL size = PMC_size(SELF);
+        PMC   *data;
 
         if (0 == size)
             throw_shift_empty(INTERP);
 
-        item           = PMC_array(SELF);
-        data           = item[0];
-        PMC_size(SELF) = --size;
-
-        mem_sys_memmove(item, item + 1, size * sizeof (PMC *));
-        item[size] = PMCNULL;
-
+        data = PMC_array(SELF)[0];
+        do_shift(SELF);
         return data;
     }
 
     VTABLE STRING *shift_string() {
         INTVAL   size = PMC_size(SELF);
-        PMC     *data;
-        PMC    **item;
         STRING  *value;
 
         if (0 == size)
             throw_shift_empty(INTERP);
 
-        item           = PMC_array(SELF);
-        data           = item[0];
-        value          = VTABLE_get_string(INTERP, data);
-        PMC_size(SELF) = --size;
-
-        mem_sys_memmove(item, item + 1, size * sizeof (PMC *));
-
-        item[size] = PMCNULL;
-
+        value = VTABLE_get_string(INTERP, PMC_array(SELF)[0]);
+        do_shift(SELF);
         return value;
     }
 
@@ -515,79 +527,27 @@
 
     VTABLE void unshift_float(FLOATVAL value) {
 
-        const INTVAL size = PMC_size(SELF);
-        PMC * const val   = Parrot_pmc_new(INTERP, enum_class_Float);
-        PMC   **data;
-        INTVAL  i;
-
+        PMC * const val = Parrot_pmc_new(INTERP, enum_class_Float);
         VTABLE_set_number_native(INTERP, val, value);
-        SELF.set_integer_native(size + 1);
-
-        data = PMC_array(SELF);
-
-        for (i = size; i; --i)
-            data[i] = data[i - 1];
-
-        data[0] = val;
-
-        return;
+        do_unshift(INTERP, SELF, val);
     }
 
     VTABLE void unshift_integer(INTVAL value) {
 
-        const INTVAL size = PMC_size(SELF);
-        PMC * const val   = Parrot_pmc_new_init_int(INTERP, enum_class_Integer, value);
-        PMC    **data;
-        INTVAL   i;
-
-        SELF.set_integer_native(size + 1);
-
-        data = PMC_array(SELF);
-
-        for (i = size; i; --i)
-            data[i] = data[i - 1];
-
-        data[0] = val;
-
-        return;
+        PMC * const val = Parrot_pmc_new_init_int(INTERP, enum_class_Integer, value);
+        do_unshift(INTERP, SELF, val);
     }
 
     VTABLE void unshift_pmc(PMC *value) {
 
-        const INTVAL size = PMC_size(SELF);
-        PMC   **data;
-        INTVAL  i;
-
-        SELF.set_integer_native(size + 1);
-
-        data = PMC_array(SELF);
-
-        for (i = size; i; --i)
-            data[i] = data[i - 1];
-
-        data[0] = value;
-
-        return;
+        do_unshift(INTERP, SELF, value);
     }
 
     VTABLE void unshift_string(STRING *value) {
 
-        const INTVAL size = PMC_size(SELF);
-        PMC * const val  = Parrot_pmc_new(INTERP, enum_class_String);
-        PMC   **data;
-        INTVAL  i;
-
+        PMC * const val = Parrot_pmc_new(INTERP, enum_class_String);
         VTABLE_set_string_native(INTERP, val, value);
-        SELF.set_integer_native(size + 1);
-
-        data = PMC_array(SELF);
-
-        for (i = size; i; --i)
-            data[i] = data[i - 1];
-
-        data[0] = val;
-
-        return;
+        do_unshift(INTERP, SELF, val);
     }
 
 /*
@@ -790,6 +750,14 @@
 
 =over 4
 
+=item C<static void do_shift(PMC *arr)>
+
+Common part for shift operations.
+
+=item C<static void do_unshift(PARROT_INTERP, PMC *arr, PMC *val)>
+
+Common part for unshift operations.
+
 =item C<static void throw_shift_empty(PARROT_INTERP)>
 
 =item C<static void throw_pop_empty(PARROT_INTERP)>

Modified: branches/gsoc_past_optimization/src/pmc/role.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/role.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/role.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -101,7 +101,7 @@
          * to look one up with and do so. */
         PMC *_namespace = VTABLE_get_pmc_keyed_str(interp, info, namespace_str);
         if (!VTABLE_isa(interp, _namespace, ns_string))
-            _namespace = Parrot_make_namespace_autobase(interp, _namespace);
+            _namespace = Parrot_ns_make_namespace_autobase(interp, _namespace);
 
         /* If we get something null back it's an error; otherwise, store it. */
         if (!PMC_IS_NULL(_namespace))
@@ -121,7 +121,7 @@
 
         /* Namespace is nested in the current namespace and with the name of
          * the role. */
-        role->_namespace = Parrot_make_namespace_keyed_str(interp,
+        role->_namespace = Parrot_ns_make_namespace_keyed_str(interp,
             Parrot_pcc_get_namespace(interp, CURRENT_CONTEXT(interp)), role->name);
     }
 
@@ -131,7 +131,7 @@
          * to look one up with and do so. */
         PMC *_namespace = VTABLE_get_pmc_keyed_str(interp, info, namespace_str);
         if (!VTABLE_isa(interp, _namespace, ns_string))
-            _namespace = Parrot_make_namespace_autobase(interp, _namespace);
+            _namespace = Parrot_ns_make_namespace_autobase(interp, _namespace);
 
         /* If we get something null back it's an error; otherwise, store it. */
         if (PMC_IS_NULL(_namespace))

Modified: branches/gsoc_past_optimization/src/pmc/scheduler.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/scheduler.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/scheduler.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -251,6 +251,7 @@
 */
     VTABLE void destroy() {
         Parrot_Scheduler_attributes * const core_struct = PARROT_SCHEDULER(SELF);
+        core_struct->interp->scheduler = NULL;
         /* TT #946: this line is causing an order-of-destruction error
            because the scheduler is being freed before its tasks.
            Commenting this out till we get a real fix (although it's a hack) */

Modified: branches/gsoc_past_optimization/src/pmc/string.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/string.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/string.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -56,10 +56,6 @@
 
     VTABLE void mark() {
         STRING *str_val;
-
-        if (!PMC_data(SELF))
-            return;
-
         GET_ATTR_str_val(INTERP, SELF, str_val);
         Parrot_gc_mark_STRING_alive(INTERP, str_val);
     }

Modified: branches/gsoc_past_optimization/src/pmc/stringhandle.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/stringhandle.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/stringhandle.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -109,12 +109,9 @@
         PMC * const copy = Parrot_pmc_new(INTERP, enum_class_StringHandle);
         Parrot_StringHandle_attributes * const data_struct = PARROT_STRINGHANDLE(copy);
 
-        if (old_struct->stringhandle != NULL)
-            data_struct->stringhandle = old_struct->stringhandle;
-        if (old_struct->mode != NULL)
-            data_struct->mode     = old_struct->mode;
-        if (old_struct->encoding != NULL)
-            data_struct->encoding = old_struct->encoding;
+        data_struct->stringhandle = old_struct->stringhandle;
+        data_struct->mode     = old_struct->mode;
+        data_struct->encoding = old_struct->encoding;
         data_struct->flags    = old_struct->flags;
 
         return copy;

Modified: branches/gsoc_past_optimization/src/pmc/stringiterator.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/stringiterator.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/stringiterator.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -139,19 +139,21 @@
     VTABLE void set_integer_native(INTVAL value) {
         Parrot_StringIterator_attributes * const attrs =
                 PARROT_STRINGITERATOR(SELF);
-        if (value == ITERATE_FROM_START) {
+        switch (value) {
+          case ITERATE_FROM_START:
             attrs->reverse   = 0;
             attrs->pos       = 0;
             attrs->length    = VTABLE_elements(INTERP, attrs->string);
-        }
-        else if (value == ITERATE_FROM_END) {
+            break;
+          case ITERATE_FROM_END:
             attrs->reverse   = 1;
             attrs->pos       = attrs->length
                              = VTABLE_elements(INTERP, attrs->string);
-        }
-        else
+            break;
+          default:
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_INVALID_OPERATION,
                     "Wrong direction for StringIterator");
+        }
     }
 
 /*

Modified: branches/gsoc_past_optimization/src/pmc/sub.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/sub.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/sub.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -108,6 +108,7 @@
         attrs->outer_sub       = PMCNULL;
         attrs->multi_signature = PMCNULL;
         attrs->namespace_name  = PMCNULL;
+        attrs->vtable_index    = -1;
 
         PObj_custom_mark_destroy_SETALL(SELF);
     }
@@ -167,6 +168,8 @@
         field = CONST_STRING(INTERP, "vtable_index");
         if (VTABLE_exists_keyed_str(INTERP, init, field))
             attrs->vtable_index = VTABLE_get_integer_keyed_str(INTERP, init, field);
+        else
+            attrs->vtable_index = -1;
 
         field = CONST_STRING(INTERP, "multi_signature");
         if (VTABLE_exists_keyed_str(INTERP, init, field))

Modified: branches/gsoc_past_optimization/src/pmc/timer.pmc
==============================================================================
--- branches/gsoc_past_optimization/src/pmc/timer.pmc	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc/timer.pmc	Wed Jun 23 00:34:17 2010	(r47770)
@@ -105,7 +105,7 @@
 
 =item C<void init_pmc(PMC *init)>
 
-See F<docs/pdds/pdd02_vtables.pod> for initializers.
+Takes an even-length collection of keys and values.
 
 =cut
 

Modified: branches/gsoc_past_optimization/src/pmc_freeze.c
==============================================================================
--- branches/gsoc_past_optimization/src/pmc_freeze.c	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/pmc_freeze.c	Wed Jun 23 00:34:17 2010	(r47770)
@@ -78,9 +78,10 @@
 {
     ASSERT_ARGS(Parrot_freeze_pbc)
     PMC *visitor;
-
     PMC * const pf_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
-    VTABLE_set_pointer(interp, pf_pmc, (void *)pf);
+    DECL_CONST_CAST;
+
+    VTABLE_set_pointer(interp, pf_pmc, PARROT_const_cast(void *, (const void*)pf));
 
     visitor  = Parrot_pmc_new_init(interp, enum_class_ImageIO, pf_pmc);
     VTABLE_set_pmc(interp, visitor, pmc);
@@ -131,10 +132,11 @@
 Parrot_freeze_pbc_size(PARROT_INTERP, ARGIN(PMC *pmc), ARGIN(const PackFile_ConstTable *pf))
 {
     ASSERT_ARGS(Parrot_freeze_pbc_size)
-    PMC     *pf_pmc, *visitor, *pmc_result;
+    PMC *pf_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
+    PMC *visitor, *pmc_result;
+    DECL_CONST_CAST;
 
-    pf_pmc = Parrot_pmc_new(interp, enum_class_UnManagedStruct);
-    VTABLE_set_pointer(interp, pf_pmc, (void *)pf);
+    VTABLE_set_pointer(interp, pf_pmc, PARROT_const_cast(void *, (const void *)pf));
 
     visitor = Parrot_pmc_new_init(interp, enum_class_ImageIOSize, pf_pmc);
     VTABLE_set_pmc(interp, visitor, pmc);

Modified: branches/gsoc_past_optimization/src/scheduler.c
==============================================================================
--- branches/gsoc_past_optimization/src/scheduler.c	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/scheduler.c	Wed Jun 23 00:34:17 2010	(r47770)
@@ -403,7 +403,7 @@
 Parrot_cx_delete_task(PARROT_INTERP, ARGIN(PMC *task))
 {
     ASSERT_ARGS(Parrot_cx_delete_task)
-    if (interp->scheduler && !PObj_on_free_list_TEST(interp->scheduler)) {
+    if (interp->scheduler) {
         const INTVAL tid = VTABLE_get_integer(interp, task);
         VTABLE_delete_keyed_int(interp, interp->scheduler, tid);
     }

Modified: branches/gsoc_past_optimization/src/thread.c
==============================================================================
--- branches/gsoc_past_optimization/src/thread.c	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/thread.c	Wed Jun 23 00:34:17 2010	(r47770)
@@ -197,7 +197,7 @@
         /* Skip vtable overrides and methods. */
         if (ret_val_sub->vtable_index == -1
                 && !(ret_val_sub->comp_flags & SUB_COMP_FLAG_METHOD)) {
-            Parrot_store_sub_in_namespace(interp, ret_val);
+            Parrot_ns_store_sub(interp, ret_val);
         }
     }
     else {

Modified: branches/gsoc_past_optimization/src/warnings.c
==============================================================================
--- branches/gsoc_past_optimization/src/warnings.c	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/src/warnings.c	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 $Id$
 
 =head1 NAME
@@ -124,6 +124,30 @@
 
 /*
 
+=item C<void Parrot_warn_deprecated(PARROT_INTERP, const char *message)>
+
+Warn about use of a deprecated feature
+
+C<message> is a C string.
+
+=cut
+
+*/
+
+PARROT_EXPORT
+void
+Parrot_warn_deprecated(PARROT_INTERP, ARGIN(const char *message))
+{
+    ASSERT_ARGS(Parrot_warn_deprecated)
+
+    if (PARROT_WARNINGS_test(interp, PARROT_WARNINGS_DEPRECATED_FLAG)) {
+        STRING *msg = Parrot_sprintf_c(interp, "WARNING: %s\n", message);
+        print_warning(interp, msg);
+    }
+}
+
+/*
+
 =back
 
 =head1 SEE ALSO

Modified: branches/gsoc_past_optimization/t/compilers/imcc/syn/regressions.t
==============================================================================
--- branches/gsoc_past_optimization/t/compilers/imcc/syn/regressions.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/compilers/imcc/syn/regressions.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -6,7 +6,7 @@
 use warnings;
 use lib qw( . lib ../lib ../../lib );
 use Test::More;
-use Parrot::Test tests => 22;
+use Parrot::Test tests => 21;
 
 pir_error_output_like( <<'CODE', <<'OUT', 'invalid get_results syntax');
 .sub main :main
@@ -191,19 +191,6 @@
 3
 OUT
 
-TODO: {
-    local $TODO = "works in PIR, not PASM";
-
-pasm_output_is( <<"CODE", <<'OUT', 'long register numbers in PASM (TT #1025)');
-      new P$register, 'Integer'
-      assign P$register, 3
-  say P$register
-CODE
-3
-OUT
-
-}
-
 pir_error_output_like( <<'CODE', <<'OUT', 'die in immediate, TT #629');
 .sub 'foo' :immediate
   die 'no'

Copied: branches/gsoc_past_optimization/t/dynoplibs/io-old.t (from r47769, trunk/t/dynoplibs/io-old.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_past_optimization/t/dynoplibs/io-old.t	Wed Jun 23 00:34:17 2010	(r47770, copy of r47769, trunk/t/dynoplibs/io-old.t)
@@ -0,0 +1,91 @@
+#! perl
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+use strict;
+use warnings;
+use lib qw( . lib ../lib ../../lib );
+
+use Test::More;
+use Parrot::Test tests => 4;
+use Parrot::Test::Util 'create_tempfile';
+
+=head1 NAME
+
+t/pmc/io.t - IO Ops
+
+=head1 SYNOPSIS
+
+    % prove t/pmc/io.t
+
+=head1 DESCRIPTION
+
+Tests the Parrot IO operations.
+
+=cut
+
+my ($FOO, $temp_file) = create_tempfile( UNLINK => 1 );
+close $FOO;
+
+pasm_error_output_like( <<"CODE", <<'OUTPUT', '32bit seek: exception (ops)' );
+.loadlib 'io_ops'
+   open P0, "$temp_file", 'w'
+   seek P0, -1, 0
+   say "error!"
+   end
+CODE
+/seek failed \(32bit\)/
+OUTPUT
+
+pasm_error_output_like( <<"CODE", <<'OUTPUT', '64bit seek: exception (ops)' );
+.loadlib 'io_ops'
+   open P0, "$temp_file", 'w'
+   seek P0, -1, -1, 0
+   say "error!"
+   end
+CODE
+/seek failed \(64bit\)/
+OUTPUT
+
+pasm_output_is( <<"CODE", <<'OUTPUT', "peek (ops)" );
+.loadlib 'io_ops'
+    open P0, "$temp_file", 'w'
+    print P0, "a line\\n"
+    close P0
+    open P0, "$temp_file", 'r'
+    peek S0, P0
+    print S0
+    peek S1, P0
+    print S1
+    print "\\n"
+    read S2, P0, 2
+    peek S3, P0
+    print S3
+    print "\\n"
+    end
+CODE
+aa
+l
+OUTPUT
+
+pasm_output_is( <<"CODE", <<'OUTPUT', "peek on an empty file (ops)" );
+.loadlib 'io_ops'
+    open P0, "$temp_file", 'w'
+    close P0
+    open P0, "$temp_file", 'r'
+    peek S0, P0
+    eq S0, "", OK1
+    print "not "
+OK1:
+    say "ok 1"
+    end
+CODE
+ok 1
+OUTPUT
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Modified: branches/gsoc_past_optimization/t/dynoplibs/io.t
==============================================================================
--- branches/gsoc_past_optimization/t/dynoplibs/io.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/dynoplibs/io.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1,5 +1,5 @@
 #!./parrot
-# Copyright (C) 2008, Parrot Foundation.
+# Copyright (C) 2008-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -16,7 +16,7 @@
 
 =cut
 
-.const int TESTS = 5
+.const int TESTS = 12
 
 .loadlib 'io_ops'
 
@@ -25,12 +25,18 @@
 
     plan(TESTS)
 
+    read_on_null()
     open_delegates_to_filehandle_pmc()
     open_null_filename()
     open_null_mode()
     open_pipe_for_reading()
     getfd_fdopen()
-    open_pipe_for_writing() # must be last (doesn't use test_more)
+    printerr_tests()
+    stat_tests()
+
+    # must come after (these don't use test_more)
+    open_pipe_for_writing()
+    read_invalid_fh()
 .end
 
 .sub open_delegates_to_filehandle_pmc
@@ -154,7 +160,7 @@
     pipe = open command, 'wp'
     unless pipe goto open_pipe_for_writing_failed
 
-    pipe.'puts'("ok 5 - open pipe for writing\n")
+    pipe.'puts'("ok 9 - open pipe for writing\n")
     close pipe
     .return ()
 
@@ -173,16 +179,97 @@
     $I0 = $P0.'get_fd'()
     fdopen $P1, $I0, 'w'
     $I0 = defined $P1
-    ok($I0, 'get_fd()/fdopen')
-    close $P1
-
-    getstdout $P0
-    $I0 = $P0.'get_fd'()
-    fdopen $P1, $I0, 'w'
-    $I0 = defined $P1
     ok($I0, 'fdopen - no close')
 .end
 
+.sub 'read_on_null'
+    .const string description = "read on null PMC throws exception"
+    push_eh eh
+    null $P1
+    $S0 = read $P1, 1
+    ok(0, description)
+    goto ret
+  eh:
+    ok(1, description)
+  ret:
+    pop_eh
+    .return ()
+.end
+
+.sub 'read_invalid_fh'
+    $P0 = new ['FileHandle']
+
+    push_eh _readline_handler
+    $S0 = readline $P0
+    print "not "
+
+_readline_handler:
+        print "ok 10\n"
+        pop_eh
+
+    push_eh _read_handler
+    $S0 = read $P0, 1
+    print "not "
+
+_read_handler:
+        print "ok 11\n"
+        pop_eh
+
+    push_eh _print_handler
+    print $P0, "kill me now\n"
+    print "not "
+
+_print_handler:
+        print "ok 12\n"
+        pop_eh
+.end
+
+.sub 'printerr_tests'
+    # temporarily capture stderr
+    $P0 = getstderr
+    $P1 = new ['StringHandle']
+    $S0 = null
+    $P1.'open'($S0, 'w')
+    setstderr $P1
+
+    $P2 = new ['String']
+    $P2 = "This is a test\n"
+    printerr 10
+    printerr "\n"
+    printerr 1.0
+    printerr "\n"
+    printerr "foo"
+    printerr "\n"
+    printerr $P2
+
+    # restore stderr
+    setstderr $P0
+
+    $S0 = $P1.'readall'()
+    is($S0, <<'OUTPUT', 'printerr opcode')
+10
+1
+foo
+This is a test
+OUTPUT
+.end
+
+.sub 'stat_tests'
+    .local pmc pio
+    .local int len
+    .const string description = 'stat failed'
+    .include "stat.pasm"
+  push_eh eh
+    len = stat 'no_such_file', .STAT_FILESIZE
+    ok(0, description)
+    goto ret
+  eh:
+    ok(1, description)
+  ret:
+    pop_eh
+    .return ()
+.end
+
 .namespace ["Testing"]
 
 .sub open :method

Modified: branches/gsoc_past_optimization/t/examples/pir.t
==============================================================================
--- branches/gsoc_past_optimization/t/examples/pir.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/examples/pir.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -7,7 +7,7 @@
 use lib qw( . lib ../lib ../../lib );
 
 use Test::More;
-use Parrot::Test tests => 17;
+use Parrot::Test tests => 18;
 use Parrot::Config;
 
 =head1 NAME
@@ -181,6 +181,10 @@
 +---------+---------+---------+
 solved
 END_EXPECTED
+
+    'make_hello_pbc.pir' => << 'END_EXPECTED',
+Hello World
+END_EXPECTED
 );
 
 # expected output of a quine is the quine itself

Copied: branches/gsoc_past_optimization/t/library/uri_escape.t (from r47769, trunk/t/library/uri_escape.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_past_optimization/t/library/uri_escape.t	Wed Jun 23 00:34:17 2010	(r47770, copy of r47769, trunk/t/library/uri_escape.t)
@@ -0,0 +1,54 @@
+#!./parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/library/uri_escape.t
+
+=head1 DESCRIPTION
+
+Test the URI Escape library
+
+=head1 SYNOPSIS
+
+    % prove t/library/uri_escape.t
+
+=cut
+
+.sub 'main' :main
+    .include 'test_more.pir'
+
+    load_bytecode 'URI/Escape.pbc'
+
+    plan(6)
+
+    $P0 = new ['Exporter']
+    $P1 = get_namespace ['URI'; 'Escape']
+    $P2 = get_namespace
+    $P0.'import'($P1 :named('source'), $P2 :named('destination'), 'percent_encode percent_encode_component' :named('globals'))
+
+    $S0 = percent_encode('Hello')
+    is($S0, 'Hello', 'plain ascii without special chars')
+
+    $S0 = percent_encode_component('Hello')
+    is($S0, 'Hello', 'plain ascii without special chars - component')
+
+    $S0 = percent_encode('Hello?world')
+    is($S0, 'Hello?world', 'plain ascii')
+
+    $S1 = percent_encode_component('Hello?world')
+    is($S1, 'Hello%3Fworld', 'plain ascii - component')
+
+    $S0 = percent_encode(iso-8859-1:"A\x{D1}O#a")
+    is($S0, 'A%C3%91O#a', 'iso-8859-1 string')
+
+    $S0 = percent_encode_component(iso-8859-1:"A\x{D1}O#a")
+    is($S0, 'A%C3%91O%23a', 'iso-8859-1 string - component')
+.end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

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

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

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

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

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

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

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

Copied: branches/gsoc_past_optimization/t/oo/objects.t (from r47769, trunk/t/oo/objects.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_past_optimization/t/oo/objects.t	Wed Jun 23 00:34:17 2010	(r47770, copy of r47769, trunk/t/oo/objects.t)
@@ -0,0 +1,1791 @@
+#!./parrot
+# Copyright (C) 2001-2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/oo/objects.t - Objects
+
+=head1 SYNOPSIS
+
+    % prove t/oo/objects.t
+
+=head1 DESCRIPTION
+
+Tests the object/class subsystem.
+
+=cut
+
+.sub main :main
+    .include 'test_more.pir'
+    .include "iglobals.pasm"
+    .include "interpinfo.pasm"
+
+    plan(194)
+
+    get_classname_from_class()
+    test_get_class()
+    test_isa()
+    does_scalar()
+    does_array()
+    new_object()
+    new_object__isa_test()
+    new_object__classname()
+    isa_subclass()
+    isa_subclass__objects()
+    test_addmethod()
+    test_addattribute()
+    addattribute_subclass()
+    addattribute_subclass__same_name()
+    set_and_get_object_attribs()
+    set_and_get_multiple_object_attribs()
+    attribute_values_are_specific_to_objects()
+    attribute_values_and_subclassing()
+    attribute_values_and_subclassing_2()
+    PMC_as_classes__overridden_mmd_methods()
+    typeof_class()
+    typeof_objects()
+    multiple_inheritance__with_attributes()
+    attributes_two_levels_of_inheritance()
+    class_op_test()
+    anon_subclass_has_no_name()
+    get_attrib_by_name()
+    get_attrib_by_name_subclass()
+    set_attrib_by_name_subclass()
+    PMC_as_classes()
+    PMC_as_classes__subclass()
+    PMC_as_classes__instantiate()
+    PMC_as_classes__methods()
+    PMC_as_classes__mmd_methods()
+    PMC_as_classes__derived_1()
+    PMC_as_classes__derived_2()
+    PMC_as_classes__derived_3()
+    subclassing_Class()
+    namespace_vs_name()
+    multiple_anon_classes()
+    subclassed_Integer_bug()
+    equality_of_subclassed_Integer()
+    short_name_attributes()
+    init_with_and_without_arg()
+    newclass_bracket_parsing()
+    verify_namespace_types()
+    verify_data_type()
+    new_keyed()
+    new_keyed_2()
+    new_keyed_3()
+    subclass_keyed()
+    test_class_name_multipart_name()
+    test_get_class_multipart_name()
+    isa_bug()
+    new_nested_ordering()
+    vtable_override_once_removed()
+    vtable_fails_for_subclasses_of_core_classes()
+    super___init_called_twice()
+    using_class_object_from_typeof_op_with_new()
+    setting_non_existent_attribute()
+    setting_non_existent_attribute_by_name()
+    getting_null_attribute()
+    getting_non_existent_attribute()
+    addparent_exceptions_1()
+    addparent_exceptions_2()
+    subclassing_a_non_existent_class()
+    anon_subclass_of_non_existent_class()
+    addattribute_duplicate()
+    wrong_way_to_create_new_objects()
+    attribute_values__subclassing_access_meths()
+    attribute_values__inherited_access_meths()
+
+    # END_OF_TESTS
+.end
+
+.sub get_classname_from_class
+    newclass $P1, "Foo5"
+    set $S0, $P1
+    is( $S0, "Foo5", "got classname Foo5" )
+
+    subclass $P2, $P1, "Bar5"
+    set $S1, $P2
+    is( $S1, "Bar5", "got subclass Bar5" )
+
+    subclass $P3, "Foo5", "Baz5"
+    set $S2, $P3
+    is( $S2, "Baz5", "got subclass Baz5" )
+.end
+
+.sub test_get_class
+    newclass $P1, "Foo6"
+    get_class $P2, "Foo6"
+    set $S2, $P2
+    is( $S2, "Foo6", 'get_class for Foo6' )
+
+    subclass $P3, $P1, "FooBar6"
+    get_class $P4, "FooBar6"
+    set $S4, $P4
+    is( $S4, 'FooBar6', 'get_class for FooBar6' )
+
+    get_class $P3, "NoSuch6"
+    isnull $I0, $P3
+    ok( $I0, "no class for 'NoSuch6'" )
+.end
+
+.sub test_isa
+    new $P1, ['Boolean']
+
+    isa $I0, $P1, "Boolean"
+    is( $I0, 1, 'Boolean isa Boolean' )
+
+    isa $I0, $P1, "Bool"
+    is( $I0, 0, 'Boolean !isa Bool' )
+
+    isa $I0, $P1, "scalar"
+    is( $I0, 1, 'Boolean isa scalar' )
+
+    isa $I0, $P1, "calar"
+    is( $I0, 0, 'Boolean !isa calar' )
+
+    isa $I0, $P1, "Integer"
+    is( $I0, 1, 'Boolean isa Integer' )
+
+    isa $I0, $P1, "Integ"
+    is( $I0, 0, 'Boolean !isa Integ' )
+
+    isa $I0, $P1, "eger"
+    is( $I0, 0, 'Boolean !isa eger' )
+
+    isa $I0, $P1, " "
+    is( $I0, 0, 'Boolean !isa " "' )
+
+    isa $I0, $P1, ""
+    is( $I0, 0, 'Boolean !isa ""' )
+
+    null $S0
+    isa $I0, $P1, $S0
+    is( $I0, 0, 'Boolean !isa null $S0' )
+
+    set $S0, "scalar"
+    isa $I0, $P1, $S0
+    is( $I0, 1, 'Boolean isa scalar $S0' )
+.end
+
+.sub does_scalar
+    new $P1, ['Boolean']
+
+    does $I0, $P1, "Boolean"
+    is( $I0, 0, 'Boolean !does Boolean' )
+
+    does $I0, $P1, "Bool"
+    is( $I0, 0, 'Boolean !does Bool' )
+
+    does $I0, $P1, "scalar"
+    is( $I0, 1, 'Boolean does scalar' )
+.end
+
+.sub does_array
+    new $P1, ['OrderedHash']
+
+    does $I0, $P1, "Boolean"
+    is( $I0, 0, 'OrderedHash !does Boolean' )
+
+    does $I0, $P1, "Bool"
+    is( $I0, 0, 'OrderedHash !does Bool' )
+
+    does $I0, $P1, "hash"
+    is( $I0, 1, 'OrderedHash does hash' )
+
+    does $I0, $P1, "array"
+    is( $I0, 1, 'OrderedHash does array' )
+.end
+
+.sub new_object
+    newclass $P1, "Foo7"
+    new $P2, "Foo7"
+    ok( 1, 'created new object from Foo7 class' )
+.end
+
+.sub new_object__isa_test
+    newclass $P1, "Foo8"
+    new $P2, $P1
+    ok( 1, 'created new object from Foo8 class' )
+
+    isa $I0, $P2, "Foo8"
+    ok( $I0, 'new object isa Foo8' )
+.end
+
+.sub new_object__classname
+    newclass $P1, "Foo9"
+    new $P2, $P1
+    set $S0, $P1    # class
+    is( $S0, "Foo9", 'new object from Foo9 class as a string is Foo9' )
+
+    typeof $S0, $P2 # object
+    is( $S0, 'Foo9', 'typeof obj is Foo9' )
+
+    class $P3, $P1
+    set $S0, $P1    # class
+    is( $S0, 'Foo9', 'class of obj is Foo9' )
+
+    typeof $S0, $P2 # object
+    is( $S0, 'Foo9', 'typeof obj is Foo9' )
+
+.end
+
+.sub isa_subclass
+    newclass $P1, "Foo10"
+    subclass $P2, $P1, "Bar10"
+
+    isa_ok( $P2, "Foo10", 'newclass isa Foo10' )
+    isa_ok( $P2, "Bar10", 'new subclass isa Bar10' )
+    isa_ok( $P2, "Foo10", 'new subclass isa parent' )
+    isa_ok( $P2, "Class", 'new subclass isa Class' )
+
+    isa $I0, $P2, "Object"
+    is( $I0, 0, 'new subclass !isa Object' )
+.end
+
+.sub isa_subclass__objects
+    newclass $P3, "Foo30"
+    subclass $P4, $P3, "Bar30"
+    $P1 = $P3.'new'()
+    $P2 = $P4.'new'()
+
+    isa_ok( $P1, "Foo30",  'obj isa its class' )
+    isa_ok( $P2, "Bar30",  'obj isa its class' )
+    isa_ok( $P2, "Foo30",  'obj isa its parent class' )
+    isa_ok( $P2, "Object", 'obj isa Object' )
+    isa_ok( $P2, "Class",  'obj isa Class' )
+.end
+
+.sub test_addmethod
+    newclass $P0, 'Foo31'
+    $P2 = get_hll_global 'sayFoo31'
+
+    # add a method BEFORE creating a Foo object
+    addmethod $P0, 'foo31', $P2
+    $P1 = new 'Foo31'
+    $P1.'foo31'()
+
+    # get a method from some other namespace
+    $P2 = get_hll_global ['Bar31'], 'sayBar31'
+
+    # add a method AFTER creating the object
+    addmethod $P0, 'bar31', $P2
+    $P1.'bar31'()
+.end
+
+.sub sayFoo31
+    ok( 1, 'called method added before creating obj' )
+.end
+
+.namespace ['Bar31']
+.sub sayBar31
+    ok( 1, 'called method added after created obj' )
+.end
+
+.namespace [] # Reset to root namespace for next test
+
+.sub test_addattribute
+    newclass $P1, "Foo11"
+
+    addattribute $P1, "foo_i"
+    ok( 1, 'addattribute did not blow up' )
+
+    set $S0, $P1
+    is( $S0, "Foo11", '$P1 is still the same class as PMC' )
+
+    # Check that we can add multiple attributes
+    set $I0, 0
+l1:
+    set $S0, $I0
+    addattribute $P1, $S0
+    inc $I0
+    lt $I0, 1000, l1
+    ok( 1, 'addattribute 1000x without blow up' )
+.end
+
+.sub addattribute_subclass
+    newclass $P1, "Foo12"
+    addattribute $P1, "foo_i"
+    ok( 1, 'addattribute to Foo12' )
+
+    subclass $P2, $P1, "Bar12"
+    addattribute $P2, "bar_i"
+    ok( 1, 'addattribute to subclass of Foo12' )
+.end
+
+.sub addattribute_subclass__same_name
+    newclass $P1, "Foo32"
+    addattribute $P1, "i"
+    addattribute $P1, "j"
+
+    subclass $P2, $P1, "Bar32"
+    addattribute $P2, "j"
+    addattribute $P2, "k"
+
+    ok( 1, 'created class and subclass and added attributes' )
+
+    .local pmc o
+    o = $P2.'new'()
+    $P0 = getattribute o, 'i'
+    is( $P0, 'Foo32.i', 'parent attrib initialized in init' )
+    $P0 = getattribute o, ['Foo32'], 'j'
+    is( $P0, 'Foo32.j', 'parent attrib initialized in init' )
+    $P0 = getattribute o, ['Bar32'], 'j'
+    is( $P0, 'Bar32.j', 'subclass attrib initialized in init' )
+    $P0 = getattribute o, 'k'
+    is( $P0, 'Bar32.k', 'subclass attrib initialized in init' )
+
+    $P0 = getattribute o, 'i'
+    is( $P0, 'Foo32.i', 'parent attrib init-ed' )
+    $P0 = getattribute o, ['Foo32'], "j"
+    is( $P0, 'Foo32.j', 'parent attrib init-ed' )
+    $P0 = getattribute o, 'j'
+    is( $P0, 'Bar32.j', 'subclass attrib returned over parent' )
+    $P0 = getattribute o, 'k'
+    is( $P0, 'Bar32.k', 'subclass attrib init-ed' )
+.end
+
+.namespace ['Bar32']
+
+.sub init :vtable :method
+    $P0 = new ['String']
+    $P0 = 'Foo32.i'
+    setattribute self, ['Foo32'], "i", $P0
+    $P0 = new ['String']
+    $P0 = 'Foo32.j'
+    setattribute self, ["Foo32"], "j", $P0
+    $P0 = new ['String']
+    $P0 = 'Bar32.j'
+    setattribute self, ["Bar32"], "j", $P0
+    $P0 = new ['String']
+    $P0 = 'Bar32.k'
+    setattribute self, ["Bar32"], "k", $P0
+.end
+
+.namespace []       # Reset to root namespace for next test
+
+.sub set_and_get_object_attribs
+    newclass $P1, "Foo13"
+    addattribute $P1, "i"
+    new $P2, $P1
+
+    new $P3, ['Integer']
+    set $P3, 1024
+    setattribute $P2, "i", $P3
+
+    new $P4, ['Integer']
+    getattribute $P4, $P2, "i"
+
+    is( $P4, 1024, 'set/get Integer attribute' )
+.end
+
+.sub set_and_get_multiple_object_attribs
+    newclass $P1, "Foo14"
+    addattribute $P1, "i"
+    addattribute $P1, "j"
+    new $P2, "Foo14"
+
+    new $P3, ['Integer']
+    set $P3, 4201
+    new $P4, ['Hash']
+    set $P4["Key"], "Value"
+
+    setattribute $P2, "i", $P3
+    setattribute $P2, "j", $P4
+
+    getattribute $P5, $P2, "i"
+    is( $P5, '4201', 'set/get Integer attribute' )
+
+    getattribute $P6, $P2, "j"
+    set $S0, $P6["Key"]
+    is( $S0, 'Value', 'set/get Hash attribute on same obj' )
+.end
+
+.sub attribute_values_are_specific_to_objects
+    newclass $P1, "Foo15"
+    addattribute $P1, "i"
+    new $P2, $P1
+    new $P3, $P1
+
+    new $P4, ['Integer']
+    set $P4, 100
+    setattribute $P2, "i", $P4
+    new $P5, ['String']
+    set $P5, "One hundred"
+    setattribute $P3, "i", $P5
+
+    getattribute $P6, $P2, "i"
+    is( $P6, 100, 'attribute value on 1st object is specific to obj' )
+
+    getattribute $P6, $P3, "i"
+    is( $P6, 'One hundred', 'attribute value on 2nd obj is specific to obj' )
+.end
+
+.sub attribute_values_and_subclassing
+    newclass $P1, "Foo16"
+    addattribute $P1, "i"
+    addattribute $P1, "j"
+    subclass $P2, $P1, "Bar16"
+    addattribute $P2, "k"
+    addattribute $P2, "l"
+
+    new $P2, "Bar16"
+    new $P3, "Bar16"
+
+    # Note that setattribute holds the actual PMC, not a copy, so
+    # in this test both attributes get the PMC from $P4, and should
+    # both have the same value, despite the C<inc>.
+    new $P4, ['Integer']
+    set $P4, 10
+    setattribute $P2, "i", $P4
+    inc $P4
+    setattribute $P2, "j", $P4
+
+    new $P5, ['Integer']
+    set $P5, 100
+    setattribute $P3, "i", $P5
+    inc $P5
+    setattribute $P3, "j", $P5
+
+    getattribute $P6, $P2, "i"
+    is( $P6, 11, 'setattrib with a PMC holds actual PMC not copy' )
+
+    getattribute $P6, $P2, "j"
+    is( $P6, 11, '...so changes to the PMC appear through the attrib' )
+
+    getattribute $P6, $P3, "i"
+    is( $P6, 101, '...and second test on new objects' )
+
+    getattribute $P6, $P3, "j"
+    is( $P6, 101, '...should have same result' )
+.end
+
+.sub attribute_values_and_subclassing_2
+    newclass $P1, "Foo17"
+    # must add attributes before object instantiation
+    addattribute $P1, ".i"
+    addattribute $P1, ".j"
+
+    subclass $P2, $P1, "Bar17"
+    addattribute $P2, ".k"
+    addattribute $P2, ".l"
+
+    # subclass is preferred for the SI case over
+    #   newclass $P2, "Bar"
+    #   addattrib ...
+    #   addparent $P2, $P1
+    # which is suitable for adding multiple parents to one class
+
+    # instantiate a Bar object
+    new $P3, "Bar17"
+
+    # Set the attribute values
+    new $P10, ['String']           # set attribute values
+    set $P10, "i"                # attribute slots have reference semantics
+    setattribute $P3, ".i", $P10  # so always put new PMCs in
+                                # if you have unique values
+    new $P10, ['String']
+    set $P10, "j"
+    setattribute $P3, ".j", $P10
+
+    new $P10, ['String']
+    set $P10, "k"
+    setattribute $P3, ".k", $P10
+
+    new $P10, ['String']
+    set $P10, "l"
+    setattribute $P3, ".l", $P10
+
+    # retrieve attribs
+    getattribute $P11, $P3, ".i"
+    is( $P11, "i", 'string attribute get/set on parent' )
+
+    getattribute $P11, $P3, ".j"
+    is( $P11, "j", 'string attribute get/set on parent' )
+
+    getattribute $P11, $P3, ".k"
+    is( $P11, "k", 'string attribute get/set on subclass' )
+
+    getattribute $P11, $P3, ".l"
+    is( $P11, "l", 'string attribute get/set on subclass' )
+.end
+
+.sub PMC_as_classes__overridden_mmd_methods
+    .local pmc myint, i, j, k
+
+    get_class $P0, "Integer"
+    subclass myint, $P0, "MyInt1"
+
+    i = new 'MyInt1'
+    j = new 'MyInt1'
+    k = new 'MyInt1'
+    i = 6
+    j = 7
+    k = i + j
+
+    is( k, 13, 'added two MyInt1' )
+
+    j = new ['Integer']
+    j = 100
+    k = i + j
+
+    is( k, 106, 'added MyInt1 and an Integer' )
+.end
+
+.namespace ["MyInt1"]
+
+.sub add :multi(MyInt1, MyInt1, MyInt1)
+    .param pmc self
+    .param pmc right
+    .param pmc dest
+    ok( 1, 'in the add method' )
+    $P0 = getattribute self, ['Integer'], "proxy"
+    $I0 = $P0
+    $I1 = right
+    $I2 = $I0 + $I1
+    dest = $I2
+    .return(dest)
+.end
+
+.namespace []       # Reset to root namespace for next test
+
+.sub typeof_class
+    newclass $P0, "Foo21"
+    typeof $S0, $P0
+    is( $S0, "Class", 'typeof for a Class PMC is "Class"' )
+.end
+
+.sub typeof_objects
+    newclass $P0, "A"
+    newclass $P1, "B"
+
+    new $P0, ['A']
+    new $P1, ['B']
+
+    typeof $S0, $P0
+    typeof $S1, $P1
+
+    is( $S0, 'A', 'typeof object of class A is "A"' )
+    is( $S1, 'B', 'typeof object of class B is "B"' )
+.end
+
+.sub multiple_inheritance__with_attributes
+    newclass $P1, "Star"
+    addattribute $P1, "Spectral Type"
+
+    newclass $P2, "Company"
+    addattribute $P2, "Annual Profit"
+
+    subclass $P3, $P1, "Sun"
+    addparent $P3, $P2
+
+    new $P4, ['Sun']
+
+    new $P5, ['String']
+    set $P5, "G"
+    setattribute $P4, "Spectral Type", $P5
+
+    new $P6, ['String']
+    set $P6, "$100,000,000"
+    setattribute $P4, "Annual Profit", $P6
+
+    getattribute $P7, $P4, "Spectral Type"
+    is( $P7, 'G', 'direct parents attribute' )
+
+    getattribute $P8, $P4, "Annual Profit"
+    is( $P8, '$100,000,000', "addparent's attribute" )
+.end
+
+.sub attributes_two_levels_of_inheritance
+    newclass $P0, "Astronomical Object"
+    addattribute $P0, "Location"
+
+    subclass $P1, $P0, "Star2"
+    addattribute $P1, "Spectral Type"
+
+    newclass $P2, "Sun2"
+    addparent $P2, $P1
+    addparent $P2, $P0
+
+    new $P4, "Sun2"
+
+    new $P5, ['String']
+    set $P5, "Taurus"
+    setattribute $P4, "Location", $P5
+    getattribute $P6, $P4, "Location"
+    is( $P6, 'Taurus', 'attributes with two levels of inheritance' )
+.end
+
+.sub class_op_test
+    newclass $P0, "City1"
+    new $P1, "City1"
+
+    class $P2, $P1
+    set $S0, $P2
+    is( $S0, 'City1', 'class op works' )
+.end
+
+.sub anon_subclass_has_no_name
+    newclass $P0, "City2"
+    subclass $P1, $P0
+    set $S0, $P1
+    is( $S0, '', 'anonymous subclass has no name' )
+.end
+
+.sub get_attrib_by_name
+    newclass $P1, "Foo18"
+    addattribute $P1, "i"
+    new $P2, "Foo18"
+    new $P3, ['String']
+    set $P3, "ok"
+    setattribute $P2, "i", $P3
+
+    getattribute $P4, $P2, ["Foo18"], "i"
+    is( $P4, 'ok', 'get attrib by name' )
+.end
+
+.sub get_attrib_by_name_subclass
+    newclass $P0, "Bar19"
+    addattribute $P0, "j"
+
+    subclass $P1, $P0, "Foo19"
+    addattribute $P1, "i"
+
+    new $P2, "Foo19"
+
+    new $P3, ['String']
+    set $P3, "foo i"
+    setattribute $P2, "i", $P3
+
+    new $P3, ['String']
+    set $P3, "bar j"
+    setattribute $P2, "j", $P3
+
+    getattribute $P4, $P2, ["Foo19"], "i"
+    is( $P4, 'foo i', 'attribute from subclass get by name' )
+
+    getattribute $P4, $P2, ["Bar19"], "j"
+    is( $P4, 'bar j', 'attribute from parent class get by name' )
+.end
+
+.sub set_attrib_by_name_subclass
+    newclass $P0, "Bar20"
+    addattribute $P0, "j"
+
+    subclass $P1, $P0, "Foo20"
+    addattribute $P1, "i"
+
+    new $P2, "Foo20"
+
+    new $P3, ['String']
+    set $P3, "foo i"
+    setattribute $P2, ["Foo20"], "i", $P3
+
+    new $P3, ['String']
+    set $P3, "bar j"
+    setattribute $P2, ["Bar20"], "j", $P3
+
+    getattribute $P4, $P2, "i"
+    is( $P4, 'foo i', 'attribute from subclass set by name' )
+
+    getattribute $P4, $P2, "j"
+    is( $P4, 'bar j', 'attribute from parent class set by name' )
+.end
+
+.sub PMC_as_classes
+    get_class $P0, "Integer"
+    ok( 1, "get_class of Integer did't croak" )
+
+    get_class $P0, "Integer"
+    ok( 1, "get_class of Integer did't croak second time" )
+
+    typeof $S0, $P0
+    is( $S0, 'PMCProxy', 'typeof PMCProxy' )
+.end
+
+.sub PMC_as_classes__subclass
+    .local pmc MyInt3
+    get_class $P0, "Integer"
+    ok( 1, "get_class on Integer didn't blow up" )
+
+    subclass MyInt3, $P0, "MyInt3"
+    ok( 1, "subclassing didn't blow up" )
+
+    $S0 = typeof MyInt3
+    is( $S0, 'Class', 'new subclass is typeof Class' )
+
+    $I0 = isa MyInt3, "MyInt3"
+    ok( $I0, 'new subclass isa MyInt' )
+
+    $I0 = isa MyInt3, "Integer"
+    ok( $I0, 'new subclass isa parent class' )
+.end
+
+.sub PMC_as_classes__instantiate
+    .local pmc MyInt4
+    get_class $P0, "Integer"
+    ok( 1, 'able to get_class of Integer' )
+
+    subclass MyInt4, $P0, "MyInt4"
+    addattribute MyInt4, ".i"
+    ok( 1, 'able to addattribute to subclass' )
+
+    .local pmc i
+    i = new "MyInt4"
+    ok( 1, 'able to instantiate obj of subclass w/ attribute' )
+.end
+
+.sub PMC_as_classes__methods
+    .local pmc MyInt5
+    get_class $P0, "Integer"
+
+    subclass MyInt5, $P0, "MyInt5"
+    addattribute MyInt5, "intval"
+
+    .local pmc i, i2
+    i = new "MyInt5"
+    i2 = new ['Integer']
+    i2 = 43
+
+    i = 42    # set_integer is inherited from Integer
+    ok( 1, 'able to assign int to MyInt' )
+
+    $I0 = i   # get_integer is overridden below
+    is( $I0, 42, 'get_integer is overridden for MyInt5' )
+
+    $S0 = i   # get_string is overridden below
+    is( $S0, 'MyInt5(42)', 'get_string is overridden for MyInt5' )
+.end
+
+.namespace ["MyInt5"]
+
+.sub set_integer_native :vtable :method
+   .param int new_value
+   $P1 = new ['Integer']
+   $P1 = new_value
+   setattribute self, "intval", $P1
+.end
+
+.sub get_integer :vtable :method
+   $P0 = getattribute self, "intval"
+   $I0 = $P0
+   .return ($I0)
+.end
+
+.sub get_string :vtable :method
+   $P0 = getattribute self, "intval"
+   $I0 = $P0
+   $S1 = $I0
+   $S0 = "MyInt5("
+   $S0 .= $S1
+   $S0 .= ")"
+   .return ($S0)
+.end
+
+.namespace []       # Reset to root namespace for next test
+
+.sub PMC_as_classes__mmd_methods
+  .local pmc MyInt6
+  get_class $P0, "Integer"
+  subclass MyInt6, $P0, "MyInt6"
+  .local pmc i
+  .local pmc j
+  .local pmc k
+  i = new "MyInt6"
+  j = new "MyInt6"
+  k = new "MyInt6"
+  i = 6
+  j = 7
+  k = i * j
+  $I0 = k
+  is( $I0, 42, 'MyInt6 defaults to Integer class for mult' )
+
+  $S0 = k   # get_string is overridden below
+  is( $S0, 'MyInt6(42)', 'get_string is overridden for MyInt6' )
+.end
+
+.namespace ["MyInt6"]
+
+.sub get_string :vtable :method
+   $I0 = self   # get_integer is not overridden
+   $S1 = $I0
+   $S0 = "MyInt6("
+   $S0 .= $S1
+   $S0 .= ")"
+   .return ($S0)
+.end
+
+.namespace []       # Reset to root namespace for next test
+
+.sub PMC_as_classes__derived_1
+  .local pmc MyInt8
+  .local pmc MyInt8_2
+  get_class $P0, "Integer"
+
+  subclass MyInt8, $P0, "MyInt8"
+  addattribute MyInt8, 'intval'
+  get_class $P1, "MyInt8"
+  subclass MyInt8_2, $P1, "MyInt8_2"
+
+  .local pmc i
+  i = new "MyInt8_2"
+  $I0 = isa i, "Integer"
+  ok( $I0, 'obj isa grandparent (Integer)' )
+
+  $I0 = isa i, "MyInt8"
+  ok( $I0, 'obj isa parent (MyInt8)' )
+
+  $I0 = isa i, "MyInt8_2"
+  ok( $I0, 'obj isa its class (MyInt8_2)' )
+
+  i = 42    # set_integer is overridden below
+  $I0 = i   # get_integer is overridden below
+  is( $I0, 42, 'set/get_integer overridden' )
+
+  $S0 = i   # get_string is overridden below
+  is( $S0, 'MyInt8_2(42)', 'set/get_string overridden' )
+.end
+
+.namespace ["MyInt8"]
+.sub 'set_integer_native' :vtable :method
+    .param int val
+    $P1 = new ['Integer']
+    $P1 = val
+    setattribute self, "intval", $P1
+    .return ()
+.end
+.sub get_integer :vtable :method
+   $P0 = getattribute self, 'intval'
+   $I0 = $P0
+   .return ($I0)
+.end
+.sub get_string :vtable :method
+   $P0 = getattribute self, 'intval'
+   $I0 = $P0
+   $S1 = $I0
+   $S0 = typeof self
+   $S0 .= "("
+   $S0 .= $S1
+   $S0 .= ")"
+   .return ($S0)
+.end
+
+.namespace []       # Reset to root namespace for next test
+
+.sub PMC_as_classes__derived_2
+  .local pmc MyInt9
+  .local pmc MyInt9_2
+  get_class $P0, "Integer"
+
+  subclass MyInt9, $P0, "MyInt9"
+  addattribute MyInt9, 'intval'
+  get_class $P1, "MyInt9"
+  subclass MyInt9_2, $P1, "MyInt9_2"
+
+  .local pmc i
+  i = new "MyInt9_2"
+  $I0 = isa i, "Integer"
+  ok( $I0, 'obj isa grandparent (Integer)' )
+  $I0 = isa i, "MyInt9"
+  ok( $I0, 'obj isa parent (MyInt9)' )
+  $I0 = isa i, "MyInt9_2"
+  ok( $I0, 'obj isa its class (MyInt9_2)' )
+
+  i = 42    # set_integer is overridden below
+  $I0 = i   # get_integer is overridden below
+  is( $I0, 43, 'set/get_integer overridden' )
+
+  $S0 = i   # get_string is overridden below
+  is( $S0, 'MyInt9_2(42)', 'set/get_string overridden' )
+.end
+
+.namespace ["MyInt9_2"]
+# subclassing methods from MyInt9 is ok
+# this one changes the value a bit
+.sub get_integer :vtable :method
+   $P0 = getattribute self, 'intval'
+   $I0 = $P0
+   inc $I0            # <<<<<
+   .return ($I0)
+.end
+.namespace ["MyInt9"]
+.sub 'set_integer_native' :vtable :method
+    .param int val
+    $P1 = new ['Integer']
+    $P1 = val
+    setattribute self, "intval", $P1
+    .return ()
+.end
+.sub get_integer :vtable :method
+   $P0 = getattribute self, 'intval'
+   $I0 = $P0
+   .return ($I0)
+.end
+.sub get_string :vtable :method
+   $P0 = getattribute self, 'intval'
+   $I0 = $P0
+   $S1 = $I0
+   $S0 = typeof self
+   $S0 .= "("
+   $S0 .= $S1
+   $S0 .= ")"
+   .return ($S0)
+.end
+
+.namespace []       # Reset to root namespace for next test
+
+.sub PMC_as_classes__derived_3
+    .local pmc MyInt10
+    .local pmc MyInt10_2
+    get_class $P0, "Integer"
+
+    subclass MyInt10, $P0, "MyInt10"
+    addattribute MyInt10, 'intval'
+    get_class $P1, "MyInt10"
+    subclass MyInt10_2, $P1, "MyInt10_2"
+
+    .local pmc i
+    i = new "MyInt10_2"
+    $I0 = isa i, "Integer"
+    ok( $I0, 'obj isa grandparent (Integer)' )
+    $I0 = isa i, "MyInt10"
+    ok( $I0, 'obj isa parent (MyInt10)' )
+    $I0 = isa i, "MyInt10_2"
+    ok( $I0, 'obj isa its class (MyInt102)' )
+
+    i = 42    # set_integer is overridden below
+    $I0 = i   # get_integer is overridden below
+    is( $I0, 42, 'set/get_integer overridden' )
+
+    $S0 = i   # get_string is overridden below
+    is( $S0, 'MyInt10_2(42)', 'set/get_string overridden' )
+.end
+
+.namespace ["MyInt10_2"]
+.sub get_integer :vtable :method
+    $P0 = getattribute self, 'intval'
+    $I0 = $P0
+    .return ($I0)
+.end
+.sub get_string :vtable :method
+    $P0 = getattribute self, 'intval'
+    $I0 = $P0
+    $S1 = $I0
+    $S0 = typeof self
+    $S0 .= "("
+    $S0 .= $S1
+    $S0 .= ")"
+    .return ($S0)
+.end
+.namespace ['MyInt10']
+.sub 'set_integer_native' :vtable :method
+    .param int val
+    $P1 = new ['Integer']
+    $P1 = val
+    setattribute self, "intval", $P1
+    .return ()
+.end
+
+.namespace []       # Reset to root namespace for next test
+
+.sub subclassing_Class
+    .local pmc cl
+    .local pmc parent
+    parent = get_class "Class"
+    cl = subclass parent, "Foo33"
+    ok( 1, 'able to subclass Class' )
+
+    .local pmc o
+    o = new "Foo33"
+    ok( 1, 'able to instantiate subclass of Class' )
+
+    $S0 = typeof o
+    is( $S0, 'Foo33', 'object returns correct class' )
+.end
+
+.sub namespace_vs_name
+    .local pmc o, cl, f
+    newclass cl, "Foo34"
+    o = new "Foo34"
+    is( o, 'Foo34::get_string', 'found Foo34 namespace' )
+
+    o = Foo34()
+    is( o, 'Foo34', 'found global Foo34' )
+
+    f = get_global "Foo34"
+    o = f()
+    is( o, 'Foo34', 'found global Foo34 explicitly' )
+
+    f = get_global ["Foo34"], "Foo34"
+    o = f()
+    is( o, 'Foo34::Foo34', 'found method in Foo34 namespace' )
+.end
+
+.sub Foo34
+    .return("Foo34")
+.end
+
+.namespace [ "Foo34" ]
+
+.sub get_string :vtable :method
+    .return("Foo34::get_string")
+.end
+
+.sub Foo34
+    .return("Foo34::Foo34")
+.end
+
+.namespace []       # Reset to root namespace for next test
+
+.sub multiple_anon_classes
+     newclass $P0, "City3"
+     subclass $P1, $P0
+     newclass $P2, "State3"
+     subclass $P3, $P2
+     ok( 1,  "multiple anon classes didn't croak (bug #33103)" )
+.end
+
+.sub subclassed_Integer_bug
+   .local pmc class
+   .local pmc a
+   .local pmc b
+
+    subclass class, "Integer", "LispInteger1"
+
+    a = new "LispInteger1"
+    b = new "LispInteger1"
+
+    a = 1
+    b = 1
+
+    set $S0, a
+    is( $S0, '1', 'subclassed Integer is 1' )
+    set $S0, b
+    is( $S0, '1', 'subclassed Integer is 1' )
+
+    a = a * b
+    set $S0, a
+    is( $S0, '1', 'multip and reasign to subclassed Integer is 1' )
+.end
+
+.sub equality_of_subclassed_Integer
+  .local pmc class
+  class = subclass "Integer", "LispInteger2"
+
+  .local pmc a
+  a = new 'LispInteger2'
+  a = 123
+
+  .local pmc b
+  b = new 'LispInteger2'
+  b = 123
+
+  $I0 = a == b
+  ok( $I0, '123 is equal to 123' )
+
+.end
+
+.sub short_name_attributes
+    newclass $P1, "Foo22"
+    addattribute $P1, "i"
+    addattribute $P1, "j"
+
+    subclass $P2, $P1, "Bar22"
+    addattribute $P2, "k"
+    addattribute $P2, "l"
+
+    new $P2, "Bar22"
+
+    # set a bunch of attribs
+    new $P4, ['Integer']
+    set $P4, 10
+    setattribute $P2, "i", $P4
+
+    new $P4, ['Integer']
+    set $P4, 11
+    setattribute $P2, "j", $P4
+
+    new $P4, ['Integer']
+    set $P4, 20
+    setattribute $P2, "k", $P4
+
+    new $P4, ['Integer']
+    set $P4, 21
+    setattribute $P2, "l", $P4
+
+    getattribute $P6, $P2, "i"
+    is( $P6, 10, '"i" getattribute on parent class attrib' )
+    getattribute $P6, $P2, "j"
+    is( $P6, 11, '"j" getattribute on parent class attrib' )
+
+    getattribute $P6, $P2, "k"
+    is( $P6, 20, '"k" getattribute on subclass attrib' )
+    getattribute $P6, $P2, "l"
+    is( $P6, 21, '"l" getattribute on subclass attrib' )
+
+    getattribute $P6, $P2, ["Foo22"], "i"
+    is( $P6, 10, '["Foo22"], "i" getattribute on parent class attrib' )
+    getattribute $P6, $P2, ["Bar22"], "k"
+    is( $P6, 20, '["Bar22"], "k" getattribute on subclass attrib' )
+.end
+
+.sub init_with_and_without_arg
+    .local pmc cl, o, h, a
+    cl = newclass "Foo35"
+    addattribute cl, "a"
+    o = cl.'new'()
+    a = getattribute o, "a"
+    is( a, 'ok 1', 'init without an arg' )
+
+    h = new ['Hash']
+    $P0 = new ['String']
+    $P0 = "ok 2"
+    h['a'] = $P0
+    o  = new cl, h
+    a = getattribute o, "a"
+    is( a, 'ok 2', 'init with an arg' )
+.end
+
+.namespace ["Foo35"]
+.sub init_pmc :vtable :method
+    .param pmc args
+    $P0 = args['a']
+    setattribute self, 'a', $P0
+    .return()
+.end
+.sub init :vtable :method
+    $P0 = new ['String']
+    $P0 = "ok 1"
+    setattribute self, 'a', $P0
+.end
+
+.namespace []       # Reset to root namespace for next test
+
+.sub newclass_bracket_parsing
+    newclass $P0, ['Foo23';'Bar23']
+    ok( 1, 'newclass  created with brackets' )
+.end
+
+.sub verify_namespace_types
+    newclass $P0, ['Foo24';'Bar24']
+    getinterp $P0
+    set $P1, $P0[.IGLOBALS_CLASSNAME_HASH]
+    typeof $S0, $P1
+    is( $S0, 'NameSpace', 'namespace verified' )
+
+    set $P2, $P1['Foo24']
+    typeof $S0, $P2
+    is( $S0, 'NameSpace', 'namespace verified' )
+.end
+
+.sub verify_data_type
+    newclass $P0, ['Foo25';'Bar25']
+    getinterp $P0
+    set $P1, $P0[.IGLOBALS_CLASSNAME_HASH]
+    set $P2, $P1['Foo25']
+    set $P3, $P2['Bar25']
+
+    set $I0, $P3
+    isgt $I0, $I0, 0
+    ok( $I0, 'verified datatype > 0' )
+.end
+
+# Puts init in a namespace
+.sub new_keyed
+    .local pmc cl, o, p
+    cl = newclass ['Foo36';'Bar36']
+    addattribute cl, "init_check"
+    o = cl.'new'()
+    ok( 1, 'obj successfully created' )
+
+    p = getattribute o, "init_check"
+    is( p, 999, "overridden init called")
+.end
+
+.namespace ['Foo36';'Bar36']
+
+.sub init :vtable :method
+    .local pmc p
+    p = new ['Integer']
+    p = 999
+    setattribute self, "init_check", p
+.end
+
+.namespace []   # revert to root for next test
+
+.sub new_keyed_2
+    .local pmc c1, c2, o1, o2
+    c1 = newclass ['Foo37';'Bar37']
+    c2 = newclass ['Foo37';'Fuz37']
+    o1 = c1.'new'()
+    o2 = c2.'new'()
+    ok( 1, 'objects created successfully' )
+.end
+
+.namespace ['Foo37';'Bar37']
+
+.sub init :vtable :method
+    ok( 1, '__init Bar37' )
+.end
+
+.namespace ['Foo37';'Fuz37']
+
+.sub init :vtable :method
+    ok( 1, '__init Fuz37' )
+.end
+
+.namespace []   # revert to root for next test
+
+.sub new_keyed_3
+    .local pmc c1, c2, c3, o1, o2, o3
+    c1 = newclass ['Foo38';'Bar38']
+    c2 = newclass ['Foo38';'Buz38']
+    c3 = newclass 'Foo38'
+    o1 = new      ['Foo38';'Bar38']
+    o2 = new      ['Foo38';'Buz38']
+    o3 = new      'Foo38'
+    ok( 1, 'objects created successfully' )
+.end
+
+.namespace ['Foo38';'Bar38']
+
+.sub init :vtable :method
+    ok( 1, '__init Bar38' )
+.end
+
+.namespace ['Foo38';'Buz38']
+
+.sub init :vtable :method
+    ok( 1, '__init Buz38' )
+.end
+
+.namespace ['Foo38']
+
+.sub init :vtable :method
+    ok( 1, '__init Foo38' )
+.end
+
+.namespace []   # revert to root for next test
+
+.sub subclass_keyed
+    .local pmc base, o1, o2
+    base = subclass 'Hash', ['Perl6-3'; 'PAST'; 'Node']
+    addattribute base, '$.source'                  # original source
+    addattribute base, '$.pos'                     # offset position
+
+    $P0 = subclass base, ['Perl6-3'; 'PAST'; 'Sub']
+    $P0 = subclass base, ['Perl6-3'; 'PAST'; 'Stmt']
+    ok( 1, 'ok 1\n' )
+
+    o1 = new   ['Perl6-3'; 'PAST'; 'Sub']
+    o2 = new   ['Perl6-3'; 'PAST'; 'Stmt']
+    ok( 1, 'objects created successfully' )
+.end
+
+.namespace ['Perl6-3'; 'PAST'; 'Stmt']
+
+.sub init :vtable :method
+    ok( 1, '__init Stmt' )
+.end
+
+.namespace ['Perl6-3'; 'PAST'; 'Sub']
+
+.sub init :vtable :method
+    ok( 1, '__init Sub' )
+.end
+
+.namespace []   # revert to root for next test
+
+.sub test_class_name_multipart_name
+    .local pmc base, o1
+    base = subclass 'Hash', ['Perl6'; 'PAST'; 'Node']
+    o1 = new base
+    $S0 = typeof o1
+    is( $S0, "Perl6;PAST;Node", "typeof returns object's class name" )
+.end
+
+.sub test_get_class_multipart_name
+    .local pmc base, o1
+    base = subclass 'Hash', ['Perl6a'; 'PAST'; 'Node']
+    $P0 = get_class ['Perl6a'; 'PAST'; 'Node']
+    o1 = new $P0
+    $S0 = typeof o1
+    is( $S0, 'Perl6a;PAST;Node', 'typeof returns objects created from get_class' )
+.end
+
+.sub isa_bug
+    .local pmc base, o1, o2
+    base = subclass 'Hash', ['Perl6b'; 'PAST'; 'Node']
+    $P0 = new [ 'Perl6b'; 'PAST'; 'Node' ]
+
+    $I0 = isa $P0, [ 'Perl6b'; 'PAST'; 'Node']
+    is( $I0, 1, 'obj isa the full class name' )
+
+    $I0 = isa $P0, 'Hash'
+    is( $I0, 1, 'obj isa the parent class' )
+
+    $I0 = isa $P0, 'Perl6b'
+    is( $I0, 0, 'obj !isa the first part of the class name' )
+.end
+
+.sub new_nested_ordering
+    .local pmc c1, c2, o
+    c1 = newclass ['Foo39']
+    c2 = newclass ['Foo39';'Bar39']
+    o = c2.'new'()
+    ok( 1, 'objects created successfully' )
+.end
+
+.namespace ['Foo39']
+
+.sub init :vtable :method
+    ok( 0, '__init Foo39' )     # shouldn't be called
+.end
+
+.namespace ['Foo39';'Bar39']
+
+.sub init :vtable :method
+    ok( 1, '__init Bar39' )     # should be called
+.end
+
+.namespace []   # revert to root for next test
+
+.sub vtable_override_once_removed
+    .local pmc base
+    $P0 = get_class 'Integer'
+    base = subclass $P0, 'Foo40'      # create subclass 'Foo40'
+    addattribute base, '@!capt'
+
+    $P0 = subclass 'Foo40', 'Bar40'   # create subclass 'Bar40'
+    $P1 = new 'Bar40'                 # create an instance of 'Bar40'
+
+    $S1 = $P1                         # get its string representation
+    is( $S1, 'ok bar', 'get_string overridden' )
+.end
+
+.namespace [ 'Bar40' ]
+
+.sub 'get_string' :vtable :method
+    $S0 = 'ok bar'
+    .return ($S0)
+.end
+
+.namespace []   # revert to root for next test
+
+.sub vtable_fails_for_subclasses_of_core_classes
+    $P0 = subclass 'Hash', 'Foo41'
+    $P0 = subclass 'Hash', 'Bar41'
+
+    $P1 = new 'Foo41'
+    $S1 = $P1
+    is( $S1, 'Hello world', 'get_string :vtable :method' )
+
+    $P1 = new 'Bar41'
+    $S1 = $P1
+    is( $S1, 'Hello world', 'get_string :method :vtable' )
+.end
+
+.namespace [ 'Foo41' ]
+
+.sub 'get_string' :vtable :method
+    .return('Hello world')
+.end
+
+.namespace [ 'Bar41' ]
+
+.sub 'get_string' :method :vtable
+    .return('Hello world')
+.end
+
+.namespace []   # revert to root for next test
+
+.sub super___init_called_twice
+    $P0 = newclass 'Foo42'
+    $P1 = subclass $P0, 'Bar42'
+    addattribute $P1, 'i'
+
+    $P2 = $P1.'new'()
+.end
+
+.namespace [ 'Foo42' ]
+
+.sub 'init' :vtable :method
+    $P0 = getattribute self, 'i'
+    isnull $I1, $P0
+    ok( $I1, 'should be null' )
+
+    $P1 = new ['Integer']
+    setattribute self, "i", $P1  # i won't be null if init called again
+    .return ()
+.end
+
+.namespace []   # revert to root for next test
+
+.sub using_class_object_from_typeof_op_with_new
+    $P0 = newclass [ "Monkey" ; "Banana" ]
+    $P0 = $P0.'new'()
+    $S0 = $P0."ook"()
+    is( $S0, "Ook!", 'obj created from .new() class method' )
+
+    $P2 = typeof $P0
+    $P3 = new $P2
+    $S0 = $P3."ook"()
+    is( $S0, "Ook!", 'obj created from "new" called on result of typeof' )
+.end
+
+.namespace [ "Monkey" ; "Banana" ]
+.sub ook :method
+    $S1 = "Ook!"
+    .return ($S1)
+.end
+
+.namespace []   # revert to root for next test
+
+.macro exception_is ( M )
+    .local pmc exception
+    .local string message
+    .get_results (exception)
+
+    message = exception['message']
+    is( message, .M, .M )
+.endm
+
+.sub setting_non_existent_attribute
+    newclass $P1, "Foo45"
+    new $P2, $P1
+
+    new $P3, ['Integer']
+    push_eh handler
+        setattribute $P2, "bar", $P3
+    pop_eh
+    ok(0, "'No such attribute' exception not thrown")
+    goto end
+handler:
+    .exception_is( "No such attribute 'bar'" )
+end:
+.end
+
+.sub setting_non_existent_attribute_by_name
+    newclass $P1, "Foo47"
+    new $P2, $P1
+
+    new $P3, ['Integer']
+    push_eh handler
+        setattribute $P2, ["Foo47"], "no_such", $P3
+    pop_eh
+    ok(0, "'No such attribute' exception not thrown")
+    goto end
+handler:
+    .exception_is( "No such attribute 'no_such' in class 'Foo47'" )
+end:
+.end
+
+.sub getting_null_attribute
+    newclass $P1, "Foo51"
+    addattribute $P1, "i"
+    new $P2, "Foo51"
+
+    getattribute $P3, $P2, "i"
+    isnull $I0, $P3
+    is($I0, 1, "null attribute is null")
+.end
+
+.sub getting_non_existent_attribute
+    newclass $P1, "Foo52"
+    $P2 = $P1.'new'()
+
+    push_eh handler
+        getattribute $P3, $P2, "bar"
+    pop_eh
+    ok(0, "'No such attribute' exception not thrown")
+    goto end
+handler:
+    .exception_is( "No such attribute 'bar'" )
+end:
+.end
+
+.sub addparent_exceptions_1
+    newclass $P0, "Astronomical Object 2"
+    new $P1, ['String']
+    set $P1, "Not a class"
+    push_eh handler
+        addparent $P0, $P1
+    pop_eh
+    ok(0, "'Parent isn\'t a Class' exception not thrown")
+    goto end
+handler:
+    .exception_is( "Parent isn't a Class." )
+end:
+.end
+
+.sub addparent_exceptions_2
+    new $P0, ['Hash']
+    newclass $P1, "Trashcan"
+    push_eh handler
+        addparent $P0, $P1
+    pop_eh
+    ok(0, "'Only classes can be subclassed' exception not thrown")
+    goto end
+handler:
+    .exception_is( "Only classes can be subclassed" )
+end:
+.end
+
+.sub subclassing_a_non_existent_class
+    push_eh handler
+        subclass $P1, "Character", "Nemo"
+    pop_eh
+    ok(0, "nonexistent class exception not thrown")
+    goto end
+handler:
+    .exception_is( "Class 'Character' doesn't exist" )
+end:
+.end
+
+.sub anon_subclass_of_non_existent_class
+    push_eh handler
+        subclass $P1, "Character"
+    pop_eh
+    ok(0, "nonexistent class exception not thrown")
+    goto end
+handler:
+    .exception_is( "Class 'Character' doesn't exist" )
+end:
+.end
+
+.sub addattribute_duplicate
+    newclass $P1, "Foo53"
+    addattribute $P1, "i"
+    addattribute $P1, "j"
+    push_eh handler
+        addattribute $P1, "i"
+    pop_eh
+    ok(0, "attribute already exists exception not thrown")
+    goto end
+handler:
+    .exception_is( "Attribute 'i' already exists in 'Foo53'." )
+end:
+.end
+
+.sub wrong_way_to_create_new_objects
+    push_eh handler
+        new $P0, ['Object']
+    pop_eh
+    ok(0, "object instantiation exception not thrown")
+    goto end
+handler:
+    .exception_is( "Object must be created by a class." )
+end:
+.end
+
+.sub attribute_values__subclassing_access_meths
+    newclass $P1, "Foo54"
+    # must add attributes before object instantiation
+    addattribute $P1, "i"
+    addattribute $P1, "j"
+    # define attrib access functions in Foo54 namespace
+    get_global $P5, "Foo54__set"
+    addmethod $P1, "Foo54__set", $P5
+    get_global $P5, "Foo54__get"
+    addmethod $P1, "Foo54__get", $P5
+
+    subclass $P2, $P1, "Bar54"
+    addattribute $P2, "k"
+    addattribute $P2, "l"
+    get_global $P5, "Bar54__set"
+    addmethod $P2, "Bar54__set", $P5
+    get_global $P5, "Bar54__get"
+    addmethod $P2, "Bar54__get", $P5
+
+    # instantiate a Bar54 object
+    new $P13, "Bar54"
+
+    # Foo54 and Bar54 have attribute accessor methods
+    new $P5, ['String']        # set attribute values
+    set $P5, "i"       # attribute slots have reference semantics
+    set_args "0,0", $P5, "i"
+    callmethodcc $P13, "Foo54__set"
+    get_results ""
+
+    new $P5, ['String']
+    set $P5, "j"
+    set_args "0,0", $P5, "j"
+    callmethodcc  $P13,"Foo54__set"
+    get_results ""
+
+    new $P5, ['String']
+    set $P5, "k"
+    set_args "0,0", $P5, "k"
+    callmethodcc  $P13,"Bar54__set"
+    get_results ""
+
+    new $P5, ['String']
+    set $P5, "l"
+    set_args "0,0", $P5, "l"
+    callmethodcc  $P13,"Bar54__set"
+    get_results ""
+
+    # now retrieve attributes
+    set_args "0",  "i"
+    callmethodcc  $P13,"Foo54__get"
+    get_results "0", $P5
+    is( $P5, "i", 'got attrib i from Bar54->Foo54__get' )
+
+    set_args "0",  "j"
+    callmethodcc  $P13,"Foo54__get"
+    get_results "0", $P5
+    is( $P5, "j", 'got attrib j from Bar54->Foo54__get' )
+
+    set_args "0",  "k"
+    callmethodcc  $P13,"Bar54__get"
+    get_results "0", $P5
+    is( $P5, "k", 'got attrib k from Bar54->Bar54__get' )
+
+    set_args "0",  "l"
+    callmethodcc  $P13,"Bar54__get"
+    get_results "0", $P5
+    is( $P5, "l", 'got attrib l from Bar54->Bar54__get' )
+.end
+
+# set(obj: Pvalue, Iattr_idx)
+.sub Foo54__set
+    get_params "0,0", $P5, $S4
+    ok( 1, "in Foo54__set" )
+    interpinfo $P2, .INTERPINFO_CURRENT_OBJECT
+    setattribute $P2, $S4, $P5
+    set_returns ""
+    returncc
+.end
+
+# Pattr = get(obj: Iattr_idx)
+.sub Foo54__get
+    get_params "0", $S4
+    ok( 1, "in Foo54__get" )
+    interpinfo $P2, .INTERPINFO_CURRENT_OBJECT
+    getattribute $P5, $P2, $S4
+    set_returns "0", $P5
+    returncc
+.end
+
+.sub Bar54__set
+    get_params "0,0", $P5, $S4
+    interpinfo $P2, .INTERPINFO_CURRENT_OBJECT
+    ok( 1, "in Bar54__set" )
+    setattribute $P2, $S4, $P5
+    set_returns ""
+    returncc
+.end
+
+.sub Bar54__get
+    get_params "0", $S4
+    ok( 1, "in Bar54__get" )
+    interpinfo $P2, .INTERPINFO_CURRENT_OBJECT
+    getattribute $P5, $P2, $S4
+    set_returns "0", $P5
+    returncc
+.end
+
+.sub attribute_values__inherited_access_meths
+    newclass $P1, "Foo56"
+    # must add attributes before object instantiation
+    addattribute $P1, "i"
+    addattribute $P1, "j"
+    # define attrib access functions
+    get_global $P5, "set"
+    addmethod $P1, "set", $P5
+    get_global $P5, "get"
+    addmethod $P1, "get", $P5
+
+    subclass $P2, $P1, "Bar56"
+    addattribute $P2, "k"
+    addattribute $P2, "l"
+    addattribute $P2, "m"
+
+    # subclass is preferred for the SI case over
+    #   newclass $P2, "Bar56"
+    #   addattrib ...
+    #   addparent $P2, $P1
+    # which is suitable for adding multiple parents to one class
+
+    # instantiate a Bar56 object
+    new $P2, "Bar56"
+
+    # Foo56 and Bar56 have attribute accessor methods
+    new $P5, ['String']        # set attribute values
+    set $P5, "i"       # attribute slots have reference semantics
+    set_args "0,0,0", $P5, "Foo56", "i"
+    callmethodcc $P2, "set"
+
+    new $P5, ['String']
+    set $P5, "j"
+    set_args "0,0,0", $P5, "Foo56", "j"
+    callmethodcc $P2, "set"
+
+    new $P5, ['String']
+    set $P5, "k"
+    set_args "0,0,0", $P5, "Bar56", "k"
+    callmethodcc $P2, "set"
+
+    new $P5, ['String']
+    set $P5, "l"
+    set_args "0,0,0", $P5, "Bar56", "l"
+    callmethodcc $P2, "set"
+
+    new $P5, ['String']
+    set $P5, "m"
+    set_args "0,0,0", $P5, "Bar56", "m"
+    callmethodcc $P2, "set"
+
+    # now retrieve attributes
+    set_args "0,0", "Foo56", "i"
+    callmethodcc $P2, "get"
+    get_results "0", $P5
+    is( $P5, 'i', 'got attrib i from subclass through parent method' )
+
+    set_args "0,0", "Foo56", "j"
+    callmethodcc $P2, "get"
+    get_results "0", $P5
+    is( $P5, "j", 'got attrib i from subclass through parent method' )
+
+    set_args "0,0", "Bar56", "k"
+    callmethodcc $P2, "get"
+    get_results "0", $P5
+    is( $P5, "k", 'got attrib i from subclass through parent method' )
+
+    set_args "0,0", "Bar56", "l"
+    callmethodcc $P2, "get"
+    get_results "0", $P5
+    is( $P5, "l", 'got attrib i from subclass through parent method' )
+
+    set_args "0,0", "Bar56", "m"
+    callmethodcc $P2, "get"
+    get_results "0", $P5
+    is( $P5, "m", 'got attrib i from subclass through parent method' )
+.end
+
+# Foo56 provides accessor functions which Bar56 inherits
+# they take an additional classname argument SClass
+
+# set(obj: Pvalue, SClass, Sattr)
+.sub set
+    get_params "0,0,0", $P5, $S4, $S5
+    interpinfo $P2, .INTERPINFO_CURRENT_OBJECT
+    setattribute $P2, $S5, $P5
+    set_returns ""
+    returncc
+.end
+
+# Pattr = get(obj: SClass, Sattr)
+.sub get
+    get_params "0,0", $S4, $S5
+    interpinfo $P2, .INTERPINFO_CURRENT_OBJECT
+    getattribute $P5, $P2, $S5
+    set_returns "0", $P5
+    returncc
+.end
+
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/gsoc_past_optimization/t/oo/vtableoverride.t
==============================================================================
--- branches/gsoc_past_optimization/t/oo/vtableoverride.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/oo/vtableoverride.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -120,7 +120,7 @@
     $P1 = new $P0
     $P2 = $P1[0]
     $I0 = isnull $P2
-    ok($I0, "Override get_pmc_keyed_int without .return")
+    ok($I0, "Override get_pmc_keyed_int without .return - TT #1593")
 .end
 
 .namespace [ 'MyObject' ]

Modified: branches/gsoc_past_optimization/t/op/annotate-old.t
==============================================================================
--- branches/gsoc_past_optimization/t/op/annotate-old.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/op/annotate-old.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1,5 +1,5 @@
 #!perl
-# Copyright (C) 2009, Parrot Foundation.
+# Copyright (C) 2009-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -23,10 +23,6 @@
 
 =cut
 
-TODO: {
-    local $TODO = q|fails in fast runcore - TT #1135|
-        if ($ENV{TEST_PROG_ARGS} || '') =~ /--runcore=fast/;
-
 pir_error_output_like( <<CODE, <<OUTPUT, 'unhandled exception from loaded function');
 .sub main :main
     # Not using test more, just a quick way to pick a function
@@ -40,7 +36,6 @@
 /\(foobar:42\)/
 OUTPUT
 
-}
 
 # Local Variables:
 #   mode: cperl

Modified: branches/gsoc_past_optimization/t/op/calling.t
==============================================================================
--- branches/gsoc_past_optimization/t/op/calling.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/op/calling.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1852,9 +1852,9 @@
 pasm_output_is( <<'CODE', <<'OUTPUT', "named - 5 slurpy array -> named" );
 .pcc_sub main:
     set_args  "0, 0, 0, 0x200, 0, 0x200, 0", 10, 20, 30, 'a', 40, 'b', 50
-    get_results ""
     find_name P1, "foo"
     invokecc P1
+    get_results ""
     print "ok\n"
     end
 .pcc_sub foo:

Modified: branches/gsoc_past_optimization/t/op/sprintf2.t
==============================================================================
--- branches/gsoc_past_optimization/t/op/sprintf2.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/op/sprintf2.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -12,7 +12,7 @@
 
 =head1 DESCRIPTION
 
-Executes sprintf tests that were generated by tools/dev/sprintf2.pl
+Executes sprintf tests.
 
 =cut
 

Modified: branches/gsoc_past_optimization/t/pir/macro.t
==============================================================================
--- branches/gsoc_past_optimization/t/pir/macro.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/pir/macro.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -21,14 +21,13 @@
 .endm
 
 .macro bar(x)
-    ok(x, 'basic macro with argument')
+    ok(.x, 'basic macro with argument')
 .endm
 
 .macro_const PI_APPROX 4
 
 .sub main :main
     .include 'test_more.pir'
-    .local int x
     plan(3)
     .foo()
     .bar(42)

Copied: branches/gsoc_past_optimization/t/pir/timer_exit.t (from r47769, trunk/t/pir/timer_exit.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_past_optimization/t/pir/timer_exit.t	Wed Jun 23 00:34:17 2010	(r47770, copy of r47769, trunk/t/pir/timer_exit.t)
@@ -0,0 +1,36 @@
+#!./parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+.include 'timer.pasm'
+
+.sub main :main
+   say "1..1"
+
+   $P0 = new 'FixedPMCArray', 8
+   $P0[0] = .PARROT_TIMER_NSEC
+   $P0[1] = 0.1
+   $P0[2] = .PARROT_TIMER_HANDLER
+   $P1 = get_global 'got_timer'
+   $P0[3] = $P1
+   $P0[4] = .PARROT_TIMER_REPEAT
+   $P0[5] = 0
+   $P0[6] = .PARROT_TIMER_RUNNING
+   $P0[7] = 1
+
+   $P2 = new 'Timer', $P0
+   sleep 1
+   say "not ok 3"
+.end
+
+.sub got_timer
+   say "ok 1"
+   exit 0
+   say "not ok 2"
+.end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/gsoc_past_optimization/t/pmc/arrayiterator.t
==============================================================================
--- branches/gsoc_past_optimization/t/pmc/arrayiterator.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/pmc/arrayiterator.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -19,15 +19,17 @@
 .namespace []
 
 .include 'iterator.pasm'
+.include 'except_types.pasm'
 
 .sub main :main
     .include 'test_more.pir'
 
-    plan(21)
+    plan(28)
 
     iterate_forward() # 8 tests
     iterate_backward() # 6 tests
     iterate_backward_string() # 6 test
+    iterate_wrong() # 1 test
     iterator_init() # 1 test
 .end
 
@@ -50,17 +52,62 @@
     $P0 = shift it
     ok(it, "Can shift 1st element")
     is($P0, 1, "With expected value")
+
+    $P1 = new ['Integer'], 0
+    $I0 = exists it[$P1]
+    is($I0, 1, "exists_keyed gives expected value")
+
+    $I0 = defined it[$P1]
+    is($I0, 1, "defined_keyed gives expected value")
+
+    $P2 = it[$P1]
+    is($P2, 42, "get_pmc_keyed gives expected value")
+
+    $I0 = it[$P1]
+    is($I0, 42, "get_integer_keyed gives expected value")
+
+    $N0 = it[$P1]
+    is($N0, 42.0, "get_number_keyed gives expected value")
+
+    $S0 = it[$P1]
+    is($S0, '42', "get_string_keyed gives expected value")
+
     $P0 = shift it
     nok(it, "Iterator is finished after second shift")
     is($P0, 42, "2nd element has correct value")
 
-    $I0 = 1
-    push_eh fail
+    .local int result
+    .local pmc ehandler
+    result = 0
+    ehandler = new ['ExceptionHandler']
+    ehandler.'handle_types'(.EXCEPTION_OUT_OF_BOUNDS)
+    push_eh ehandler
+
+    set_addr ehandler, handlep
     $P0 = shift it
-    $I0 = 0
+    goto fail
+handlep:
+    finalize ehandler
+    set_addr ehandler, handlei
+    $I0 = shift it
+    goto fail
+handlei:
+    finalize ehandler
+    set_addr ehandler, handlen
+    $N0 = shift it
+    goto fail
+handlen:
+    finalize ehandler
+    set_addr ehandler, handles
+    $S0 = shift it
+    goto fail
+handles:
+    finalize ehandler
+
+    result = 1
   fail:
     pop_eh
-    ok($I0, "Shifting from finished iterator throws exception")
+    ok(result, "Shifting from finished iterator throws out of bounds exception")
 
 .end
 
@@ -81,13 +128,39 @@
     nok(it, "Iterator is finished after second shift")
     is($P0, 1, "2nd element has correct value")
 
-    $I0 = 1
-    push_eh fail
-    $P0 = shift it
-    $I0 = 0
+    .local int result
+    .local pmc ehandler
+    result = 0
+    ehandler = new ['ExceptionHandler']
+    ehandler.'handle_types'(.EXCEPTION_OUT_OF_BOUNDS)
+    push_eh ehandler
+
+    set_addr ehandler, handlep
+    $P0 = pop it
+    goto fail
+handlep:
+    finalize ehandler
+    set_addr ehandler, handlei
+    $I0 = pop it
+    goto fail
+handlei:
+    finalize ehandler
+    set_addr ehandler, handlen
+    $N0 = pop it
+    goto fail
+handlen:
+    finalize ehandler
+    set_addr ehandler, handles
+    $S0 = pop it
+    goto fail
+handles:
+    finalize ehandler
+
+    result = 1
   fail:
     pop_eh
-    ok($I0, "Shifting from finished iterator throws exception")
+    ok(result, "pop from finished iterator throws out of bounds exception")
+
 .end
 
 .sub 'iterate_backward_string'
@@ -116,6 +189,26 @@
     ok($I0, "Shifting from finished iterator throws exception - string")
 .end
 
+.sub 'iterate_wrong'
+    .local pmc foo, it, ex
+    .local int r
+
+    foo = new ['FixedIntegerArray'], 1
+
+    it = iter foo
+    push_eh catch_wrong
+    it = 42 # Let's hope we'll never have such direction
+    r = 0
+    goto dotest
+catch_wrong:
+    .get_results(ex)
+    finalize ex
+    r = 1
+dotest:
+    pop_eh
+    ok(r, "Caught wrong direction")
+.end
+
 .sub 'iterator_init'
     .local pmc it, e
     .local string msg

Copied: branches/gsoc_past_optimization/t/pmc/bytebuffer.t (from r47769, trunk/t/pmc/bytebuffer.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_past_optimization/t/pmc/bytebuffer.t	Wed Jun 23 00:34:17 2010	(r47770, copy of r47769, trunk/t/pmc/bytebuffer.t)
@@ -0,0 +1,392 @@
+#!./parrot
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/pmc/bytebuffer.t - ByteBuffer PMC
+
+=head1 SYNOPSIS
+
+    % prove t/pmc/bytebuffer.t
+
+=head1 DESCRIPTION
+
+Tests C<ByteBuffer> PMC..
+
+=cut
+
+.include 'iglobals.pasm'
+.include 'iterator.pasm'
+.include 'except_types.pasm'
+
+.sub 'main' :main
+    .include 'test_more.pir'
+    plan(37)
+
+    test_init()
+    test_set_string()
+    test_set_byte()
+    test_get_string()
+    test_push()
+    test_resize()
+    test_alloc()
+    test_iterate()
+    test_invalid()
+.end
+
+################################################################
+# Helper subs
+
+.sub hasicu
+    $P0 = getinterp
+    $P1 = $P0[.IGLOBALS_CONFIG_HASH]
+    $I0 = $P1['has_icu']
+    .return($I0)
+.end
+
+.sub isbigendian
+    $P0 = getinterp
+    $P1 = $P0[.IGLOBALS_CONFIG_HASH]
+    $I0 = $P1['bigendian']
+    .return($I0)
+.end
+
+################################################################
+
+.sub test_init
+    .local pmc bb
+    .local int n
+    bb = new ['ByteBuffer']
+    n = elements bb
+    is(n, 0, "size of a new buffer is 0")
+
+    bb = new ['ByteBuffer'], 42
+    n = elements bb
+    is(n, 42, "size of a new buffer with initial size is correct")
+
+.end
+
+.sub test_set_string
+    .local pmc bb
+    .local string s
+    .local int n, c
+    bb = new ['ByteBuffer']
+    s = 'Hi'
+    bb = s
+
+    # Exercise mark vtable
+    sweep 1
+
+    n = elements bb
+    is(n, 2, "size is the same as the source string bytelength")
+    n = bb[0]
+    c = ord 'H'
+    is(n, c, "first byte is the same as the source string")
+    n = bb[1]
+    c = ord 'i'
+    is(n, c, "second byte is the same as the source string")
+    n = bb[2]
+    is(n, 0, "byte out of size is 0")
+    n = bb[-1]
+    is(n, 0, "byte at negative index is 0")
+.end
+
+.sub test_set_byte
+    .local pmc bb
+    .local int n
+    bb = new ['ByteBuffer']
+    bb[255] = 42
+    n = elements bb
+    is(n, 256, "setting a byte resize empty buffer")
+
+    .local string s
+    s = 'Hi'
+    bb = s
+    bb[2] = 42
+    n = elements bb
+    is(n, 3, "setting a byte resize buffer initialized from string")
+
+    bb = new ['ByteBuffer'], 42
+    bb[41] = 9
+    n = elements bb
+    is(n, 42, "setting a byte within range does not resize")
+    bb[42] = 7
+    n = elements bb
+    is(n, 43, "setting a byte resize buffer with initial size")
+    n = bb[41]
+    is(n, 9, "resized buffer preserve old value")
+
+    push_eh catch
+    bb[-1] = 0
+    ok(0, "setting a byte with negative index should throw")
+    goto end
+catch:
+    pop_eh
+    ok(1, "setting a byte with negative index throws")
+end:
+.end
+
+.sub test_get_string
+    .local pmc bb
+    .local string s
+    .local int n
+    .local int big
+
+    bb = new ['ByteBuffer']
+    bb = binary:"abcd"
+    s = bb.'get_string'('ascii', 'fixed_8')
+    n = length s
+    is(n, 4, "getting ascii from buffer gives correct length")
+    is(s, "abcd", "getting ascii from buffer gives correct content")
+
+    $I0 = hasicu()
+    unless $I0 goto skip_it
+
+    bb = new ['ByteBuffer']
+
+    # Upper case n tilde: codepoint 0xD1, utf8 encoding 0xC3, 0x91
+    #bb = utf16:unicode:"\x{D1}"
+    # Can't do that, or the program can't be compiled without ICU.
+    # Fill the buffer with bytes instead.
+
+    # Get endianess to set the bytes in the appropiate order.
+    # *** XXX *** Need report from big endian platforms.
+    big = isbigendian()
+    if big goto isbig
+    bb[0] = 0xD1
+    bb[1] = 0x00
+    goto doit
+isbig:
+    bb[0] = 0x00
+    bb[1] = 0xD1
+doit:
+    s = bb.'get_string'('unicode', 'utf16')
+    n = length s
+    is(n, 1, "getting utf16 from buffer gives correct length")
+    n = ord s
+    is(n, 0xD1, "getting utf16 from buffer gives correct codepoint")
+    bb = new ['ByteBuffer']
+    bb[0] = 0xC3
+    bb[1] = 0x91
+    s = bb.'get_string_as'(utf8:unicode:"")
+    n = length s
+    is(n, 1, "getting utf8 from buffer gives correct length")
+    n = ord s
+    is(n, 0xD1, "getting utf8 from buffer gives correct codepoint")
+    goto end
+skip_it:
+    skip(4, "this test needs ICU")
+end:
+.end
+
+.sub test_push
+    .local pmc bb
+    .local int c, n, m
+    bb = new ['ByteBuffer']
+    bb = 'hell'
+    n = elements bb
+    inc n
+    c = ord 'o'
+    push bb, c
+    m = elements bb
+    is(n, m, "push increments size")
+    .local string s
+    s = bb.'get_string_as'(ascii:"")
+    is(s, 'hello', "push gives expected string result")
+.end
+
+.sub test_resize
+    .local pmc bb
+    .local int n
+    .local string s
+    bb = new ['ByteBuffer']
+
+    bb = 723
+    n = elements bb
+    is(n, 723, 'resize from empty')
+
+    bb = 42
+    n = elements bb
+    is(n, 42, 'reduce size')
+
+    bb = 999
+    n = elements bb
+    is(n, 999, 'increase size')
+
+    bb = 0
+    n = elements bb
+    is(n, 0, 'resize to 0')
+
+    bb = 'foobar'
+    bb = 3
+    n = elements bb
+    is(n, 3, 'reduce size from string content')
+
+    s = bb.'get_string_as'(ascii:"")
+    is(s, 'foo', 'resized string content has correct value')
+
+    bb = 'foobar'
+    bb = 7
+    n = elements bb
+    is(n, 7, 'increase size from string content')
+
+    # This test is for code coverage, zero filling is not a feature
+    # you should expect, it can be changed for performance reasons.
+    s = bb.'get_string_as'(binary:"")
+    is(s, binary:"foobar\x{0}", 'resized from string content is zero filled')
+
+    bb = 'barfoo'
+    bb = 0
+    n = elements bb
+    is(n, 0, 'resize to zero from string content')
+
+    bb = 42
+    bb = 0
+    n = elements bb
+    is(n, 0, 'resize to zero from allocated content')
+
+    .local pmc eh
+    eh = new ['ExceptionHandler']
+    eh.'handle_types'(.EXCEPTION_OUT_OF_BOUNDS)
+    set_addr eh, catch_negative
+    n = 1
+    push_eh eh
+    bb = -1
+    n = 0
+    goto test_negative
+catch_negative:
+    finalize eh
+test_negative:
+    pop_eh
+    ok(n, 'negative size throws')
+.end
+
+.sub test_alloc
+    # Exercise buffer reallocation building a utf16 string with the
+    # codepoints 32-8192
+    .local pmc bb
+    .local int i, big, pos, b0, b1, c
+
+    $I0 = hasicu()
+    unless $I0 goto skip_it
+
+    # Get endianess to set the bytes in the appropiate order.
+    # *** XXX *** Need report from big endian platforms.
+    big = isbigendian()
+
+    bb = new ['ByteBuffer']
+    pos = 0
+    i = 32
+loopset:
+    b0 = div i, 256
+    b1 = mod i, 256
+    if big goto setbig
+    bb[pos] = b1
+    inc pos
+    bb[pos] = b0
+    inc pos
+    goto setdone
+setbig:
+    bb[pos] = b0
+    inc pos
+    bb[pos] = b1
+    inc pos
+setdone:
+    inc i
+    if i < 8192 goto loopset
+
+    .local string s
+    s = bb.'get_string'('unicode', 'utf16')
+
+    # Check string size
+    i = length s
+    if i != 8160 goto failed
+
+    # Check string content
+    i = 32
+    pos = 0
+loopcheck:
+    c = ord s, pos
+    if c != i goto failed
+    inc pos
+    inc i
+    if i < 8192 goto loopcheck
+    ok(1, "reallocation")
+    goto end
+failed:
+    say i
+    ok(0, "reallocation")
+    goto end
+skip_it:
+    skip(1, "this test needs ICU")
+end:
+.end
+
+.sub test_iterate
+    .local pmc bb, it, arr
+    .local string s
+    s = 'abcd'
+    bb = new ['ByteBuffer']
+    bb = s
+    it = iter bb
+    it = .ITERATE_FROM_START
+    arr = new ['ResizableStringArray']
+loop:
+    unless it goto donearray
+    $I0 = shift it
+    $S0 = chr $I0
+    push arr, $S0
+    goto loop
+donearray:
+    .local string r
+    r = join '', arr
+    is(r, s, 'iterate buffer content')
+.end
+
+.sub test_invalid
+    .local pmc bb, ex
+    .local string s
+    bb = new ['ByteBuffer']
+    bb = 'something'
+    push_eh catch_charset
+    s = bb.'get_string'('***INVALID cHARsET%%%%', 'fixed_8')
+    pop_eh
+    ok(0, "get_string with invalid charset should throw")
+    goto check_encoding
+catch_charset:
+    .get_results(ex)
+    finalize ex
+    pop_eh
+    ok(1, "get_string with invalid charset throws")
+check_encoding:
+    push_eh catch_encoding
+    s = bb.'get_string'('ascii', '???INVALID eNCODING===')
+    pop_eh
+    ok(0, "get_string with invalid encoding should throw")
+    goto check_content
+catch_encoding:
+    .get_results(ex)
+    finalize ex
+    pop_eh
+    ok(1, "get_string with invalid encoding throws")
+check_content:
+    bb[0] = 128 # Out of ascii range
+    push_eh catch_content
+    s = bb.'get_string'('ascii', 'fixed_8')
+    pop_eh
+    ok(0, "get_string with invalid content should throw")
+    goto end
+catch_content:
+    .get_results(ex)
+    finalize ex
+    pop_eh
+    ok(1, "get_string with invalid content throws")
+end:
+.end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/gsoc_past_optimization/t/pmc/eval.t
==============================================================================
--- branches/gsoc_past_optimization/t/pmc/eval.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/pmc/eval.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -46,11 +46,15 @@
     compreg P1, "PASM"
     set_args "0", S5
     invokecc P1
+    get_results "0", P2
+    elements I0, P2
+    say I0
     get_global P0, "_foo"
     invokecc P0
     print "back\n"
     end
 CODE
+1
 foo
 back
 OUTPUT
@@ -66,8 +70,8 @@
     concat S5, "returncc\n"
     compreg P1, "PASM"
     set_args "0", S5
-    get_results "0", P6
     invokecc P1
+    get_results "0", P6
     get_global P2, "_foo"
     invokecc P2
     print "back\n"

Modified: branches/gsoc_past_optimization/t/pmc/exception.t
==============================================================================
--- branches/gsoc_past_optimization/t/pmc/exception.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/pmc/exception.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -18,7 +18,7 @@
 
 .sub main :main
     .include 'test_more.pir'
-    plan( 19 )
+    plan(20)
     test_bool()
     test_int()
     test_attrs()
@@ -30,66 +30,12 @@
     test_throw_obj()
 .end
 
-.sub test_throw_obj
-    new $P20, ['ExceptionHandler']
-    set_addr $P20, _handler
-    push_eh $P20
-    new $P30, ['Exception']
-    throw $P30
-    say "not reached"
-_handler:
-    ok(1,'caught exception object thrown')
-.end
-
-.sub test_die
-    push_eh handler
-    die 3, 100
-    say "not reached"
-    .return()
-  handler:
-    ok(1,'die works')
-.end
-
-.sub test_push_pop_eh
-    push_eh handler
-    ok(1,'push_eh works')
-
-    pop_eh
-    ok(1,'pop_eh works')
-    .return()
-
-  handler:
-    say "i am the decider"
-.end
-
-.sub test_push_eh_throw
-    push_eh handler
-    $P0 = new ['Exception']
-    throw $P0
-    ok(0,'throw does not throw')
-
-  handler:
-    ok(1,'throw can throw')
-.end
-
-.sub test_push_pop_eh_long
-    $P0 = new ['ExceptionHandler']
-    set_addr $P0, handler
-    push_eh $P0
-    ok(1,'push_eh works (long)')
-
-    pop_eh
-    ok(1,'pop_eh works (long)')
-    .return()
-
-  handler:
-    say "i am the decider"
-.end
-
 .sub test_bool
     $P0 = new 'ExceptionHandler'
     set_addr $P0, _handler
-    ok($P0,'ExceptionHandler objects return true')
+    ok($P0,'ExceptionHandler object return true')
+    $P1 = new 'Exception'
+    ok($P1,'Exception object return true')
     .return()
   _handler:
     say "howdy bool!"
@@ -155,20 +101,76 @@
     .get_results($P0)
 
     $P16 = getattribute $P0, 'message'
-    is($P16, "just pining")
+    is($P16, "just pining", 'got message')
 
     $P17 = getattribute $P0, 'severity'
-    is($P17, 5)
+    is($P17, 5, 'got severity')
 
     $P18 = getattribute $P0, 'payload'
-    is($P18, "additional payload")
+    is($P18, "additional payload", 'got payload')
 
     $P19 = getattribute $P0, 'backtrace'
     $P20 = $P19[0]
-    is($P20, "backtrace line 1")
+    is($P20, "backtrace line 1", 'got backtrace data')
 
     $P20 = $P19[1]
-    is($P20, "backtrace line 2")
+    is($P20, "backtrace line 2", 'more backtrace data')
+.end
+
+.sub test_push_pop_eh
+    push_eh handler
+    ok(1,'push_eh works')
+
+    pop_eh
+    ok(1,'pop_eh works')
+    .return()
+
+  handler:
+    say "i am the decider"
+.end
+
+.sub test_push_eh_throw
+    push_eh handler
+    $P0 = new ['Exception']
+    throw $P0
+    ok(0,'throw does not throw')
+
+  handler:
+    ok(1,'throw can throw')
+.end
+
+.sub test_push_pop_eh_long
+    $P0 = new ['ExceptionHandler']
+    set_addr $P0, handler
+    push_eh $P0
+    ok(1,'push_eh works (long)')
+
+    pop_eh
+    ok(1,'pop_eh works (long)')
+    .return()
+
+  handler:
+    say "i am the decider"
+.end
+
+.sub test_die
+    push_eh handler
+    die 3, 100
+    say "not reached"
+    .return()
+  handler:
+    ok(1,'die works')
+.end
+
+.sub test_throw_obj
+    new $P20, ['ExceptionHandler']
+    set_addr $P20, _handler
+    push_eh $P20
+    new $P30, ['Exception']
+    throw $P30
+    say "not reached"
+_handler:
+    ok(1,'caught exception object thrown')
 .end
 
 # Local Variables:

Modified: branches/gsoc_past_optimization/t/pmc/exceptionhandler.t
==============================================================================
--- branches/gsoc_past_optimization/t/pmc/exceptionhandler.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/pmc/exceptionhandler.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -23,7 +23,7 @@
     .include 'test_more.pir'
 
     # If test exited with "bad plan" MyHandlerCan.can_handle wasn't invoked.
-    plan(9)
+    plan(11)
 
     .local pmc eh
     eh = new ['ExceptionHandler']
@@ -90,6 +90,8 @@
     pop_eh
     pop_eh
 
+    test_handle_types_except()
+
     goto subclass_handler
 
   typed_handler_one:
@@ -218,6 +220,54 @@
     .return(1)
 .end
 
+.namespace [ ]
+
+.sub 'test_handle_types_except'
+    .local pmc badeh, eh, ex
+    .local int i
+    .const int TYPEUSED = .EXCEPTION_UNEXPECTED_NULL
+    .const int TYPEOTHER = .EXCEPTION_SYNTAX_ERROR
+
+    i = 0
+    eh = new ['ExceptionHandler']
+    badeh = new ['ExceptionHandler']
+    eh.'handle_types_except'(TYPEUSED)
+    set_addr eh, catch
+    set_addr badeh, badcatch
+    push_eh badeh
+    push_eh eh
+    ex = new ['Exception']
+    ex['type'] = TYPEOTHER
+    throw ex
+    goto report1
+  badcatch:
+    finalize eh
+    goto report1
+  catch:
+    finalize eh
+    i = 1
+  report1:
+    ok(i, 'type not in except is list is caught')
+
+    i = 0
+    set_addr badeh, catchall
+    set_addr eh, dontcatch
+    ex = new ['Exception']
+    ex['type'] = TYPEUSED
+    throw ex
+    goto report2
+  catchall:
+    finalize eh
+    i = 1
+    goto report2
+  dontcatch:
+    finalize eh
+  report2:
+    pop_eh
+    pop_eh
+    ok(i, 'type in except is list is not caught')
+.end
+
 # Local Variables:
 #   mode: pir
 #   fill-column: 100

Modified: branches/gsoc_past_optimization/t/pmc/exporter.t
==============================================================================
--- branches/gsoc_past_optimization/t/pmc/exporter.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/pmc/exporter.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1,5 +1,5 @@
 #!perl
-# Copyright (C) 2007, Parrot Foundation.
+# Copyright (C) 2007-2010, Parrot Foundation.
 # $Id$
 
 use strict;
@@ -28,6 +28,10 @@
     $P0 = new ['Exporter']
     say "ok 1 - $P0 = new ['Exporter']"
 
+    # Most uses of export are short-lived, so use a explicit sweep
+    # here to ensure coverage of the mark vtable.
+    sweep 1
+
     $I0 = isa $P0, 'Exporter'
     if $I0 goto ok_2
     print 'not '

Modified: branches/gsoc_past_optimization/t/pmc/filehandle.t
==============================================================================
--- branches/gsoc_past_optimization/t/pmc/filehandle.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/pmc/filehandle.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -644,7 +644,7 @@
 expect 1 exit status: 1
 OUTPUT
 
-pir_output_is( sprintf(<<'CODE', $temp_file), <<'OUTPUT', "timely destruction", todo => 'TT #1659' );
+pir_output_is( sprintf(<<'CODE', $temp_file), <<'OUTPUT', "timely destruction" );
 .const string temp_file = '%s'
 .sub main :main
     interpinfo $I0, 2    # GC mark runs

Modified: branches/gsoc_past_optimization/t/pmc/fixedintegerarray.t
==============================================================================
--- branches/gsoc_past_optimization/t/pmc/fixedintegerarray.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/pmc/fixedintegerarray.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -19,7 +19,7 @@
 
 .sub 'main' :main
     .include 'test_more.pir'
-    plan(35)
+    plan(36)
 
     test_set_size()
     test_reset_size()
@@ -32,6 +32,7 @@
     test_get_iter()
     test_equality()
     test_repr()
+    test_sort()
     test_new_style_init()
     test_invalid_init_tt1509()
 .end
@@ -271,6 +272,23 @@
     is($I0, 10, "New style init creates the correct # of elements")
 .end
 
+.sub 'test_sort'
+    .local pmc a1, a2
+    a1 = new ['FixedIntegerArray'], 3
+    a1[0] = 7
+    a1[1] = 1
+    a1[2] = 5
+
+    a2 = new ['FixedIntegerArray'], 3
+    a2[0] = 1
+    a2[1] = 5
+    a2[2] = 7
+
+    a1.'sort'()
+    $I0 = iseq a1, a2
+    is($I0, 1, 'default sort')
+.end
+
 .sub test_invalid_init_tt1509
     throws_substring(<<'CODE', 'FixedIntegerArray: Cannot set array size to a negative number (-10)', 'New style init does not dump core for negative array lengths')
     .sub main
@@ -285,6 +303,8 @@
 CODE
 .end
 
+
+
 # Local Variables:
 #   mode: pir
 #   fill-column: 100

Modified: branches/gsoc_past_optimization/t/pmc/float.t
==============================================================================
--- branches/gsoc_past_optimization/t/pmc/float.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/pmc/float.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1,5 +1,5 @@
 #!./parrot
-# Copyright (C) 2001-2009, Parrot Foundation.
+# Copyright (C) 2001-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -16,7 +16,7 @@
 
 =cut
 
-.const int TESTS = 159
+.const int TESTS = 162
 .const num PRECISION = 0.000001
 
 .sub 'test' :main
@@ -89,32 +89,47 @@
 .include 'fp_equality.pasm'
 
 .sub 'basic_assignment'
-    $P0 = new ['Float']
+    # Assignments can morph to other PMC type,
+    # use a new Float for each test to be sure we are testing
+    # the intended code.
 
+    $P0 = new ['Float']
     $P0 = 0.001
     is($P0, 0.001, 'basic float assignment 1', PRECISION)
 
+    $P0 = new ['Float']
     $P0 = 12.5
     is($P0, 12.5, 'basic assignment 2', PRECISION)
 
+    $P0 = new ['Float']
     $P0 = 1000
     is($P0, 1000.0, 'basic integer assignment', PRECISION)
 
+    $P0 = new ['Float']
     $P0 = 'Twelve point five'
     is($P0, 0.0, 'basic string assignment', PRECISION)
 
+    $P0 = new ['Float']
     $P0 = 123.45
     $I0 = $P0
     is($I0, 123, 'rounding to integer')
 
+    $P0 = new ['Float']
     $P0 = 123.45
     $N0 = $P0
     is($N0, 123.45, 'get_float_value', PRECISION)
 
+    $P0 = new ['Float']
     $P0 = 123.45
     $S0 = $P0
     is($S0, '123.45', 'get string')
 
+    $P0 = new ['Float']
+    $P0 = 123.45
+    $S0 = get_repr $P0
+    is($S0, '123.45', 'get_repr')
+
+    $P0 = new ['Float']
     $P0 = "12.49"
     is($P0, 12.49, 'setting value from String', PRECISION)
 .end
@@ -436,6 +451,11 @@
     $P0 = -5.0
     abs $P0
     is($P0, 5.0, 'abs of -5.0', PRECISION)
+
+    $P0 = -6.0
+    $P1 = abs $P0
+    is($P1, 6.0, 'abs two operands from -6.0', PRECISION)
+    is($P0, -6.0, 'abs two operands source unchanged', PRECISION)
 .end
 
 .sub 'lt'

Modified: branches/gsoc_past_optimization/t/pmc/handle.t
==============================================================================
--- branches/gsoc_past_optimization/t/pmc/handle.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/pmc/handle.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -20,7 +20,7 @@
 .sub main :main
     .include 'test_more.pir'
 
-    plan(2)
+    plan(3)
     'test_create'()
     'test_does_tt_1473'()
 .end
@@ -35,6 +35,17 @@
     ok(1, "Cannot instantiate an abstract type")
     pop_eh
   create_end:
+
+    $P1 = new ['String']
+    push_eh cant_instantiate_arg
+    $P0 = new ['Handle'], $P1
+    ok(0, "Can instantiate an abstract type with arg")
+    pop_eh
+    goto create_end_arg
+  cant_instantiate_arg:
+    ok(1, "Cannot instantiate an abstract type with arg")
+    pop_eh
+  create_end_arg:
 .end
 
 .sub 'test_does_tt_1473'

Modified: branches/gsoc_past_optimization/t/pmc/hash.t
==============================================================================
--- branches/gsoc_past_optimization/t/pmc/hash.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/pmc/hash.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -18,15 +18,18 @@
 
 =cut
 
+.include 'except_types.pasm'
+.include 'datatypes.pasm'
+.include 'hash_key_type.pasm'
+
 .sub main :main
     .include 'test_more.pir'
-    .include 'except_types.pasm'
-    .include 'datatypes.pasm'
 
-    plan(168)
+    plan(172)
 
     initial_hash_tests()
     more_than_one_hash()
+    hash_key_type()
     null_key()
     hash_keys_with_nulls_in_them()
     nearly_the_same_hash_keys()
@@ -125,6 +128,34 @@
     is( $I1, 2, 'two hashes: lookup Int from hash via Str in second' )
 .end
 
+.sub hash_key_type
+    .local pmc h
+    .local int i
+    h = new ['Hash']
+    h = .Hash_key_type_int
+    h['01'] = 42
+    i = h[1]
+    is(i, 42, 'key type int')
+
+    # Use the method here to check it at the same time.
+    h.'set_key_type'(.Hash_key_type_STRING)
+    h[1] = 42
+    i = h['01']
+    isnt(i, 42, 'key type STRING')
+    i = h.'get_key_type'()
+    is(i, .Hash_key_type_STRING, 'method get_key_type return type STRING')
+
+    push_eh invalid_type
+    h = -973 # Let's hope it will never become a valid type
+    pop_eh
+    ok(0, "Setting invalid type should throw")
+    goto end
+invalid_type:
+    pop_eh
+    ok(1, 'Setting invalid type throws')
+end:
+.end
+
 .sub null_key
     new $P0, ['Hash']
     $P0['yum'] = 5

Modified: branches/gsoc_past_optimization/t/pmc/hashiterator.t
==============================================================================
--- branches/gsoc_past_optimization/t/pmc/hashiterator.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/pmc/hashiterator.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -18,16 +18,17 @@
 
 =cut
 
+.include 'except_types.pasm'
+
 .sub main :main
     .include 'test_more.pir'
-    .include 'except_types.pasm'
 
-    plan(6)
+    plan(8)
 
     iter_over_empty_hash()
     iter_over_single_element()
     iter_over_single_element_with_checks()
-
+    iter_invalid_type()
 .end
 
 .sub 'iter_over_empty_hash'
@@ -36,6 +37,21 @@
     it   = new 'HashIterator', hash
     $I0  = isfalse it
     ok($I0, "Iterator for empty Hash is empty")
+    .local pmc eh
+    .local int i
+    i = 1
+    eh = new 'ExceptionHandler'
+    eh.'handle_types'(.EXCEPTION_OUT_OF_BOUNDS)
+    set_addr eh, catch
+    push_eh catch
+    $P0 = shift it
+    i = 0
+    goto report
+  catch:
+    finalize eh
+  report:
+    pop_eh
+    ok(i, 'shift for empty hash throws')
 .end
 
 .sub 'iter_over_single_element'
@@ -67,6 +83,27 @@
 
 .end
 
+.sub 'iter_invalid_type'
+    .local pmc hash, it
+    hash = new 'Hash'
+    it   = new 'HashIterator', hash
+    .local pmc eh
+    .local int i
+    i = 1
+    eh = new 'ExceptionHandler'
+    eh.'handle_types'(.EXCEPTION_INVALID_OPERATION)
+    set_addr eh, catch
+    push_eh catch
+    it = 987 # Arbitrary value, let's hope we never use
+    i = 0
+    goto report
+  catch:
+    finalize eh
+  report:
+    pop_eh
+    ok(i, 'setting invalid type throws')
+.end
+
 # Local Variables:
 #   mode: pir
 #   fill-column: 100

Modified: branches/gsoc_past_optimization/t/pmc/io.t
==============================================================================
--- branches/gsoc_past_optimization/t/pmc/io.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/pmc/io.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -7,8 +7,7 @@
 use lib qw( . lib ../lib ../../lib );
 
 use Test::More;
-use Parrot::Test tests => 40;
-use Parrot::Test::Util 'create_tempfile';
+use Parrot::Test tests => 32;
 use Parrot::Test::Util 'create_tempfile';
 
 =head1 NAME
@@ -41,17 +40,18 @@
 
 my (undef, $temp_file) = create_tempfile( UNLINK => 1 );
 
-pir_output_is( sprintf(<<'CODE', $temp_file), <<'OUTPUT', "timely destruction (ops)");
-.loadlib 'io_ops'
+pir_output_is( sprintf(<<'CODE', $temp_file), <<'OUTPUT', "timely destruction" );
 .const string temp_file = '%s'
 .sub main :main
     interpinfo $I0, 2    # GC mark runs
-    $P0 = open temp_file, 'w'
-        needs_destroy $P0
+    $P0 = new ['FileHandle']
+    $P0.'open'(temp_file, 'w')
+    needs_destroy $P0
     print $P0, "a line\n"
     null $P0            # kill it
     sweep 0            # a lazy GC has to close the PIO
-    $P0 = open temp_file, 'r'
+    $P0 = new ['FileHandle']
+    $P0.'open'(temp_file, 'r')
     $S0 = $P0.'read'(20)
     print $S0
 .end
@@ -59,42 +59,6 @@
 a line
 OUTPUT
 
-pir_output_is( <<'CODE', <<'OUTPUT', "read on invalid fh should throw exception (ops)" );
-.loadlib 'io_ops'
-.sub main :main
-    new $P0, ['FileHandle']
-
-    push_eh _readline_handler
-    $S0 = readline $P0
-    print "not "
-
-_readline_handler:
-        print "ok 1\n"
-        pop_eh
-
-    push_eh _read_handler
-    $S0 = read $P0, 1
-    print "not "
-
-_read_handler:
-        print "ok 2\n"
-        pop_eh
-
-    push_eh _print_handler
-    print $P0, "kill me now\n"
-    print "not "
-
-_print_handler:
-        print "ok 3\n"
-        pop_eh
-
-.end
-CODE
-ok 1
-ok 2
-ok 3
-OUTPUT
-
 pir_output_is( <<'CODE', <<'OUTPUT', "read on invalid fh should throw exception" );
 .sub main :main
     new $P0, ['FileHandle']
@@ -149,16 +113,21 @@
 print $FOO "2\n1\n";
 close $FOO;
 
-pasm_output_is( <<"CODE", <<'OUTPUT', "open and readline" );
-.loadlib 'io_ops'
-    open P0, "$temp_file"
-    set S0, ""
-    set S1, ""
-    readline S0, P0
-    readline S1, P0
-    print S1
-    print S0
-    end
+pir_output_is( sprintf( <<'CODE', $temp_file ), <<'OUTPUT', "open and readline" );
+.const string temp_file = '%s'
+.sub 'main' :main
+    $P0 = new ['FileHandle']
+    $P0.'open'(temp_file)
+
+    $S0 = ''
+    $S1 = ''
+
+    $S0 = $P0.'readline'()
+    $S1 = $P0.'readline'()
+
+    print $S1
+    print $S0
+.end
 CODE
 1
 2
@@ -168,16 +137,21 @@
 print $FOO "12\n34";
 close $FOO;
 
-pasm_output_is( <<"CODE", <<'OUTPUT', "open and readline, no final newline" );
-.loadlib 'io_ops'
-    open P0, "$temp_file"
-    set S0, ""
-    set S1, ""
-    readline S0, P0
-    readline S1, P0
-    print S1
-    print S0
-    end
+pir_output_is( sprintf( <<'CODE', $temp_file ), <<'OUTPUT', "open and readline, no final newline" );
+.const string temp_file = '%s'
+.sub 'main' :main
+    $P0 = new ['FileHandle']
+    $P0.'open'(temp_file)
+
+    $S0 = ''
+    $S1 = ''
+
+    $S0 = $P0.'readline'()
+    $S1 = $P0.'readline'()
+
+    print $S1
+    print $S0
+.end
 CODE
 3412
 OUTPUT
@@ -185,27 +159,30 @@
 ($FOO, $temp_file) = create_tempfile( UNLINK => 1 );
 close $FOO;
 
-pasm_output_is( <<"CODE", <<'OUTPUT', "open & print" );
-.loadlib 'io_ops'
-   set I0, -12
-   set N0, 2.2
-   set S0, "Foo"
-   new P0, ['String']
-   set P0, "Bar\\n"
-
-   open P1, "$temp_file", "w"
-   print P1, I0
-   print P1, N0
-   print P1, S0
-   print P1, P0
-   close P1
-
-   open P2, "$temp_file"
-   readline S1, P2
-   close P2
+pir_output_is( sprintf(<<'CODE', $temp_file), <<'OUTPUT', "open & print" );
+.const string temp_file = '%s'
+.sub 'main' :main
+    $I0 = -12
+    $N0 = 2.2
+    $S0 = "Foo"
+    $P0 = new ['String']
+    $P0 = "Bar\n"
+
+    $P1 = new ['FileHandle']
+    $P1.'open'(temp_file, 'w')
+    $P1.'print'($I0)
+    $P1.'print'($N0)
+    $P1.'print'($S0)
+    $P1.'print'($P0)
+    $P1.'close'()
+
+    $P2 = new ['FileHandle']
+    $P2.'open'(temp_file)
+    $S1 = $P2.'readline'()
+    $P2.'close'()
 
-   print S1
-   end
+    print $S1
+.end
 CODE
 -122.2FooBar
 OUTPUT
@@ -214,43 +191,47 @@
 close $FOO;
 
 # write to file opened for reading
-pasm_output_is( <<"CODE", <<'OUTPUT', "3-arg open" );
-.loadlib 'io_ops'
-   open P1, "$temp_file", 'w'
-   print P1, "Foobar\\n"
-   close P1
-
-   push_eh _print_to_read_only
-
-   open P2, "$temp_file", 'r'
-   print P2, "baz\\n"
-   say "skipped"
-
-_print_to_read_only:
-   say "caught writing to file opened for reading"
-   pop_eh
-
-   close P2
-
-   open P3, "$temp_file", 'r'
-   readline S1, P3
-   close P3
-   print S1
+pir_output_is( sprintf(<<'CODE', $temp_file), <<'OUTPUT', "3-arg open" );
+.const string temp_file = '%s'
+.sub 'main' :main
+    $P1 = new ['FileHandle']
+    $P1.'open'(temp_file, 'w')
+    $P1.'print'("Foobar\n")
+    $P1.'close'()
 
+    push_eh _print_to_read_only
 
-   end
+    $P2 = new ['FileHandle']
+    $P2.'open'(temp_file, 'r')
+    $P2.'print'("baz\n")
+    say "skipped"
+
+  _print_to_read_only:
+    say "caught writing to file opened for reading"
+    pop_eh
+
+    $P2.'close'()
+
+    $P3 = new ['FileHandle']
+    $P3.'open'(temp_file, 'r')
+    $S1 = $P3.'readline'()
+    $P3.'close'()
+    print $S1
+.end
 CODE
 caught writing to file opened for reading
 Foobar
 OUTPUT
 
-pasm_output_is( <<"CODE", <<'OUTPUT', 'open and close' );
-.loadlib 'io_ops'
-   open P1, "$temp_file", "w"
-   print P1, "Hello, World!\\n"
-   close P1
-   say "done"
-   end
+pir_output_is( sprintf(<<'CODE', $temp_file), <<'OUTPUT', 'open and close' );
+.const string temp_file = '%s'
+.sub 'main' :main
+    $P1 = new ['FileHandle']
+    $P1.'open'(temp_file, "w")
+    $P1.'print'("Hello, World!\n")
+    $P1.'close'()
+    say "done"
+.end
 CODE
 done
 OUTPUT
@@ -259,12 +240,14 @@
 Hello, World!
 OUTPUT
 
-pasm_output_is( <<"CODE", '', 'append' );
-.loadlib 'io_ops'
-   open P1, "$temp_file", 'wa'
-   print P1, "Parrot flies\\n"
-   close P1
-   end
+pir_output_is( sprintf(<<'CODE', $temp_file), '', 'append' );
+.const string temp_file = '%s'
+.sub 'main' :main
+    $P1 = new ['FileHandle']
+    $P1.'open'(temp_file, 'wa')
+    $P1.'print'("Parrot flies\n")
+    $P1.'close'()
+.end
 CODE
 
 file_content_is( $temp_file, <<'OUTPUT', 'append file contents' );
@@ -272,12 +255,14 @@
 Parrot flies
 OUTPUT
 
-pasm_output_is( <<"CODE", '', 'write to file' );
-.loadlib 'io_ops'
-   open P1, "$temp_file", 'w'
-   print P1, "Parrot overwrites\\n"
-   close P1
-   end
+pir_output_is( sprintf(<<'CODE', $temp_file), '', 'write to file' );
+.const string temp_file = '%s'
+.sub 'main' :main
+    $P1 = new ['FileHandle']
+    $P1.'open'(temp_file, 'w')
+    $P1.'print'("Parrot overwrites\n")
+    $P1.'close'()
+.end
 CODE
 
 file_content_is( $temp_file, <<'OUTPUT', 'file contents' );
@@ -426,25 +411,6 @@
 ok 3
 OUT
 
-pasm_output_is( <<'CODE', <<'OUTPUT', 'printerr op' );
-.loadlib 'io_ops'
-   new P0, ['String']
-   set P0, "This is a test\n"
-   printerr 10
-   printerr "\n"
-   printerr 1.0
-   printerr "\n"
-   printerr "foo"
-   printerr "\n"
-   printerr P0
-   end
-CODE
-10
-1
-foo
-This is a test
-OUTPUT
-
 pir_output_is( <<'CODE', <<'OUTPUT', 'puts method' );
 .include 'stdio.pasm'
 .sub main :main
@@ -483,35 +449,46 @@
 OUTPUT
 
 pasm_output_is( <<'CODE', <<'OUTPUT', 'callmethod puts' );
-.loadlib 'io_ops'
-   getstderr P2    # the object
-   set S0, "puts"    # method
-   set S5, "ok 1\n"    # 2nd param
-   set_args "0,0", P2, S5
-   callmethodcc P2, S0
-   set S5, "ok 2\n"
-   set_args "0,0", P2, S5
-   callmethodcc P2, S0
-   end
+.include 'stdio.pasm'
+    getinterp P0                 # invocant
+    set I0, .PIO_STDERR_FILENO   # 1st argument
+    set_args "0,0", P0, I0
+    callmethodcc P0, "stdhandle"
+    get_results "0", P2          # STDERR
+
+    set S0, "puts"               # method
+    set S5, "ok 1\n"             # 2nd param
+    set_args "0,0", P2, S5
+    callmethodcc P2, S0
+
+    set S5, "ok 2\n"
+    set_args "0,0", P2, S5
+    callmethodcc P2, S0
+
+    end
 CODE
 ok 1
 ok 2
 OUTPUT
 
-pasm_output_is( <<"CODE", <<'OUTPUT', 'seek/tell' );
-.loadlib 'io_ops'
-   open P0, "$temp_file", 'w'
-   print P0, "Hello "
-   tell I0, P0
-   print P0, "World!"
-   seek P0, I0, 0
-   print P0, "Parrot!\\n"
-   close P0
-   say "ok 1"
-   open P0, "$temp_file", 'r'
-   read S0, P0, 65635
-   print S0
-   end
+pir_output_is( sprintf(<<'CODE', $temp_file), <<'OUTPUT', 'seek/tell' );
+.const string temp_file = '%s'
+.sub 'main' :main
+    $P0 = new ['FileHandle']
+
+    $P0.'open'(temp_file, 'w')
+    $P0.'print'("Hello ")
+    $I0 = $P0.'tell'()
+    $P0.'print'("World!")
+    $P0.'seek'(0, $I0)
+    $P0.'print'("Parrot!\n")
+    $P0.'close'()
+    say "ok 1"
+
+    $P0.'open'(temp_file, 'r')
+    $S0 = $P0.'read'(65635)
+    print $S0
+.end
 CODE
 ok 1
 Hello Parrot!
@@ -529,16 +506,6 @@
 /seek failed/
 OUTPUT
 
-pasm_error_output_like( <<"CODE", <<'OUTPUT', '32bit seek: exception (ops)' );
-.loadlib 'io_ops'
-   open P0, "$temp_file", 'w'
-   seek P0, -1, 0
-   say "error!"
-   end
-CODE
-/seek failed \(32bit\)/
-OUTPUT
-
 pir_error_output_like( sprintf(<<'CODE', $temp_file), <<'OUTPUT', '64bit seek: exception' );
 .const string temp_file = '%s'
 .sub main :main
@@ -551,16 +518,6 @@
 /seek failed/
 OUTPUT
 
-pasm_error_output_like( <<"CODE", <<'OUTPUT', '64bit seek: exception (ops)' );
-.loadlib 'io_ops'
-   open P0, "$temp_file", 'w'
-   seek P0, -1, -1, 0
-   say "error!"
-   end
-CODE
-/seek failed \(64bit\)/
-OUTPUT
-
 pir_output_is( sprintf(<<'CODE', $temp_file), <<'OUTPUT', "peek" );
 .const string temp_file = '%s'
 .sub main :main
@@ -586,27 +543,6 @@
 l
 OUTPUT
 
-pasm_output_is( <<"CODE", <<'OUTPUT', "peek (ops)" );
-.loadlib 'io_ops'
-    open P0, "$temp_file", 'w'
-    print P0, "a line\\n"
-    close P0
-    open P0, "$temp_file", 'r'
-    peek S0, P0
-    print S0
-    peek S1, P0
-    print S1
-    print "\\n"
-    read S2, P0, 2
-    peek S3, P0
-    print S3
-    print "\\n"
-    end
-CODE
-aa
-l
-OUTPUT
-
 pir_output_is( sprintf(<<'CODE', $temp_file), <<'OUTPUT', "peek on an empty file" );
 .const string temp_file = '%s'
 .sub main :main
@@ -626,21 +562,6 @@
 ok 1
 OUTPUT
 
-pasm_output_is( <<"CODE", <<'OUTPUT', "peek on an empty file (ops)" );
-.loadlib 'io_ops'
-    open P0, "$temp_file", 'w'
-    close P0
-    open P0, "$temp_file", 'r'
-    peek S0, P0
-    eq S0, "", OK1
-    print "not "
-OK1:
-    say "ok 1"
-    end
-CODE
-ok 1
-OUTPUT
-
 pir_output_is( <<"CODE", <<'OUTPUT', "substr after reading from file" );
 .sub _main
     # Write something into a file
@@ -708,50 +629,33 @@
 sub_2: 345
 OUTPUT
 
-pir_error_output_like( <<'CODE', <<'OUT', 'read on null PMC throws exception');
-.loadlib 'io_ops'
-.sub main :main
-    null $P1
-    $S0 = read $P1, 1
-    end
-.end
-CODE
-/read from null/
-OUT
-
 ($FOO, $temp_file) = create_tempfile( UNLINK => 1 );
 
 print $FOO "T\xc3\xb6tsch\n";
 close $FOO;
 
-pir_output_is( <<"CODE", <<"OUTPUT", "utf8 read enabled, read parts" );
-.loadlib 'io_ops'
+pir_output_is( sprintf(<<'CODE', $temp_file), <<"OUTPUT", "utf8 read enabled, read parts" );
+.const string temp_file = '%s'
 .sub main :main
     .local pmc pio
-    .local int len
-    .include "stat.pasm"
-    .local string f
-    f = '$temp_file'
-    len = stat f, .STAT_FILESIZE
     pio = new ['FileHandle']
-    pio.'open'(f, 'r')
+    pio.'open'(temp_file, 'r')
     pio.'encoding'("utf8")
-    \$S0 = pio.'read'(2)
-    len -= 2
-    \$S1 = pio.'read'(len)
-    \$S0 .= \$S1
+    $S0 = pio.'read'(2)
+    $S1 = pio.'read'(1024) # read the rest of the file (much shorter than 1K)
+    $S0 .= $S1
     pio.'close'()
-    \$I1 = charset \$S0
-    \$S2 = charsetname \$I1
-    say \$S2
-
-    \$I1 = encoding \$S0
-    \$S2 = encodingname \$I1
-    say \$S2
-
-    \$I1 = find_charset 'iso-8859-1'
-    trans_charset \$S1, \$S0, \$I1
-    print \$S1
+    $I1 = charset $S0
+    $S2 = charsetname $I1
+    say $S2
+
+    $I1 = encoding $S0
+    $S2 = encodingname $I1
+    say $S2
+
+    $I1 = find_charset 'iso-8859-1'
+    trans_charset $S1, $S0, $I1
+    print $S1
 .end
 CODE
 unicode
@@ -807,21 +711,6 @@
 ok
 OUTPUT
 
-pir_error_output_like( <<'CODE', <<"OUTPUT", "stat failed" );
-.loadlib 'io_ops'
-.sub main :main
-    .local pmc pio
-    .local int len
-    .include "stat.pasm"
-    .local string f
-    f = 'no_such_file'
-    len = stat f, .STAT_FILESIZE
-    print "never\n"
-.end
-CODE
-/stat failed:/
-OUTPUT
-
 # Local Variables:
 #   mode: cperl
 #   cperl-indent-level: 4

Deleted: branches/gsoc_past_optimization/t/pmc/objects.t
==============================================================================
--- branches/gsoc_past_optimization/t/pmc/objects.t	Wed Jun 23 00:34:17 2010	(r47769)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,1791 +0,0 @@
-#!./parrot
-# Copyright (C) 2001-2010, Parrot Foundation.
-# $Id$
-
-=head1 NAME
-
-t/pmc/objects.t - Objects
-
-=head1 SYNOPSIS
-
-    % prove t/pmc/objects.t
-
-=head1 DESCRIPTION
-
-Tests the object/class subsystem.
-
-=cut
-
-.sub main :main
-    .include 'test_more.pir'
-    .include "iglobals.pasm"
-    .include "interpinfo.pasm"
-
-    plan(194)
-
-    get_classname_from_class()
-    test_get_class()
-    test_isa()
-    does_scalar()
-    does_array()
-    new_object()
-    new_object__isa_test()
-    new_object__classname()
-    isa_subclass()
-    isa_subclass__objects()
-    test_addmethod()
-    test_addattribute()
-    addattribute_subclass()
-    addattribute_subclass__same_name()
-    set_and_get_object_attribs()
-    set_and_get_multiple_object_attribs()
-    attribute_values_are_specific_to_objects()
-    attribute_values_and_subclassing()
-    attribute_values_and_subclassing_2()
-    PMC_as_classes__overridden_mmd_methods()
-    typeof_class()
-    typeof_objects()
-    multiple_inheritance__with_attributes()
-    attributes_two_levels_of_inheritance()
-    class_op_test()
-    anon_subclass_has_no_name()
-    get_attrib_by_name()
-    get_attrib_by_name_subclass()
-    set_attrib_by_name_subclass()
-    PMC_as_classes()
-    PMC_as_classes__subclass()
-    PMC_as_classes__instantiate()
-    PMC_as_classes__methods()
-    PMC_as_classes__mmd_methods()
-    PMC_as_classes__derived_1()
-    PMC_as_classes__derived_2()
-    PMC_as_classes__derived_3()
-    subclassing_Class()
-    namespace_vs_name()
-    multiple_anon_classes()
-    subclassed_Integer_bug()
-    equality_of_subclassed_Integer()
-    short_name_attributes()
-    init_with_and_without_arg()
-    newclass_bracket_parsing()
-    verify_namespace_types()
-    verify_data_type()
-    new_keyed()
-    new_keyed_2()
-    new_keyed_3()
-    subclass_keyed()
-    test_class_name_multipart_name()
-    test_get_class_multipart_name()
-    isa_bug()
-    new_nested_ordering()
-    vtable_override_once_removed()
-    vtable_fails_for_subclasses_of_core_classes()
-    super___init_called_twice()
-    using_class_object_from_typeof_op_with_new()
-    setting_non_existent_attribute()
-    setting_non_existent_attribute_by_name()
-    getting_null_attribute()
-    getting_non_existent_attribute()
-    addparent_exceptions_1()
-    addparent_exceptions_2()
-    subclassing_a_non_existent_class()
-    anon_subclass_of_non_existent_class()
-    addattribute_duplicate()
-    wrong_way_to_create_new_objects()
-    attribute_values__subclassing_access_meths()
-    attribute_values__inherited_access_meths()
-
-    # END_OF_TESTS
-.end
-
-.sub get_classname_from_class
-    newclass $P1, "Foo5"
-    set $S0, $P1
-    is( $S0, "Foo5", "got classname Foo5" )
-
-    subclass $P2, $P1, "Bar5"
-    set $S1, $P2
-    is( $S1, "Bar5", "got subclass Bar5" )
-
-    subclass $P3, "Foo5", "Baz5"
-    set $S2, $P3
-    is( $S2, "Baz5", "got subclass Baz5" )
-.end
-
-.sub test_get_class
-    newclass $P1, "Foo6"
-    get_class $P2, "Foo6"
-    set $S2, $P2
-    is( $S2, "Foo6", 'get_class for Foo6' )
-
-    subclass $P3, $P1, "FooBar6"
-    get_class $P4, "FooBar6"
-    set $S4, $P4
-    is( $S4, 'FooBar6', 'get_class for FooBar6' )
-
-    get_class $P3, "NoSuch6"
-    isnull $I0, $P3
-    ok( $I0, "no class for 'NoSuch6'" )
-.end
-
-.sub test_isa
-    new $P1, ['Boolean']
-
-    isa $I0, $P1, "Boolean"
-    is( $I0, 1, 'Boolean isa Boolean' )
-
-    isa $I0, $P1, "Bool"
-    is( $I0, 0, 'Boolean !isa Bool' )
-
-    isa $I0, $P1, "scalar"
-    is( $I0, 1, 'Boolean isa scalar' )
-
-    isa $I0, $P1, "calar"
-    is( $I0, 0, 'Boolean !isa calar' )
-
-    isa $I0, $P1, "Integer"
-    is( $I0, 1, 'Boolean isa Integer' )
-
-    isa $I0, $P1, "Integ"
-    is( $I0, 0, 'Boolean !isa Integ' )
-
-    isa $I0, $P1, "eger"
-    is( $I0, 0, 'Boolean !isa eger' )
-
-    isa $I0, $P1, " "
-    is( $I0, 0, 'Boolean !isa " "' )
-
-    isa $I0, $P1, ""
-    is( $I0, 0, 'Boolean !isa ""' )
-
-    null $S0
-    isa $I0, $P1, $S0
-    is( $I0, 0, 'Boolean !isa null $S0' )
-
-    set $S0, "scalar"
-    isa $I0, $P1, $S0
-    is( $I0, 1, 'Boolean isa scalar $S0' )
-.end
-
-.sub does_scalar
-    new $P1, ['Boolean']
-
-    does $I0, $P1, "Boolean"
-    is( $I0, 0, 'Boolean !does Boolean' )
-
-    does $I0, $P1, "Bool"
-    is( $I0, 0, 'Boolean !does Bool' )
-
-    does $I0, $P1, "scalar"
-    is( $I0, 1, 'Boolean does scalar' )
-.end
-
-.sub does_array
-    new $P1, ['OrderedHash']
-
-    does $I0, $P1, "Boolean"
-    is( $I0, 0, 'OrderedHash !does Boolean' )
-
-    does $I0, $P1, "Bool"
-    is( $I0, 0, 'OrderedHash !does Bool' )
-
-    does $I0, $P1, "hash"
-    is( $I0, 1, 'OrderedHash does hash' )
-
-    does $I0, $P1, "array"
-    is( $I0, 1, 'OrderedHash does array' )
-.end
-
-.sub new_object
-    newclass $P1, "Foo7"
-    new $P2, "Foo7"
-    ok( 1, 'created new object from Foo7 class' )
-.end
-
-.sub new_object__isa_test
-    newclass $P1, "Foo8"
-    new $P2, $P1
-    ok( 1, 'created new object from Foo8 class' )
-
-    isa $I0, $P2, "Foo8"
-    ok( $I0, 'new object isa Foo8' )
-.end
-
-.sub new_object__classname
-    newclass $P1, "Foo9"
-    new $P2, $P1
-    set $S0, $P1    # class
-    is( $S0, "Foo9", 'new object from Foo9 class as a string is Foo9' )
-
-    typeof $S0, $P2 # object
-    is( $S0, 'Foo9', 'typeof obj is Foo9' )
-
-    class $P3, $P1
-    set $S0, $P1    # class
-    is( $S0, 'Foo9', 'class of obj is Foo9' )
-
-    typeof $S0, $P2 # object
-    is( $S0, 'Foo9', 'typeof obj is Foo9' )
-
-.end
-
-.sub isa_subclass
-    newclass $P1, "Foo10"
-    subclass $P2, $P1, "Bar10"
-
-    isa_ok( $P2, "Foo10", 'newclass isa Foo10' )
-    isa_ok( $P2, "Bar10", 'new subclass isa Bar10' )
-    isa_ok( $P2, "Foo10", 'new subclass isa parent' )
-    isa_ok( $P2, "Class", 'new subclass isa Class' )
-
-    isa $I0, $P2, "Object"
-    is( $I0, 0, 'new subclass !isa Object' )
-.end
-
-.sub isa_subclass__objects
-    newclass $P3, "Foo30"
-    subclass $P4, $P3, "Bar30"
-    $P1 = $P3.'new'()
-    $P2 = $P4.'new'()
-
-    isa_ok( $P1, "Foo30",  'obj isa its class' )
-    isa_ok( $P2, "Bar30",  'obj isa its class' )
-    isa_ok( $P2, "Foo30",  'obj isa its parent class' )
-    isa_ok( $P2, "Object", 'obj isa Object' )
-    isa_ok( $P2, "Class",  'obj isa Class' )
-.end
-
-.sub test_addmethod
-    newclass $P0, 'Foo31'
-    $P2 = get_hll_global 'sayFoo31'
-
-    # add a method BEFORE creating a Foo object
-    addmethod $P0, 'foo31', $P2
-    $P1 = new 'Foo31'
-    $P1.'foo31'()
-
-    # get a method from some other namespace
-    $P2 = get_hll_global ['Bar31'], 'sayBar31'
-
-    # add a method AFTER creating the object
-    addmethod $P0, 'bar31', $P2
-    $P1.'bar31'()
-.end
-
-.sub sayFoo31
-    ok( 1, 'called method added before creating obj' )
-.end
-
-.namespace ['Bar31']
-.sub sayBar31
-    ok( 1, 'called method added after created obj' )
-.end
-
-.namespace [] # Reset to root namespace for next test
-
-.sub test_addattribute
-    newclass $P1, "Foo11"
-
-    addattribute $P1, "foo_i"
-    ok( 1, 'addattribute did not blow up' )
-
-    set $S0, $P1
-    is( $S0, "Foo11", '$P1 is still the same class as PMC' )
-
-    # Check that we can add multiple attributes
-    set $I0, 0
-l1:
-    set $S0, $I0
-    addattribute $P1, $S0
-    inc $I0
-    lt $I0, 1000, l1
-    ok( 1, 'addattribute 1000x without blow up' )
-.end
-
-.sub addattribute_subclass
-    newclass $P1, "Foo12"
-    addattribute $P1, "foo_i"
-    ok( 1, 'addattribute to Foo12' )
-
-    subclass $P2, $P1, "Bar12"
-    addattribute $P2, "bar_i"
-    ok( 1, 'addattribute to subclass of Foo12' )
-.end
-
-.sub addattribute_subclass__same_name
-    newclass $P1, "Foo32"
-    addattribute $P1, "i"
-    addattribute $P1, "j"
-
-    subclass $P2, $P1, "Bar32"
-    addattribute $P2, "j"
-    addattribute $P2, "k"
-
-    ok( 1, 'created class and subclass and added attributes' )
-
-    .local pmc o
-    o = $P2.'new'()
-    $P0 = getattribute o, 'i'
-    is( $P0, 'Foo32.i', 'parent attrib initialized in init' )
-    $P0 = getattribute o, ['Foo32'], 'j'
-    is( $P0, 'Foo32.j', 'parent attrib initialized in init' )
-    $P0 = getattribute o, ['Bar32'], 'j'
-    is( $P0, 'Bar32.j', 'subclass attrib initialized in init' )
-    $P0 = getattribute o, 'k'
-    is( $P0, 'Bar32.k', 'subclass attrib initialized in init' )
-
-    $P0 = getattribute o, 'i'
-    is( $P0, 'Foo32.i', 'parent attrib init-ed' )
-    $P0 = getattribute o, ['Foo32'], "j"
-    is( $P0, 'Foo32.j', 'parent attrib init-ed' )
-    $P0 = getattribute o, 'j'
-    is( $P0, 'Bar32.j', 'subclass attrib returned over parent' )
-    $P0 = getattribute o, 'k'
-    is( $P0, 'Bar32.k', 'subclass attrib init-ed' )
-.end
-
-.namespace ['Bar32']
-
-.sub init :vtable :method
-    $P0 = new ['String']
-    $P0 = 'Foo32.i'
-    setattribute self, ['Foo32'], "i", $P0
-    $P0 = new ['String']
-    $P0 = 'Foo32.j'
-    setattribute self, ["Foo32"], "j", $P0
-    $P0 = new ['String']
-    $P0 = 'Bar32.j'
-    setattribute self, ["Bar32"], "j", $P0
-    $P0 = new ['String']
-    $P0 = 'Bar32.k'
-    setattribute self, ["Bar32"], "k", $P0
-.end
-
-.namespace []       # Reset to root namespace for next test
-
-.sub set_and_get_object_attribs
-    newclass $P1, "Foo13"
-    addattribute $P1, "i"
-    new $P2, $P1
-
-    new $P3, ['Integer']
-    set $P3, 1024
-    setattribute $P2, "i", $P3
-
-    new $P4, ['Integer']
-    getattribute $P4, $P2, "i"
-
-    is( $P4, 1024, 'set/get Integer attribute' )
-.end
-
-.sub set_and_get_multiple_object_attribs
-    newclass $P1, "Foo14"
-    addattribute $P1, "i"
-    addattribute $P1, "j"
-    new $P2, "Foo14"
-
-    new $P3, ['Integer']
-    set $P3, 4201
-    new $P4, ['Hash']
-    set $P4["Key"], "Value"
-
-    setattribute $P2, "i", $P3
-    setattribute $P2, "j", $P4
-
-    getattribute $P5, $P2, "i"
-    is( $P5, '4201', 'set/get Integer attribute' )
-
-    getattribute $P6, $P2, "j"
-    set $S0, $P6["Key"]
-    is( $S0, 'Value', 'set/get Hash attribute on same obj' )
-.end
-
-.sub attribute_values_are_specific_to_objects
-    newclass $P1, "Foo15"
-    addattribute $P1, "i"
-    new $P2, $P1
-    new $P3, $P1
-
-    new $P4, ['Integer']
-    set $P4, 100
-    setattribute $P2, "i", $P4
-    new $P5, ['String']
-    set $P5, "One hundred"
-    setattribute $P3, "i", $P5
-
-    getattribute $P6, $P2, "i"
-    is( $P6, 100, 'attribute value on 1st object is specific to obj' )
-
-    getattribute $P6, $P3, "i"
-    is( $P6, 'One hundred', 'attribute value on 2nd obj is specific to obj' )
-.end
-
-.sub attribute_values_and_subclassing
-    newclass $P1, "Foo16"
-    addattribute $P1, "i"
-    addattribute $P1, "j"
-    subclass $P2, $P1, "Bar16"
-    addattribute $P2, "k"
-    addattribute $P2, "l"
-
-    new $P2, "Bar16"
-    new $P3, "Bar16"
-
-    # Note that setattribute holds the actual PMC, not a copy, so
-    # in this test both attributes get the PMC from $P4, and should
-    # both have the same value, despite the C<inc>.
-    new $P4, ['Integer']
-    set $P4, 10
-    setattribute $P2, "i", $P4
-    inc $P4
-    setattribute $P2, "j", $P4
-
-    new $P5, ['Integer']
-    set $P5, 100
-    setattribute $P3, "i", $P5
-    inc $P5
-    setattribute $P3, "j", $P5
-
-    getattribute $P6, $P2, "i"
-    is( $P6, 11, 'setattrib with a PMC holds actual PMC not copy' )
-
-    getattribute $P6, $P2, "j"
-    is( $P6, 11, '...so changes to the PMC appear through the attrib' )
-
-    getattribute $P6, $P3, "i"
-    is( $P6, 101, '...and second test on new objects' )
-
-    getattribute $P6, $P3, "j"
-    is( $P6, 101, '...should have same result' )
-.end
-
-.sub attribute_values_and_subclassing_2
-    newclass $P1, "Foo17"
-    # must add attributes before object instantiation
-    addattribute $P1, ".i"
-    addattribute $P1, ".j"
-
-    subclass $P2, $P1, "Bar17"
-    addattribute $P2, ".k"
-    addattribute $P2, ".l"
-
-    # subclass is preferred for the SI case over
-    #   newclass $P2, "Bar"
-    #   addattrib ...
-    #   addparent $P2, $P1
-    # which is suitable for adding multiple parents to one class
-
-    # instantiate a Bar object
-    new $P3, "Bar17"
-
-    # Set the attribute values
-    new $P10, ['String']           # set attribute values
-    set $P10, "i"                # attribute slots have reference semantics
-    setattribute $P3, ".i", $P10  # so always put new PMCs in
-                                # if you have unique values
-    new $P10, ['String']
-    set $P10, "j"
-    setattribute $P3, ".j", $P10
-
-    new $P10, ['String']
-    set $P10, "k"
-    setattribute $P3, ".k", $P10
-
-    new $P10, ['String']
-    set $P10, "l"
-    setattribute $P3, ".l", $P10
-
-    # retrieve attribs
-    getattribute $P11, $P3, ".i"
-    is( $P11, "i", 'string attribute get/set on parent' )
-
-    getattribute $P11, $P3, ".j"
-    is( $P11, "j", 'string attribute get/set on parent' )
-
-    getattribute $P11, $P3, ".k"
-    is( $P11, "k", 'string attribute get/set on subclass' )
-
-    getattribute $P11, $P3, ".l"
-    is( $P11, "l", 'string attribute get/set on subclass' )
-.end
-
-.sub PMC_as_classes__overridden_mmd_methods
-    .local pmc myint, i, j, k
-
-    get_class $P0, "Integer"
-    subclass myint, $P0, "MyInt1"
-
-    i = new 'MyInt1'
-    j = new 'MyInt1'
-    k = new 'MyInt1'
-    i = 6
-    j = 7
-    k = i + j
-
-    is( k, 13, 'added two MyInt1' )
-
-    j = new ['Integer']
-    j = 100
-    k = i + j
-
-    is( k, 106, 'added MyInt1 and an Integer' )
-.end
-
-.namespace ["MyInt1"]
-
-.sub add :multi(MyInt1, MyInt1, MyInt1)
-    .param pmc self
-    .param pmc right
-    .param pmc dest
-    ok( 1, 'in the add method' )
-    $P0 = getattribute self, ['Integer'], "proxy"
-    $I0 = $P0
-    $I1 = right
-    $I2 = $I0 + $I1
-    dest = $I2
-    .return(dest)
-.end
-
-.namespace []       # Reset to root namespace for next test
-
-.sub typeof_class
-    newclass $P0, "Foo21"
-    typeof $S0, $P0
-    is( $S0, "Class", 'typeof for a Class PMC is "Class"' )
-.end
-
-.sub typeof_objects
-    newclass $P0, "A"
-    newclass $P1, "B"
-
-    new $P0, ['A']
-    new $P1, ['B']
-
-    typeof $S0, $P0
-    typeof $S1, $P1
-
-    is( $S0, 'A', 'typeof object of class A is "A"' )
-    is( $S1, 'B', 'typeof object of class B is "B"' )
-.end
-
-.sub multiple_inheritance__with_attributes
-    newclass $P1, "Star"
-    addattribute $P1, "Spectral Type"
-
-    newclass $P2, "Company"
-    addattribute $P2, "Annual Profit"
-
-    subclass $P3, $P1, "Sun"
-    addparent $P3, $P2
-
-    new $P4, ['Sun']
-
-    new $P5, ['String']
-    set $P5, "G"
-    setattribute $P4, "Spectral Type", $P5
-
-    new $P6, ['String']
-    set $P6, "$100,000,000"
-    setattribute $P4, "Annual Profit", $P6
-
-    getattribute $P7, $P4, "Spectral Type"
-    is( $P7, 'G', 'direct parents attribute' )
-
-    getattribute $P8, $P4, "Annual Profit"
-    is( $P8, '$100,000,000', "addparent's attribute" )
-.end
-
-.sub attributes_two_levels_of_inheritance
-    newclass $P0, "Astronomical Object"
-    addattribute $P0, "Location"
-
-    subclass $P1, $P0, "Star2"
-    addattribute $P1, "Spectral Type"
-
-    newclass $P2, "Sun2"
-    addparent $P2, $P1
-    addparent $P2, $P0
-
-    new $P4, "Sun2"
-
-    new $P5, ['String']
-    set $P5, "Taurus"
-    setattribute $P4, "Location", $P5
-    getattribute $P6, $P4, "Location"
-    is( $P6, 'Taurus', 'attributes with two levels of inheritance' )
-.end
-
-.sub class_op_test
-    newclass $P0, "City1"
-    new $P1, "City1"
-
-    class $P2, $P1
-    set $S0, $P2
-    is( $S0, 'City1', 'class op works' )
-.end
-
-.sub anon_subclass_has_no_name
-    newclass $P0, "City2"
-    subclass $P1, $P0
-    set $S0, $P1
-    is( $S0, '', 'anonymous subclass has no name' )
-.end
-
-.sub get_attrib_by_name
-    newclass $P1, "Foo18"
-    addattribute $P1, "i"
-    new $P2, "Foo18"
-    new $P3, ['String']
-    set $P3, "ok"
-    setattribute $P2, "i", $P3
-
-    getattribute $P4, $P2, ["Foo18"], "i"
-    is( $P4, 'ok', 'get attrib by name' )
-.end
-
-.sub get_attrib_by_name_subclass
-    newclass $P0, "Bar19"
-    addattribute $P0, "j"
-
-    subclass $P1, $P0, "Foo19"
-    addattribute $P1, "i"
-
-    new $P2, "Foo19"
-
-    new $P3, ['String']
-    set $P3, "foo i"
-    setattribute $P2, "i", $P3
-
-    new $P3, ['String']
-    set $P3, "bar j"
-    setattribute $P2, "j", $P3
-
-    getattribute $P4, $P2, ["Foo19"], "i"
-    is( $P4, 'foo i', 'attribute from subclass get by name' )
-
-    getattribute $P4, $P2, ["Bar19"], "j"
-    is( $P4, 'bar j', 'attribute from parent class get by name' )
-.end
-
-.sub set_attrib_by_name_subclass
-    newclass $P0, "Bar20"
-    addattribute $P0, "j"
-
-    subclass $P1, $P0, "Foo20"
-    addattribute $P1, "i"
-
-    new $P2, "Foo20"
-
-    new $P3, ['String']
-    set $P3, "foo i"
-    setattribute $P2, ["Foo20"], "i", $P3
-
-    new $P3, ['String']
-    set $P3, "bar j"
-    setattribute $P2, ["Bar20"], "j", $P3
-
-    getattribute $P4, $P2, "i"
-    is( $P4, 'foo i', 'attribute from subclass set by name' )
-
-    getattribute $P4, $P2, "j"
-    is( $P4, 'bar j', 'attribute from parent class set by name' )
-.end
-
-.sub PMC_as_classes
-    get_class $P0, "Integer"
-    ok( 1, "get_class of Integer did't croak" )
-
-    get_class $P0, "Integer"
-    ok( 1, "get_class of Integer did't croak second time" )
-
-    typeof $S0, $P0
-    is( $S0, 'PMCProxy', 'typeof PMCProxy' )
-.end
-
-.sub PMC_as_classes__subclass
-    .local pmc MyInt3
-    get_class $P0, "Integer"
-    ok( 1, "get_class on Integer didn't blow up" )
-
-    subclass MyInt3, $P0, "MyInt3"
-    ok( 1, "subclassing didn't blow up" )
-
-    $S0 = typeof MyInt3
-    is( $S0, 'Class', 'new subclass is typeof Class' )
-
-    $I0 = isa MyInt3, "MyInt3"
-    ok( $I0, 'new subclass isa MyInt' )
-
-    $I0 = isa MyInt3, "Integer"
-    ok( $I0, 'new subclass isa parent class' )
-.end
-
-.sub PMC_as_classes__instantiate
-    .local pmc MyInt4
-    get_class $P0, "Integer"
-    ok( 1, 'able to get_class of Integer' )
-
-    subclass MyInt4, $P0, "MyInt4"
-    addattribute MyInt4, ".i"
-    ok( 1, 'able to addattribute to subclass' )
-
-    .local pmc i
-    i = new "MyInt4"
-    ok( 1, 'able to instantiate obj of subclass w/ attribute' )
-.end
-
-.sub PMC_as_classes__methods
-    .local pmc MyInt5
-    get_class $P0, "Integer"
-
-    subclass MyInt5, $P0, "MyInt5"
-    addattribute MyInt5, "intval"
-
-    .local pmc i, i2
-    i = new "MyInt5"
-    i2 = new ['Integer']
-    i2 = 43
-
-    i = 42    # set_integer is inherited from Integer
-    ok( 1, 'able to assign int to MyInt' )
-
-    $I0 = i   # get_integer is overridden below
-    is( $I0, 42, 'get_integer is overridden for MyInt5' )
-
-    $S0 = i   # get_string is overridden below
-    is( $S0, 'MyInt5(42)', 'get_string is overridden for MyInt5' )
-.end
-
-.namespace ["MyInt5"]
-
-.sub set_integer_native :vtable :method
-   .param int new_value
-   $P1 = new ['Integer']
-   $P1 = new_value
-   setattribute self, "intval", $P1
-.end
-
-.sub get_integer :vtable :method
-   $P0 = getattribute self, "intval"
-   $I0 = $P0
-   .return ($I0)
-.end
-
-.sub get_string :vtable :method
-   $P0 = getattribute self, "intval"
-   $I0 = $P0
-   $S1 = $I0
-   $S0 = "MyInt5("
-   $S0 .= $S1
-   $S0 .= ")"
-   .return ($S0)
-.end
-
-.namespace []       # Reset to root namespace for next test
-
-.sub PMC_as_classes__mmd_methods
-  .local pmc MyInt6
-  get_class $P0, "Integer"
-  subclass MyInt6, $P0, "MyInt6"
-  .local pmc i
-  .local pmc j
-  .local pmc k
-  i = new "MyInt6"
-  j = new "MyInt6"
-  k = new "MyInt6"
-  i = 6
-  j = 7
-  k = i * j
-  $I0 = k
-  is( $I0, 42, 'MyInt6 defaults to Integer class for mult' )
-
-  $S0 = k   # get_string is overridden below
-  is( $S0, 'MyInt6(42)', 'get_string is overridden for MyInt6' )
-.end
-
-.namespace ["MyInt6"]
-
-.sub get_string :vtable :method
-   $I0 = self   # get_integer is not overridden
-   $S1 = $I0
-   $S0 = "MyInt6("
-   $S0 .= $S1
-   $S0 .= ")"
-   .return ($S0)
-.end
-
-.namespace []       # Reset to root namespace for next test
-
-.sub PMC_as_classes__derived_1
-  .local pmc MyInt8
-  .local pmc MyInt8_2
-  get_class $P0, "Integer"
-
-  subclass MyInt8, $P0, "MyInt8"
-  addattribute MyInt8, 'intval'
-  get_class $P1, "MyInt8"
-  subclass MyInt8_2, $P1, "MyInt8_2"
-
-  .local pmc i
-  i = new "MyInt8_2"
-  $I0 = isa i, "Integer"
-  ok( $I0, 'obj isa grandparent (Integer)' )
-
-  $I0 = isa i, "MyInt8"
-  ok( $I0, 'obj isa parent (MyInt8)' )
-
-  $I0 = isa i, "MyInt8_2"
-  ok( $I0, 'obj isa its class (MyInt8_2)' )
-
-  i = 42    # set_integer is overridden below
-  $I0 = i   # get_integer is overridden below
-  is( $I0, 42, 'set/get_integer overridden' )
-
-  $S0 = i   # get_string is overridden below
-  is( $S0, 'MyInt8_2(42)', 'set/get_string overridden' )
-.end
-
-.namespace ["MyInt8"]
-.sub 'set_integer_native' :vtable :method
-    .param int val
-    $P1 = new ['Integer']
-    $P1 = val
-    setattribute self, "intval", $P1
-    .return ()
-.end
-.sub get_integer :vtable :method
-   $P0 = getattribute self, 'intval'
-   $I0 = $P0
-   .return ($I0)
-.end
-.sub get_string :vtable :method
-   $P0 = getattribute self, 'intval'
-   $I0 = $P0
-   $S1 = $I0
-   $S0 = typeof self
-   $S0 .= "("
-   $S0 .= $S1
-   $S0 .= ")"
-   .return ($S0)
-.end
-
-.namespace []       # Reset to root namespace for next test
-
-.sub PMC_as_classes__derived_2
-  .local pmc MyInt9
-  .local pmc MyInt9_2
-  get_class $P0, "Integer"
-
-  subclass MyInt9, $P0, "MyInt9"
-  addattribute MyInt9, 'intval'
-  get_class $P1, "MyInt9"
-  subclass MyInt9_2, $P1, "MyInt9_2"
-
-  .local pmc i
-  i = new "MyInt9_2"
-  $I0 = isa i, "Integer"
-  ok( $I0, 'obj isa grandparent (Integer)' )
-  $I0 = isa i, "MyInt9"
-  ok( $I0, 'obj isa parent (MyInt9)' )
-  $I0 = isa i, "MyInt9_2"
-  ok( $I0, 'obj isa its class (MyInt9_2)' )
-
-  i = 42    # set_integer is overridden below
-  $I0 = i   # get_integer is overridden below
-  is( $I0, 43, 'set/get_integer overridden' )
-
-  $S0 = i   # get_string is overridden below
-  is( $S0, 'MyInt9_2(42)', 'set/get_string overridden' )
-.end
-
-.namespace ["MyInt9_2"]
-# subclassing methods from MyInt9 is ok
-# this one changes the value a bit
-.sub get_integer :vtable :method
-   $P0 = getattribute self, 'intval'
-   $I0 = $P0
-   inc $I0            # <<<<<
-   .return ($I0)
-.end
-.namespace ["MyInt9"]
-.sub 'set_integer_native' :vtable :method
-    .param int val
-    $P1 = new ['Integer']
-    $P1 = val
-    setattribute self, "intval", $P1
-    .return ()
-.end
-.sub get_integer :vtable :method
-   $P0 = getattribute self, 'intval'
-   $I0 = $P0
-   .return ($I0)
-.end
-.sub get_string :vtable :method
-   $P0 = getattribute self, 'intval'
-   $I0 = $P0
-   $S1 = $I0
-   $S0 = typeof self
-   $S0 .= "("
-   $S0 .= $S1
-   $S0 .= ")"
-   .return ($S0)
-.end
-
-.namespace []       # Reset to root namespace for next test
-
-.sub PMC_as_classes__derived_3
-    .local pmc MyInt10
-    .local pmc MyInt10_2
-    get_class $P0, "Integer"
-
-    subclass MyInt10, $P0, "MyInt10"
-    addattribute MyInt10, 'intval'
-    get_class $P1, "MyInt10"
-    subclass MyInt10_2, $P1, "MyInt10_2"
-
-    .local pmc i
-    i = new "MyInt10_2"
-    $I0 = isa i, "Integer"
-    ok( $I0, 'obj isa grandparent (Integer)' )
-    $I0 = isa i, "MyInt10"
-    ok( $I0, 'obj isa parent (MyInt10)' )
-    $I0 = isa i, "MyInt10_2"
-    ok( $I0, 'obj isa its class (MyInt102)' )
-
-    i = 42    # set_integer is overridden below
-    $I0 = i   # get_integer is overridden below
-    is( $I0, 42, 'set/get_integer overridden' )
-
-    $S0 = i   # get_string is overridden below
-    is( $S0, 'MyInt10_2(42)', 'set/get_string overridden' )
-.end
-
-.namespace ["MyInt10_2"]
-.sub get_integer :vtable :method
-    $P0 = getattribute self, 'intval'
-    $I0 = $P0
-    .return ($I0)
-.end
-.sub get_string :vtable :method
-    $P0 = getattribute self, 'intval'
-    $I0 = $P0
-    $S1 = $I0
-    $S0 = typeof self
-    $S0 .= "("
-    $S0 .= $S1
-    $S0 .= ")"
-    .return ($S0)
-.end
-.namespace ['MyInt10']
-.sub 'set_integer_native' :vtable :method
-    .param int val
-    $P1 = new ['Integer']
-    $P1 = val
-    setattribute self, "intval", $P1
-    .return ()
-.end
-
-.namespace []       # Reset to root namespace for next test
-
-.sub subclassing_Class
-    .local pmc cl
-    .local pmc parent
-    parent = get_class "Class"
-    cl = subclass parent, "Foo33"
-    ok( 1, 'able to subclass Class' )
-
-    .local pmc o
-    o = new "Foo33"
-    ok( 1, 'able to instantiate subclass of Class' )
-
-    $S0 = typeof o
-    is( $S0, 'Foo33', 'object returns correct class' )
-.end
-
-.sub namespace_vs_name
-    .local pmc o, cl, f
-    newclass cl, "Foo34"
-    o = new "Foo34"
-    is( o, 'Foo34::get_string', 'found Foo34 namespace' )
-
-    o = Foo34()
-    is( o, 'Foo34', 'found global Foo34' )
-
-    f = get_global "Foo34"
-    o = f()
-    is( o, 'Foo34', 'found global Foo34 explicitly' )
-
-    f = get_global ["Foo34"], "Foo34"
-    o = f()
-    is( o, 'Foo34::Foo34', 'found method in Foo34 namespace' )
-.end
-
-.sub Foo34
-    .return("Foo34")
-.end
-
-.namespace [ "Foo34" ]
-
-.sub get_string :vtable :method
-    .return("Foo34::get_string")
-.end
-
-.sub Foo34
-    .return("Foo34::Foo34")
-.end
-
-.namespace []       # Reset to root namespace for next test
-
-.sub multiple_anon_classes
-     newclass $P0, "City3"
-     subclass $P1, $P0
-     newclass $P2, "State3"
-     subclass $P3, $P2
-     ok( 1,  "multiple anon classes didn't croak (bug #33103)" )
-.end
-
-.sub subclassed_Integer_bug
-   .local pmc class
-   .local pmc a
-   .local pmc b
-
-    subclass class, "Integer", "LispInteger1"
-
-    a = new "LispInteger1"
-    b = new "LispInteger1"
-
-    a = 1
-    b = 1
-
-    set $S0, a
-    is( $S0, '1', 'subclassed Integer is 1' )
-    set $S0, b
-    is( $S0, '1', 'subclassed Integer is 1' )
-
-    a = a * b
-    set $S0, a
-    is( $S0, '1', 'multip and reasign to subclassed Integer is 1' )
-.end
-
-.sub equality_of_subclassed_Integer
-  .local pmc class
-  class = subclass "Integer", "LispInteger2"
-
-  .local pmc a
-  a = new 'LispInteger2'
-  a = 123
-
-  .local pmc b
-  b = new 'LispInteger2'
-  b = 123
-
-  $I0 = a == b
-  ok( $I0, '123 is equal to 123' )
-
-.end
-
-.sub short_name_attributes
-    newclass $P1, "Foo22"
-    addattribute $P1, "i"
-    addattribute $P1, "j"
-
-    subclass $P2, $P1, "Bar22"
-    addattribute $P2, "k"
-    addattribute $P2, "l"
-
-    new $P2, "Bar22"
-
-    # set a bunch of attribs
-    new $P4, ['Integer']
-    set $P4, 10
-    setattribute $P2, "i", $P4
-
-    new $P4, ['Integer']
-    set $P4, 11
-    setattribute $P2, "j", $P4
-
-    new $P4, ['Integer']
-    set $P4, 20
-    setattribute $P2, "k", $P4
-
-    new $P4, ['Integer']
-    set $P4, 21
-    setattribute $P2, "l", $P4
-
-    getattribute $P6, $P2, "i"
-    is( $P6, 10, '"i" getattribute on parent class attrib' )
-    getattribute $P6, $P2, "j"
-    is( $P6, 11, '"j" getattribute on parent class attrib' )
-
-    getattribute $P6, $P2, "k"
-    is( $P6, 20, '"k" getattribute on subclass attrib' )
-    getattribute $P6, $P2, "l"
-    is( $P6, 21, '"l" getattribute on subclass attrib' )
-
-    getattribute $P6, $P2, ["Foo22"], "i"
-    is( $P6, 10, '["Foo22"], "i" getattribute on parent class attrib' )
-    getattribute $P6, $P2, ["Bar22"], "k"
-    is( $P6, 20, '["Bar22"], "k" getattribute on subclass attrib' )
-.end
-
-.sub init_with_and_without_arg
-    .local pmc cl, o, h, a
-    cl = newclass "Foo35"
-    addattribute cl, "a"
-    o = cl.'new'()
-    a = getattribute o, "a"
-    is( a, 'ok 1', 'init without an arg' )
-
-    h = new ['Hash']
-    $P0 = new ['String']
-    $P0 = "ok 2"
-    h['a'] = $P0
-    o  = new cl, h
-    a = getattribute o, "a"
-    is( a, 'ok 2', 'init with an arg' )
-.end
-
-.namespace ["Foo35"]
-.sub init_pmc :vtable :method
-    .param pmc args
-    $P0 = args['a']
-    setattribute self, 'a', $P0
-    .return()
-.end
-.sub init :vtable :method
-    $P0 = new ['String']
-    $P0 = "ok 1"
-    setattribute self, 'a', $P0
-.end
-
-.namespace []       # Reset to root namespace for next test
-
-.sub newclass_bracket_parsing
-    newclass $P0, ['Foo23';'Bar23']
-    ok( 1, 'newclass  created with brackets' )
-.end
-
-.sub verify_namespace_types
-    newclass $P0, ['Foo24';'Bar24']
-    getinterp $P0
-    set $P1, $P0[.IGLOBALS_CLASSNAME_HASH]
-    typeof $S0, $P1
-    is( $S0, 'NameSpace', 'namespace verified' )
-
-    set $P2, $P1['Foo24']
-    typeof $S0, $P2
-    is( $S0, 'NameSpace', 'namespace verified' )
-.end
-
-.sub verify_data_type
-    newclass $P0, ['Foo25';'Bar25']
-    getinterp $P0
-    set $P1, $P0[.IGLOBALS_CLASSNAME_HASH]
-    set $P2, $P1['Foo25']
-    set $P3, $P2['Bar25']
-
-    set $I0, $P3
-    isgt $I0, $I0, 0
-    ok( $I0, 'verified datatype > 0' )
-.end
-
-# Puts init in a namespace
-.sub new_keyed
-    .local pmc cl, o, p
-    cl = newclass ['Foo36';'Bar36']
-    addattribute cl, "init_check"
-    o = cl.'new'()
-    ok( 1, 'obj successfully created' )
-
-    p = getattribute o, "init_check"
-    is( p, 999, "overridden init called")
-.end
-
-.namespace ['Foo36';'Bar36']
-
-.sub init :vtable :method
-    .local pmc p
-    p = new ['Integer']
-    p = 999
-    setattribute self, "init_check", p
-.end
-
-.namespace []   # revert to root for next test
-
-.sub new_keyed_2
-    .local pmc c1, c2, o1, o2
-    c1 = newclass ['Foo37';'Bar37']
-    c2 = newclass ['Foo37';'Fuz37']
-    o1 = c1.'new'()
-    o2 = c2.'new'()
-    ok( 1, 'objects created successfully' )
-.end
-
-.namespace ['Foo37';'Bar37']
-
-.sub init :vtable :method
-    ok( 1, '__init Bar37' )
-.end
-
-.namespace ['Foo37';'Fuz37']
-
-.sub init :vtable :method
-    ok( 1, '__init Fuz37' )
-.end
-
-.namespace []   # revert to root for next test
-
-.sub new_keyed_3
-    .local pmc c1, c2, c3, o1, o2, o3
-    c1 = newclass ['Foo38';'Bar38']
-    c2 = newclass ['Foo38';'Buz38']
-    c3 = newclass 'Foo38'
-    o1 = new      ['Foo38';'Bar38']
-    o2 = new      ['Foo38';'Buz38']
-    o3 = new      'Foo38'
-    ok( 1, 'objects created successfully' )
-.end
-
-.namespace ['Foo38';'Bar38']
-
-.sub init :vtable :method
-    ok( 1, '__init Bar38' )
-.end
-
-.namespace ['Foo38';'Buz38']
-
-.sub init :vtable :method
-    ok( 1, '__init Buz38' )
-.end
-
-.namespace ['Foo38']
-
-.sub init :vtable :method
-    ok( 1, '__init Foo38' )
-.end
-
-.namespace []   # revert to root for next test
-
-.sub subclass_keyed
-    .local pmc base, o1, o2
-    base = subclass 'Hash', ['Perl6-3'; 'PAST'; 'Node']
-    addattribute base, '$.source'                  # original source
-    addattribute base, '$.pos'                     # offset position
-
-    $P0 = subclass base, ['Perl6-3'; 'PAST'; 'Sub']
-    $P0 = subclass base, ['Perl6-3'; 'PAST'; 'Stmt']
-    ok( 1, 'ok 1\n' )
-
-    o1 = new   ['Perl6-3'; 'PAST'; 'Sub']
-    o2 = new   ['Perl6-3'; 'PAST'; 'Stmt']
-    ok( 1, 'objects created successfully' )
-.end
-
-.namespace ['Perl6-3'; 'PAST'; 'Stmt']
-
-.sub init :vtable :method
-    ok( 1, '__init Stmt' )
-.end
-
-.namespace ['Perl6-3'; 'PAST'; 'Sub']
-
-.sub init :vtable :method
-    ok( 1, '__init Sub' )
-.end
-
-.namespace []   # revert to root for next test
-
-.sub test_class_name_multipart_name
-    .local pmc base, o1
-    base = subclass 'Hash', ['Perl6'; 'PAST'; 'Node']
-    o1 = new base
-    $S0 = typeof o1
-    is( $S0, "Perl6;PAST;Node", "typeof returns object's class name" )
-.end
-
-.sub test_get_class_multipart_name
-    .local pmc base, o1
-    base = subclass 'Hash', ['Perl6a'; 'PAST'; 'Node']
-    $P0 = get_class ['Perl6a'; 'PAST'; 'Node']
-    o1 = new $P0
-    $S0 = typeof o1
-    is( $S0, 'Perl6a;PAST;Node', 'typeof returns objects created from get_class' )
-.end
-
-.sub isa_bug
-    .local pmc base, o1, o2
-    base = subclass 'Hash', ['Perl6b'; 'PAST'; 'Node']
-    $P0 = new [ 'Perl6b'; 'PAST'; 'Node' ]
-
-    $I0 = isa $P0, [ 'Perl6b'; 'PAST'; 'Node']
-    is( $I0, 1, 'obj isa the full class name' )
-
-    $I0 = isa $P0, 'Hash'
-    is( $I0, 1, 'obj isa the parent class' )
-
-    $I0 = isa $P0, 'Perl6b'
-    is( $I0, 0, 'obj !isa the first part of the class name' )
-.end
-
-.sub new_nested_ordering
-    .local pmc c1, c2, o
-    c1 = newclass ['Foo39']
-    c2 = newclass ['Foo39';'Bar39']
-    o = c2.'new'()
-    ok( 1, 'objects created successfully' )
-.end
-
-.namespace ['Foo39']
-
-.sub init :vtable :method
-    ok( 0, '__init Foo39' )     # shouldn't be called
-.end
-
-.namespace ['Foo39';'Bar39']
-
-.sub init :vtable :method
-    ok( 1, '__init Bar39' )     # should be called
-.end
-
-.namespace []   # revert to root for next test
-
-.sub vtable_override_once_removed
-    .local pmc base
-    $P0 = get_class 'Integer'
-    base = subclass $P0, 'Foo40'      # create subclass 'Foo40'
-    addattribute base, '@!capt'
-
-    $P0 = subclass 'Foo40', 'Bar40'   # create subclass 'Bar40'
-    $P1 = new 'Bar40'                 # create an instance of 'Bar40'
-
-    $S1 = $P1                         # get its string representation
-    is( $S1, 'ok bar', 'get_string overridden' )
-.end
-
-.namespace [ 'Bar40' ]
-
-.sub 'get_string' :vtable :method
-    $S0 = 'ok bar'
-    .return ($S0)
-.end
-
-.namespace []   # revert to root for next test
-
-.sub vtable_fails_for_subclasses_of_core_classes
-    $P0 = subclass 'Hash', 'Foo41'
-    $P0 = subclass 'Hash', 'Bar41'
-
-    $P1 = new 'Foo41'
-    $S1 = $P1
-    is( $S1, 'Hello world', 'get_string :vtable :method' )
-
-    $P1 = new 'Bar41'
-    $S1 = $P1
-    is( $S1, 'Hello world', 'get_string :method :vtable' )
-.end
-
-.namespace [ 'Foo41' ]
-
-.sub 'get_string' :vtable :method
-    .return('Hello world')
-.end
-
-.namespace [ 'Bar41' ]
-
-.sub 'get_string' :method :vtable
-    .return('Hello world')
-.end
-
-.namespace []   # revert to root for next test
-
-.sub super___init_called_twice
-    $P0 = newclass 'Foo42'
-    $P1 = subclass $P0, 'Bar42'
-    addattribute $P1, 'i'
-
-    $P2 = $P1.'new'()
-.end
-
-.namespace [ 'Foo42' ]
-
-.sub 'init' :vtable :method
-    $P0 = getattribute self, 'i'
-    isnull $I1, $P0
-    ok( $I1, 'should be null' )
-
-    $P1 = new ['Integer']
-    setattribute self, "i", $P1  # i won't be null if init called again
-    .return ()
-.end
-
-.namespace []   # revert to root for next test
-
-.sub using_class_object_from_typeof_op_with_new
-    $P0 = newclass [ "Monkey" ; "Banana" ]
-    $P0 = $P0.'new'()
-    $S0 = $P0."ook"()
-    is( $S0, "Ook!", 'obj created from .new() class method' )
-
-    $P2 = typeof $P0
-    $P3 = new $P2
-    $S0 = $P3."ook"()
-    is( $S0, "Ook!", 'obj created from "new" called on result of typeof' )
-.end
-
-.namespace [ "Monkey" ; "Banana" ]
-.sub ook :method
-    $S1 = "Ook!"
-    .return ($S1)
-.end
-
-.namespace []   # revert to root for next test
-
-.macro exception_is ( M )
-    .local pmc exception
-    .local string message
-    .get_results (exception)
-
-    message = exception['message']
-    is( message, .M, .M )
-.endm
-
-.sub setting_non_existent_attribute
-    newclass $P1, "Foo45"
-    new $P2, $P1
-
-    new $P3, ['Integer']
-    push_eh handler
-        setattribute $P2, "bar", $P3
-    pop_eh
-    ok(0, "'No such attribute' exception not thrown")
-    goto end
-handler:
-    .exception_is( "No such attribute 'bar'" )
-end:
-.end
-
-.sub setting_non_existent_attribute_by_name
-    newclass $P1, "Foo47"
-    new $P2, $P1
-
-    new $P3, ['Integer']
-    push_eh handler
-        setattribute $P2, ["Foo47"], "no_such", $P3
-    pop_eh
-    ok(0, "'No such attribute' exception not thrown")
-    goto end
-handler:
-    .exception_is( "No such attribute 'no_such' in class 'Foo47'" )
-end:
-.end
-
-.sub getting_null_attribute
-    newclass $P1, "Foo51"
-    addattribute $P1, "i"
-    new $P2, "Foo51"
-
-    getattribute $P3, $P2, "i"
-    isnull $I0, $P3
-    is($I0, 1, "null attribute is null")
-.end
-
-.sub getting_non_existent_attribute
-    newclass $P1, "Foo52"
-    $P2 = $P1.'new'()
-
-    push_eh handler
-        getattribute $P3, $P2, "bar"
-    pop_eh
-    ok(0, "'No such attribute' exception not thrown")
-    goto end
-handler:
-    .exception_is( "No such attribute 'bar'" )
-end:
-.end
-
-.sub addparent_exceptions_1
-    newclass $P0, "Astronomical Object 2"
-    new $P1, ['String']
-    set $P1, "Not a class"
-    push_eh handler
-        addparent $P0, $P1
-    pop_eh
-    ok(0, "'Parent isn\'t a Class' exception not thrown")
-    goto end
-handler:
-    .exception_is( "Parent isn't a Class." )
-end:
-.end
-
-.sub addparent_exceptions_2
-    new $P0, ['Hash']
-    newclass $P1, "Trashcan"
-    push_eh handler
-        addparent $P0, $P1
-    pop_eh
-    ok(0, "'Only classes can be subclassed' exception not thrown")
-    goto end
-handler:
-    .exception_is( "Only classes can be subclassed" )
-end:
-.end
-
-.sub subclassing_a_non_existent_class
-    push_eh handler
-        subclass $P1, "Character", "Nemo"
-    pop_eh
-    ok(0, "nonexistent class exception not thrown")
-    goto end
-handler:
-    .exception_is( "Class 'Character' doesn't exist" )
-end:
-.end
-
-.sub anon_subclass_of_non_existent_class
-    push_eh handler
-        subclass $P1, "Character"
-    pop_eh
-    ok(0, "nonexistent class exception not thrown")
-    goto end
-handler:
-    .exception_is( "Class 'Character' doesn't exist" )
-end:
-.end
-
-.sub addattribute_duplicate
-    newclass $P1, "Foo53"
-    addattribute $P1, "i"
-    addattribute $P1, "j"
-    push_eh handler
-        addattribute $P1, "i"
-    pop_eh
-    ok(0, "attribute already exists exception not thrown")
-    goto end
-handler:
-    .exception_is( "Attribute 'i' already exists in 'Foo53'." )
-end:
-.end
-
-.sub wrong_way_to_create_new_objects
-    push_eh handler
-        new $P0, ['Object']
-    pop_eh
-    ok(0, "object instantiation exception not thrown")
-    goto end
-handler:
-    .exception_is( "Object must be created by a class." )
-end:
-.end
-
-.sub attribute_values__subclassing_access_meths
-    newclass $P1, "Foo54"
-    # must add attributes before object instantiation
-    addattribute $P1, "i"
-    addattribute $P1, "j"
-    # define attrib access functions in Foo54 namespace
-    get_global $P5, "Foo54__set"
-    addmethod $P1, "Foo54__set", $P5
-    get_global $P5, "Foo54__get"
-    addmethod $P1, "Foo54__get", $P5
-
-    subclass $P2, $P1, "Bar54"
-    addattribute $P2, "k"
-    addattribute $P2, "l"
-    get_global $P5, "Bar54__set"
-    addmethod $P2, "Bar54__set", $P5
-    get_global $P5, "Bar54__get"
-    addmethod $P2, "Bar54__get", $P5
-
-    # instantiate a Bar54 object
-    new $P13, "Bar54"
-
-    # Foo54 and Bar54 have attribute accessor methods
-    new $P5, ['String']        # set attribute values
-    set $P5, "i"       # attribute slots have reference semantics
-    set_args "0,0", $P5, "i"
-    get_results ""
-    callmethodcc $P13, "Foo54__set"
-
-    new $P5, ['String']
-    set $P5, "j"
-    set_args "0,0", $P5, "j"
-    get_results ""
-    callmethodcc  $P13,"Foo54__set"
-
-    new $P5, ['String']
-    set $P5, "k"
-    set_args "0,0", $P5, "k"
-    get_results ""
-    callmethodcc  $P13,"Bar54__set"
-
-    new $P5, ['String']
-    set $P5, "l"
-    set_args "0,0", $P5, "l"
-    get_results ""
-    callmethodcc  $P13,"Bar54__set"
-
-    # now retrieve attributes
-    set_args "0",  "i"
-    get_results "0", $P5
-    callmethodcc  $P13,"Foo54__get"
-    is( $P5, "i", 'got attrib i from Bar54->Foo54__get' )
-
-    set_args "0",  "j"
-    get_results "0", $P5
-    callmethodcc  $P13,"Foo54__get"
-    is( $P5, "j", 'got attrib j from Bar54->Foo54__get' )
-
-    set_args "0",  "k"
-    get_results "0", $P5
-    callmethodcc  $P13,"Bar54__get"
-    is( $P5, "k", 'got attrib k from Bar54->Bar54__get' )
-
-    set_args "0",  "l"
-    get_results "0", $P5
-    callmethodcc  $P13,"Bar54__get"
-    is( $P5, "l", 'got attrib l from Bar54->Bar54__get' )
-.end
-
-# set(obj: Pvalue, Iattr_idx)
-.sub Foo54__set
-    get_params "0,0", $P5, $S4
-    ok( 1, "in Foo54__set" )
-    interpinfo $P2, .INTERPINFO_CURRENT_OBJECT
-    setattribute $P2, $S4, $P5
-    set_returns ""
-    returncc
-.end
-
-# Pattr = get(obj: Iattr_idx)
-.sub Foo54__get
-    get_params "0", $S4
-    ok( 1, "in Foo54__get" )
-    interpinfo $P2, .INTERPINFO_CURRENT_OBJECT
-    getattribute $P5, $P2, $S4
-    set_returns "0", $P5
-    returncc
-.end
-
-.sub Bar54__set
-    get_params "0,0", $P5, $S4
-    interpinfo $P2, .INTERPINFO_CURRENT_OBJECT
-    ok( 1, "in Bar54__set" )
-    setattribute $P2, $S4, $P5
-    set_returns ""
-    returncc
-.end
-
-.sub Bar54__get
-    get_params "0", $S4
-    ok( 1, "in Bar54__get" )
-    interpinfo $P2, .INTERPINFO_CURRENT_OBJECT
-    getattribute $P5, $P2, $S4
-    set_returns "0", $P5
-    returncc
-.end
-
-.sub attribute_values__inherited_access_meths
-    newclass $P1, "Foo56"
-    # must add attributes before object instantiation
-    addattribute $P1, "i"
-    addattribute $P1, "j"
-    # define attrib access functions
-    get_global $P5, "set"
-    addmethod $P1, "set", $P5
-    get_global $P5, "get"
-    addmethod $P1, "get", $P5
-
-    subclass $P2, $P1, "Bar56"
-    addattribute $P2, "k"
-    addattribute $P2, "l"
-    addattribute $P2, "m"
-
-    # subclass is preferred for the SI case over
-    #   newclass $P2, "Bar56"
-    #   addattrib ...
-    #   addparent $P2, $P1
-    # which is suitable for adding multiple parents to one class
-
-    # instantiate a Bar56 object
-    new $P2, "Bar56"
-
-    # Foo56 and Bar56 have attribute accessor methods
-    new $P5, ['String']        # set attribute values
-    set $P5, "i"       # attribute slots have reference semantics
-    set_args "0,0,0", $P5, "Foo56", "i"
-    callmethodcc $P2, "set"
-
-    new $P5, ['String']
-    set $P5, "j"
-    set_args "0,0,0", $P5, "Foo56", "j"
-    callmethodcc $P2, "set"
-
-    new $P5, ['String']
-    set $P5, "k"
-    set_args "0,0,0", $P5, "Bar56", "k"
-    callmethodcc $P2, "set"
-
-    new $P5, ['String']
-    set $P5, "l"
-    set_args "0,0,0", $P5, "Bar56", "l"
-    callmethodcc $P2, "set"
-
-    new $P5, ['String']
-    set $P5, "m"
-    set_args "0,0,0", $P5, "Bar56", "m"
-    callmethodcc $P2, "set"
-
-    # now retrieve attributes
-    set_args "0,0", "Foo56", "i"
-    callmethodcc $P2, "get"
-    get_results "0", $P5
-    is( $P5, 'i', 'got attrib i from subclass through parent method' )
-
-    set_args "0,0", "Foo56", "j"
-    callmethodcc $P2, "get"
-    get_results "0", $P5
-    is( $P5, "j", 'got attrib i from subclass through parent method' )
-
-    set_args "0,0", "Bar56", "k"
-    callmethodcc $P2, "get"
-    get_results "0", $P5
-    is( $P5, "k", 'got attrib i from subclass through parent method' )
-
-    set_args "0,0", "Bar56", "l"
-    callmethodcc $P2, "get"
-    get_results "0", $P5
-    is( $P5, "l", 'got attrib i from subclass through parent method' )
-
-    set_args "0,0", "Bar56", "m"
-    callmethodcc $P2, "get"
-    get_results "0", $P5
-    is( $P5, "m", 'got attrib i from subclass through parent method' )
-.end
-
-# Foo56 provides accessor functions which Bar56 inherits
-# they take an additional classname argument SClass
-
-# set(obj: Pvalue, SClass, Sattr)
-.sub set
-    get_params "0,0,0", $P5, $S4, $S5
-    interpinfo $P2, .INTERPINFO_CURRENT_OBJECT
-    setattribute $P2, $S5, $P5
-    set_returns ""
-    returncc
-.end
-
-# Pattr = get(obj: SClass, Sattr)
-.sub get
-    get_params "0,0", $S4, $S5
-    interpinfo $P2, .INTERPINFO_CURRENT_OBJECT
-    getattribute $P5, $P2, $S5
-    set_returns "0", $P5
-    returncc
-.end
-
-
-# Local Variables:
-#   mode: pir
-#   fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4 ft=pir:

Modified: branches/gsoc_past_optimization/t/pmc/orderedhashiterator.t
==============================================================================
--- branches/gsoc_past_optimization/t/pmc/orderedhashiterator.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/pmc/orderedhashiterator.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -20,25 +20,46 @@
 .sub 'main'
     .include 'test_more.pir'
 
-    plan(2)
+    plan(3)
 
-    # Just test that we can't create OrderedHashIterator directly
-    $I0 = 1
+    'test_init'()
+    'test_bad_type'()
+.end
+
+.sub 'test_init'
+    .local pmc oh, it
+    .local int i, i2
+    # We can't create OrderedHashIterator directly
+    i = 1
     push_eh fail
-    $P0 = new ['OrderedHashIterator']
-    $I0 = 0
+    oh = new ['OrderedHashIterator']
+    i = 0
   fail:
     pop_eh
-    ok($I0, "Can't create OrderedHashIterator directly")
-
-    $P0 = new ['OrderedHash']
-    $P1 = iter $P0
-    $I0 = isa $P1, 'Iterator'
-    ok($I0, 'OrderedHashIterator has proper type')
-
+    ok(i, "Can't create OrderedHashIterator directly")
 
+    oh = new ['OrderedHash']
+    it = iter oh
+    sweep 1 # Make sure the mark vtable is covered
+    i = isa it, 'Iterator'
+    i2 = isa it, 'OrderedHashIterator'
+    add i, i2
+    is(i, 2, 'OrderedHashIterator has proper type')
 .end
 
+.sub 'test_bad_type'
+    .local pmc oh, it
+    .local int i
+    oh = new ['OrderedHash']
+    it = iter oh
+    i = 1
+    push_eh catch
+    it = 9999 # Let's hope it will never be a valid iteration type
+    i = 0
+  catch:
+    pop_eh
+    ok(i, 'invalid iteration type throws')
+.end
 
 # Local Variables:
 #   mode: pir

Modified: branches/gsoc_past_optimization/t/pmc/packfile.t
==============================================================================
--- branches/gsoc_past_optimization/t/pmc/packfile.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/pmc/packfile.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -15,6 +15,8 @@
 
 Tests the Packfile PMC.
 
+If you see this tests failing after bumping PBC_COMPAT rerun tools/dev/mk_packfile_pbc.
+
 =cut
 
 .include 't/pmc/testlib/packfile_common.pir'
@@ -295,27 +297,30 @@
 # Packfile.pack.
 # Check that unpack-pack produce correct result.
 .sub 'test_pack'
-    .local string filename, first
+    .local string filename, orig
     push_eh load_error
     $S0 = '_filename'()
     $P0 = new ['FileHandle']
     $P0.'open'($S0, 'r')
 
-    first = $P0.'readall'()
+    orig = $P0.'readall'()
 
     .local pmc packfile
     packfile = new 'Packfile'
-    packfile = first
+    packfile = orig
     pop_eh
 
-    # Packed file should be exactly the same as loaded
-    .local string second
+    # Loaded packfile can be from different platform/config,
+    # packing and unpacking again to avoid that differences.
+    .local string first, second
     # Pack
-    second = packfile
+    first = packfile
+    .local pmc packfilesecond
+    packfilesecond = new 'Packfile'
+    packfilesecond = first
+    second = packfilesecond
 
-    $I0 = cmp first, second
-    $I0 = not $I0
-    todo($I0, 'pack produced same result twice: TT #1614')
+    is(first, second, 'pack produced same result twice: TT #1614')
     .return()
 load_error:
     .get_results($P0)
@@ -325,6 +330,7 @@
 .end
 
 # Test pack/set_string unpack/get_string equivalency
+
 .sub 'test_synonyms'
     .local pmc pf
     push_eh load_error

Modified: branches/gsoc_past_optimization/t/pmc/resizableintegerarray.t
==============================================================================
--- branches/gsoc_past_optimization/t/pmc/resizableintegerarray.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/pmc/resizableintegerarray.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -43,7 +43,7 @@
 
 .sub main :main
     .include 'test_more.pir'
-    plan(46)
+    plan(47)
 
     test_does_interfaces()
 
@@ -74,6 +74,7 @@
     test_cant_shift_empty()
     test_iterator()
     test_clone()
+    test_freeze()
 .end
 
 .sub test_does_interfaces
@@ -596,6 +597,17 @@
     is( $I0, 1, 'cloned is equal to original')
 .end
 
+.sub test_freeze
+    .local pmc ria, th
+    .local string s
+    ria = new ['ResizableIntegerArray']
+    push ria, 1
+    push ria, 0x1FFFF
+    s = freeze ria
+    th = thaw s
+    is( ria, th, 'freeze/thaw copy is equal to original' )
+.end
+
 # Local Variables:
 #   mode: pir
 #   fill-column: 100

Modified: branches/gsoc_past_optimization/t/pmc/schedulermessage.t
==============================================================================
--- branches/gsoc_past_optimization/t/pmc/schedulermessage.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/pmc/schedulermessage.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1,5 +1,5 @@
 #!./parrot
-# Copyright (C) 2008, Parrot Foundation.
+# Copyright (C) 2008-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -16,10 +16,12 @@
 
 =cut
 
+.include 'except_types.pasm'
+
 .sub main :main
     .include 'test_more.pir'
 
-    plan(7)
+    plan(8)
 
     init_check()
     type_and_id_tests()
@@ -30,6 +32,22 @@
 .sub init_check
     new $P0, ['SchedulerMessage']
     ok(1, 'Instantiated SchedulerMessage PMC')
+
+    .local pmc eh
+    eh = new ['ExceptionHandler']
+    eh.'handle_types'(.EXCEPTION_INVALID_OPERATION)
+    set_addr eh, catch
+    push_eh eh
+    $I0 = 1
+    $P1 = new ['Integer']
+    $P0 = new ['SchedulerMessage'], $P1
+    $I0 = 0
+    goto check
+catch:
+    finalize eh
+check:
+    pop_eh
+    ok($I0, 'initializing with invalid type throws')
 .end
 
 .sub type_and_id_tests
@@ -69,6 +87,10 @@
 
     $P1 = new ['SchedulerMessage'], $P0
 
+    # Make sure the mark vtable function is exercised.
+    null $P0
+    sweep 1
+
     $S0 = $P1
     is($S0, "nine", "hash-initialized message has correct type")
 

Modified: branches/gsoc_past_optimization/t/pmc/sockaddr.t
==============================================================================
--- branches/gsoc_past_optimization/t/pmc/sockaddr.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/pmc/sockaddr.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1,5 +1,5 @@
 #!./parrot
-# Copyright (C) 2006-2008, Parrot Foundation.
+# Copyright (C) 2006-2010, Parrot Foundation.
 # $Id$
 
 =head1 NAME
@@ -19,7 +19,7 @@
 .sub main :main
     .include 'test_more.pir'
 
-    plan(4)
+    plan(5)
 
     new $P0, ['Socket']
     ok(1, 'Instantiated a Socket PMC')
@@ -30,8 +30,13 @@
     $I0 = isnull $P0
     $I0 = not $I0
     ok($I0, 'Sockaddr PMC created')
+
     $S0 = typeof $P1
     is($S0, 'Sockaddr', 'PMC has correct type')
+
+    $P2 = clone $P1
+    $S2 = typeof $P2
+    is($S2, 'Sockaddr', 'PMC clone has correct type')
 .end
 
 # Local Variables:

Modified: branches/gsoc_past_optimization/t/pmc/stringbuilder.t
==============================================================================
--- branches/gsoc_past_optimization/t/pmc/stringbuilder.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/pmc/stringbuilder.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -25,7 +25,7 @@
     test_push_pmc()             # 4 tests
     test_push_string_unicode()  # 1 test
     test_i_concatenate()        # 1 test
-    test_set_string_native()    # 3 tests
+    test_set_string_native()    # 4 tests
     test_set_string_native_with_hash()    # 2 tests
     test_set_pmc()
     test_substr()
@@ -176,6 +176,14 @@
     is( $S0, "foobar", "... with appending string after")
     is( $S99, "foo", "... without touching of original string")
 
+    # Assumed that the previous operations does not reach initial
+    # capacity of the buffer, the next test should cause a
+    # reallocation, ensuring full coverage of the set_string_native
+    # vtable function.
+    $S1 = repeat 'x', 4096
+    sb = $S1
+    $I0 = sb.'get_string_length'()
+    is( $I0, 4096, "... with a big size change")
 .end
 
 .sub 'test_set_string_native_with_hash'

Modified: branches/gsoc_past_optimization/t/pmc/stringhandle.t
==============================================================================
--- branches/gsoc_past_optimization/t/pmc/stringhandle.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/pmc/stringhandle.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -7,7 +7,7 @@
 use lib qw( . lib ../lib ../../lib );
 
 use Test::More;
-use Parrot::Test tests => 19;
+use Parrot::Test tests => 25;
 
 =head1 NAME
 
@@ -69,6 +69,48 @@
 ok 7 - $P7.open($S1, $S2) # new file, write mode succeeds
 OUT
 
+pir_output_is( <<'CODE', <<'OUT', 'get_bool' );
+.sub test :main
+    .local pmc sh
+    .local int b
+    sh = new ['StringHandle']
+    b = 0
+    unless sh goto b_false
+    b = 1
+  b_false:
+    say b
+    sh.'open'('mockname', 'w')
+    sh.'print'('Some content')
+    sh.'close'()
+    sh.'open'()
+    b = 0
+    unless sh goto b_true
+    b = 1
+  b_true:
+    say b
+.end
+CODE
+0
+1
+OUT
+
+# StringHandle doesn't use file descriptor, get_fd always return -1
+pir_output_is( <<'CODE', <<'OUT', 'get_fd method' );
+.sub test :main
+    .local pmc sh
+    .local int fd
+    sh = new ['StringHandle']
+    fd = sh.'get_fd'()
+    say fd
+    sh.'open'('mockname', 'r')
+    fd = sh.'get_fd'()
+    say fd
+.end
+CODE
+-1
+-1
+OUT
+
 SKIP: {
     skip 'no asynch calls yet' => 1;
 
@@ -206,6 +248,44 @@
 ok 6 - read string back from file
 OUT
 
+pir_output_is( <<'CODE', <<'OUT', 'puts' );
+.include 'except_types.pasm'
+.sub 'test' :main
+    .local pmc sh, eh
+    .local int result
+    sh = new ['StringHandle']
+    eh = new ['ExceptionHandler']
+    eh.'handle_types'(.EXCEPTION_PIO_ERROR)
+    push_eh eh
+
+    # puts to SH not opened
+    result = 0
+    set_addr eh, handle1
+    sh.'puts'('something')
+    result = 1
+    goto done1
+handle1:
+    finalize eh
+done1:
+    say result
+
+    # puts to SH opened for reading
+    result = 0
+    set_addr eh, handle2
+    sh.'open'('mockname', 'r')
+    sh.'puts'('something')
+    result = 1
+    goto done2
+handle2:
+    finalize eh
+done2:
+    say result
+.end
+CODE
+0
+0
+OUT
+
 # L<PDD22/I\/O PMC API/=item print.*=item readline>
 pir_output_is( <<"CODE", <<'OUT', 'readline - synchronous' );
 .sub 'test' :main
@@ -520,6 +600,25 @@
 ok
 OUTPUT
 
+pir_output_is( <<"CODE", <<"OUTPUT", "readall - stringhandle with null content" );
+.sub main :main
+    .local pmc sh
+    .local string s
+    sh = new ['StringHandle']
+    sh.'open'('mockname', 'r')
+    # Open sets content to an empty string, flush resets is to null
+    # and that is the case we are testing here.
+    # Also, ensures coverage of the flush method.
+    sh.'flush'()
+    s = sh.'readall'()
+    print '['
+    print s
+    say ']'
+.end
+CODE
+[]
+OUTPUT
+
 pir_output_is( <<"CODE", <<"OUTPUT", "readall() - opened stringhandle" );
 .sub main :main
     \$S0 = <<"EOS"
@@ -544,6 +643,34 @@
 ok
 OUTPUT
 
+pir_output_is( <<'CODE', <<"OUTPUT", "is_closed" );
+.sub main
+    .local pmc sh
+    .local int i
+    sh = new ['StringHandle']
+    i = sh.'is_closed'()
+    say i
+    sh.'open'("foo", "w")
+    i = sh.'is_closed'()
+    say i
+.end
+CODE
+1
+0
+OUTPUT
+
+pir_output_is( <<'CODE', <<'OUTPUT', 'StringHandle is not a tty' );
+.sub main
+    .local pmc sh
+    .local int i
+    sh = new ['StringHandle']
+    i = sh.'is_tty'()
+    say i
+.end
+CODE
+0
+OUTPUT
+
 pir_output_is( <<"CODE", <<"OUTPUT", "readall() - utf8 on closed stringhandle" );
 .sub 'main'
     .local pmc ifh

Modified: branches/gsoc_past_optimization/t/pmc/stringiterator.t
==============================================================================
--- branches/gsoc_past_optimization/t/pmc/stringiterator.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/pmc/stringiterator.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -21,13 +21,50 @@
 .sub main :main
     .include 'test_more.pir'
 
-    plan(18)
+    plan(24)
 
-    iterate_forward() # 10 tests
+    test_clone()
+    test_elements()
+    iterate_forward() # 11 tests
     iterate_backward() # 8 tests
+    iterate_wrong() # 1 test
+    iterate_out() # 1 test
 
 .end
 
+.sub 'test_clone'
+    .local pmc s, it, itc
+    .local int nit, nitc
+
+    s = new ['String']
+    s = 'somestring'
+    it = iter s
+    # Get a clone and make sure both the original and the clone
+    # gets marked.
+    sweep 1
+    nit = elements it
+    itc = clone it
+    sweep 1
+    nitc = elements itc
+    is(nit, nitc, "clone has same length as original")
+.end
+
+.sub test_elements
+    .local string s
+    .local pmc ps, it
+    .local int ns, nit
+
+    s = 'someotherstring'
+    ps = new ['String']
+    ps = s
+    it = iter ps
+    ns = length s
+    nit = elements it
+    is(ns, nit, "iter elements is equal to string length")
+    nit = it
+    is(ns, nit, "iter get_integer is equal to string length")
+.end
+
 .sub 'iterate_forward'
     .local pmc s, it
 
@@ -47,6 +84,9 @@
     ok(it, "Can shift 1st character")
     is($S0, 'b', "With correct value")
 
+    $S0 = it[0]
+    is($S0, 'a', "can get string keyed int correct value")
+
     $S0 = shift it
     ok(it, "Can shift 2nd character")
     is($S0, 'a', "With correct value")
@@ -96,6 +136,78 @@
     ok($I0, "Shifting from finished iterator throws exception")
 .end
 
+.sub 'iterate_wrong'
+    .local pmc s, it, ex
+    .local int r
+
+    s = new ['String']
+    s = 'BAZ'
+
+    it = iter s
+    push_eh catch_wrong
+    it = 42 # Let's hope we'll never have such direction
+    r = 0
+    goto dotest
+catch_wrong:
+    .get_results(ex)
+    finalize ex
+    pop_eh
+    r = 1
+dotest:
+    ok(r, "Caught wrong direction")
+.end
+
+# out of bounds conditions not covered by previous tests
+.sub 'iterate_out'
+    .local pmc s, it, eh
+    s = new ['String']
+    s = 'hi'
+    it = iter s
+    .local string rs
+    rs = shift it
+    rs = shift it
+    eh = new ['ExceptionHandler']
+    push_eh eh
+
+    # shift string
+    set_addr eh, catch1
+    rs = shift it
+    goto fail
+catch1:
+    finalize eh
+
+    # shift integer
+    set_addr eh, catch2
+    .local int ri
+    ri = shift it
+    goto fail
+catch2:
+    finalize eh
+
+t3:
+    # pop string
+    set_addr eh, catch3
+    .local int ri
+    rs = pop it
+    goto fail
+catch3:
+    finalize eh
+
+    # pop integer
+    set_addr eh, catch4
+    .local int ri
+    ri = pop it
+    goto fail
+catch4:
+    finalize eh
+
+    ok(1, "Caught out of bounds iterations")
+    goto end
+fail:
+    ok(0, "Out of bounds iteration should throw")
+end:
+.end
+
 # Local Variables:
 #   mode: pir
 #   fill-column: 100

Modified: branches/gsoc_past_optimization/t/src/embed.t
==============================================================================
--- branches/gsoc_past_optimization/t/src/embed.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/src/embed.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -8,7 +8,7 @@
 use Test::More;
 use Parrot::Test;
 
-plan tests => 9;
+plan tests => 10;
 
 =head1 NAME
 
@@ -62,21 +62,30 @@
 Done
 OUTPUT
 
-c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', 'Parrot_compile_string populates the error string when an opcode is given improper arguments');
-
+my $common = linedirective(__LINE__) . <<'CODE';
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include "parrot/embed.h"
 #include "parrot/extend.h"
 
-void fail(const char *msg);
+static void fail(const char *msg);
+static Parrot_String createstring(Parrot_Interp interp, const char * value);
 
-void fail(const char *msg)
+static void fail(const char *msg)
 {
     fprintf(stderr, "failed: %s\n", msg);
     exit(EXIT_FAILURE);
 }
 
+static Parrot_String createstring(Parrot_Interp interp, const char * value)
+{
+    return Parrot_new_string(interp, value, strlen(value), (const char*)NULL, 0);
+}
+
+CODE
+
+c_output_is($common . linedirective(__LINE__) . <<'CODE', <<'OUTPUT', 'Parrot_compile_string populates the error string when an opcode is given improper arguments');
 
 int main(int argc, const char **argv)
 {
@@ -88,7 +97,7 @@
     interp = Parrot_new(NULL);
     if (! interp)
         fail("Cannot create parrot interpreter");
-    lang = Parrot_new_string(interp, "PIR", 3, (const char*)NULL, 0);
+    lang = createstring(interp, "PIR");
 
     func_pmc = Parrot_compile_string(interp, lang, ".sub foo\n copy\n.end", &err);
     Parrot_printf(interp, "%Ss\n", err);
@@ -99,21 +108,7 @@
 The opcode 'copy' (copy<0>) was not found. Check the type and number of the arguments
 OUTPUT
 
-c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', 'Parrot_compile_string populates the error string when given invalid language string');
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "parrot/embed.h"
-#include "parrot/extend.h"
-
-void fail(const char *msg);
-
-void fail(const char *msg)
-{
-    fprintf(stderr, "failed: %s\n", msg);
-    exit(EXIT_FAILURE);
-}
-
+c_output_is($common . linedirective(__LINE__) . <<'CODE', <<'OUTPUT', 'Parrot_compile_string populates the error string when given invalid language string');
 
 int main(int argc, const char **argv)
 {
@@ -125,7 +120,7 @@
     interp = Parrot_new(NULL);
     if (! interp)
         fail("Cannot create parrot interpreter");
-    lang = Parrot_new_string(interp, "Foo", 3, (const char*)NULL, 0);
+    lang = createstring(interp, "Foo");
 
     func_pmc = Parrot_compile_string(interp, lang, "This doesn't matter", &err);
     Parrot_printf(interp, "%Ss\n", err);
@@ -137,21 +132,7 @@
 OUTPUT
 
 
-c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', 'Parrot_compile_string populates the error string when there is an IMCC syntax error', 'todo' => 'TT #1610 : does not properly catch IMCC errors');
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "parrot/embed.h"
-#include "parrot/extend.h"
-
-void fail(const char *msg);
-
-void fail(const char *msg)
-{
-    fprintf(stderr, "failed: %s\n", msg);
-    exit(EXIT_FAILURE);
-}
-
+c_output_is($common . linedirective(__LINE__) . <<'CODE', <<'OUTPUT', 'Parrot_compile_string populates the error string when there is an IMCC syntax error', 'todo' => 'TT #1610 : does not properly catch IMCC errors');
 
 int main(int argc, const char **argv)
 {
@@ -163,7 +144,7 @@
     interp = Parrot_new(NULL);
     if (! interp)
         fail("Cannot create parrot interpreter");
-    lang = Parrot_new_string(interp, "PIR", 3, (const char*)NULL, 0);
+    lang = createstring(interp, "PIR");
 
     func_pmc = Parrot_compile_string(interp, lang, "The sleeper must awake", &err);
     Parrot_printf(interp,"Caught exception\n");
@@ -177,21 +158,7 @@
 OUTPUT
 
 
-c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', "Hello world from main" );
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "parrot/embed.h"
-#include "parrot/extend.h"
-
-void fail(const char *msg);
-
-void fail(const char *msg)
-{
-    fprintf(stderr, "failed: %s\n", msg);
-    exit(EXIT_FAILURE);
-}
+c_output_is($common . linedirective(__LINE__) . <<'CODE', <<'OUTPUT', "Hello world from main" );
 
 int main(void)
 {
@@ -207,7 +174,7 @@
     Parrot_printf(interp, "Hello, parrot\n");
 
     /* Compile and execute a pir sub */
-    compiler = Parrot_new_string(interp, "PIR", 3, (const char *)NULL, 0);
+    compiler = createstring(interp, "PIR");
     code = Parrot_compile_string(interp, compiler,
 ".sub main :main\n"
 "  say 'Hello, pir'\n"
@@ -226,21 +193,7 @@
 Hello, pir
 OUTPUT
 
-c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', "Hello world from a sub" );
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "parrot/embed.h"
-#include "parrot/extend.h"
-
-void fail(const char *msg);
-
-void fail(const char *msg)
-{
-    fprintf(stderr, "failed: %s\n", msg);
-    exit(EXIT_FAILURE);
-}
+c_output_is($common . linedirective(__LINE__) . <<'CODE', <<'OUTPUT', "Hello world from a sub" );
 
 int main(void)
 {
@@ -260,7 +213,7 @@
         fail("Cannot create parrot interpreter");
 
     /* Compile pir code */
-    compiler = Parrot_new_string(interp, "PIR", 3, (const char *)NULL, 0);
+    compiler = createstring(interp, "PIR");
     code = Parrot_compile_string(interp, compiler,
 ".sub main :main\n"
 "  say 'Must not be seen!'\n"
@@ -277,10 +230,10 @@
 
     /* Get parrot namespace */
     rootns = Parrot_get_root_namespace(interp);
-    parrotname = Parrot_new_string(interp, "parrot", 6, (const char *)NULL, 0);
+    parrotname = createstring(interp, "parrot");
     parrotns = Parrot_PMC_get_pmc_keyed_str(interp, rootns,  parrotname);
     /* Get the sub */
-    subname = Parrot_new_string(interp, "hello", 5, (const char *)NULL, 0);
+    subname = createstring(interp, "hello");
     sub = Parrot_PMC_get_pmc_keyed_str(interp, parrotns,  subname);
     /* Execute it */
     Parrot_ext_call(interp, sub, "->");
@@ -292,22 +245,68 @@
 Hello, sub
 OUTPUT
 
-c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', "External sub" );
+c_output_is($common . linedirective(__LINE__) . <<'CODE', <<'OUTPUT', "calling a sub with argument and return" );
 
-#include <stdio.h>
-#include <stdlib.h>
+int main(void)
+{
+    Parrot_Interp interp;
+    Parrot_String compiler;
+    Parrot_String errstr;
+    Parrot_PMC code;
+    Parrot_PMC rootns;
+    Parrot_String parrotname;
+    Parrot_PMC parrotns;
+    Parrot_String subname;
+    Parrot_PMC sub;
+    Parrot_String msg;
+    Parrot_String retstr;
 
-#include "parrot/embed.h"
-#include "parrot/extend.h"
+    /* Create the interpreter */
+    interp = Parrot_new(NULL);
+    if (! interp)
+        fail("Cannot create parrot interpreter");
 
-void fail(const char *msg);
-void hello(Parrot_Interp interp);
+    /* Compile pir code */
+    compiler = createstring(interp, "PIR");
+    code = Parrot_compile_string(interp, compiler,
+".sub main :main\n"
+"  say 'Must not be seen!'\n"
+"\n"
+".end\n"
+"\n"
+".sub hello\n"
+"  .param string s\n"
+"  print s\n"
+"  .return('world!')\n"
+"\n"
+".end\n"
+"\n",
+        &errstr
+    );
 
-void fail(const char *msg)
-{
-    fprintf(stderr, "failed: %s\n", msg);
-    exit(EXIT_FAILURE);
+    /* Get parrot namespace */
+    rootns = Parrot_get_root_namespace(interp);
+    parrotname = createstring(interp, "parrot");
+    parrotns = Parrot_PMC_get_pmc_keyed_str(interp, rootns,  parrotname);
+    /* Get the sub */
+    subname = createstring(interp, "hello");
+    sub = Parrot_PMC_get_pmc_keyed_str(interp, parrotns,  subname);
+
+    /* Execute it */
+    msg = createstring(interp, "Hello, ");
+    Parrot_ext_call(interp, sub, "S->S", msg, &retstr);
+    Parrot_printf(interp, "%Ss\n", retstr);
+
+    Parrot_destroy(interp);
+    return 0;
 }
+CODE
+Hello, world!
+OUTPUT
+
+c_output_is($common . linedirective(__LINE__) . <<'CODE', <<'OUTPUT', "External sub" );
+
+void hello(Parrot_Interp interp);
 
 void hello(Parrot_Interp interp)
 {
@@ -328,7 +327,7 @@
         fail("Cannot create parrot interpreter");
 
     /* Compile pir */
-    compiler = Parrot_new_string(interp, "PIR", 3, (const char *)NULL, 0);
+    compiler = createstring(interp, "PIR");
     code = Parrot_compile_string(interp, compiler,
 ".sub externcall\n"
 "  .param pmc ec\n"
@@ -348,23 +347,10 @@
 Hello from C
 OUTPUT
 
-c_output_is(linedirective(__LINE__) . <<'CODE', <<'OUTPUT', "Insert external sub in namespace" );
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "parrot/embed.h"
-#include "parrot/extend.h"
+c_output_is($common . linedirective(__LINE__) . <<'CODE', <<'OUTPUT', "Insert external sub in namespace" );
 
-void fail(const char *msg);
 void hello(Parrot_Interp interp);
 
-void fail(const char *msg)
-{
-    fprintf(stderr, "failed: %s\n", msg);
-    exit(EXIT_FAILURE);
-}
-
 void hello(Parrot_Interp interp)
 {
     Parrot_printf(interp, "Hello from C\n");
@@ -389,7 +375,7 @@
         fail("Cannot create parrot interpreter");
 
     /* Compile pir */
-    compiler = Parrot_new_string(interp, "PIR", 3, (const char *)NULL, 0);
+    compiler = createstring(interp, "PIR");
     code = Parrot_compile_string(interp, compiler,
 ".sub externcall\n"
 "  hello()\n"
@@ -401,10 +387,10 @@
 
     /* Create extern sub and insert in parrot namespace */
     rootns = Parrot_get_root_namespace(interp);
-    parrotname = Parrot_new_string(interp, "parrot", 6, (const char *)NULL, 0);
+    parrotname = createstring(interp, "parrot");
     parrotns = Parrot_PMC_get_pmc_keyed_str(interp, rootns, parrotname);
     hellosub = Parrot_sub_new_from_c_func(interp, (void (*)())& hello, "vJ");
-    helloname = Parrot_new_string(interp, "hello", 5, (const char *)NULL, 0);
+    helloname = createstring(interp, "hello");
     Parrot_PMC_set_pmc_keyed_str(interp, parrotns, helloname, hellosub);
 
     /* Call it */
@@ -465,7 +451,7 @@
 
     /* locate function to run */
     smain = Parrot_str_new_constant(interp, "main");
-    entry = Parrot_find_global_cur(interp, smain);
+    entry = Parrot_ns_find_current_namespace_global(interp, smain);
 
     /* location of the entry */
     interp->current_cont = new_ret_continuation_pmc(interp, NULL);
@@ -530,7 +516,7 @@
 
     /* locate function to run */
     smain = Parrot_str_new_constant(interp, "main");
-    entry = Parrot_find_global_cur(interp, smain);
+    entry = Parrot_ns_find_current_namespace_global(interp, smain);
 
     /* location of the entry */
     interp->current_cont = new_ret_continuation_pmc(interp, NULL);
@@ -621,7 +607,7 @@
 
     /* locate function to run */
     smain = Parrot_str_new_constant(interp, "main");
-    entry = Parrot_find_global_cur(interp, smain);
+    entry = Parrot_ns_find_current_namespace_global(interp, smain);
 
     /* location of the entry */
     interp->current_cont = new_ret_continuation_pmc(interp, NULL);
@@ -712,7 +698,7 @@
 
     /* locate function to run */
     smain = Parrot_str_new_constant(interp, "main");
-    entry = Parrot_find_global_cur(interp, smain);
+    entry = Parrot_ns_find_current_namespace_global(interp, smain);
 
     /* location of the entry */
     interp->current_cont = new_ret_continuation_pmc(interp, NULL);
@@ -802,7 +788,7 @@
 
     /* locate function to run */
     smain = Parrot_str_new_constant(interp, "main");
-    entry = Parrot_find_global_cur(interp, smain);
+    entry = Parrot_ns_find_current_namespace_global(interp, smain);
 
     /* location of the entry */
     interp->current_cont = new_ret_continuation_pmc(interp, NULL);

Modified: branches/gsoc_past_optimization/t/src/extend.t
==============================================================================
--- branches/gsoc_past_optimization/t/src/extend.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/src/extend.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -382,7 +382,7 @@
     PMC           *sub, *arg;
 
     Parrot_pbc_load(interp, pf);
-    sub = Parrot_find_global_cur(interp, name);
+    sub = Parrot_ns_find_current_namespace_global(interp, name);
     Parrot_ext_call(interp, sub, "->");
     Parrot_eprintf(interp, "back\\n");
 
@@ -390,7 +390,7 @@
     Parrot_io_flush(interp, Parrot_io_STDERR(interp));
 
     name = Parrot_str_new_constant(interp, "_sub2");
-    sub  = Parrot_find_global_cur(interp, name);
+    sub  = Parrot_ns_find_current_namespace_global(interp, name);
     arg  = Parrot_pmc_new(interp, enum_class_String);
 
     Parrot_PMC_set_string_native(interp, arg,
@@ -440,7 +440,7 @@
     PMC           *sub, *arg;
 
     Parrot_pbc_load(interp, pf);
-    sub = Parrot_find_global_cur(interp, name);
+    sub = Parrot_ns_find_current_namespace_global(interp, name);
     Parrot_ext_call(interp, sub, "->");
     Parrot_eprintf(interp, "back\\n");
 
@@ -448,7 +448,7 @@
     Parrot_io_flush(interp, Parrot_io_STDERR(interp));
 
     name = Parrot_str_new_constant(interp, "_sub2");
-    sub  = Parrot_find_global_cur(interp, name);
+    sub  = Parrot_ns_find_current_namespace_global(interp, name);
     arg  = Parrot_pmc_new(interp, enum_class_String);
 
     Parrot_PMC_set_string_native(interp, arg,
@@ -517,7 +517,7 @@
     Parrot_Int     result;
 
     Parrot_pbc_load(interp, pf);
-    sub  = Parrot_find_global_cur(interp, name);
+    sub  = Parrot_ns_find_current_namespace_global(interp, name);
     arg  = Parrot_pmc_new(interp, enum_class_String);
 
     Parrot_PMC_set_string_native(interp, arg,
@@ -584,7 +584,7 @@
     Parrot_runloop jump_point;
 
     Parrot_pbc_load(interp, pf);
-    sub = Parrot_find_global_cur(interp, name);
+    sub = Parrot_ns_find_current_namespace_global(interp, name);
 
     if (setjmp(jump_point.resume)) {
         Parrot_eprintf(interp, "caught\\n");
@@ -714,7 +714,7 @@
     }
 
     foo_name = Parrot_str_new_constant( interp, "foo" );
-    sub      = Parrot_find_global_cur( interp, foo_name );
+    sub      = Parrot_ns_find_current_namespace_global( interp, foo_name );
 
     Parrot_ext_call(interp, sub, "->");
 
@@ -746,7 +746,7 @@
     pf = Parrot_pbc_read( interp, "$temp_pbc", 0 );
     Parrot_pbc_load( interp, pf );
 
-    sub      = Parrot_find_global_cur( interp, Parrot_str_new_constant( interp, "add" ) );
+    sub      = Parrot_ns_find_current_namespace_global( interp, Parrot_str_new_constant( interp, "add" ) );
     Parrot_ext_call(interp, sub, "II->I", 100, 200, &result);
     printf( "Result is %d.\\n", result );
 
@@ -778,7 +778,7 @@
     pf = Parrot_pbc_read( interp, "$temp_pbc", 0 );
     Parrot_pbc_load( interp, pf );
 
-    sub      = Parrot_find_global_cur( interp, Parrot_str_new_constant( interp, "add" ) );
+    sub      = Parrot_ns_find_current_namespace_global( interp, Parrot_str_new_constant( interp, "add" ) );
     Parrot_ext_call( interp, sub, "II->I", 100, 200, &result );
     printf( "Result is %d.\\n", result );
 

Modified: branches/gsoc_past_optimization/t/steps/auto/warnings-01.t
==============================================================================
--- branches/gsoc_past_optimization/t/steps/auto/warnings-01.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/steps/auto/warnings-01.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -5,7 +5,7 @@
 
 use strict;
 use warnings;
-use Test::More qw(no_plan); # tests =>  26;
+use Test::More tests =>  18;
 use Carp;
 use lib qw( lib t/configure/testlib );
 use_ok('config::auto::warnings');

Modified: branches/gsoc_past_optimization/t/steps/gen/opengl-01.t
==============================================================================
--- branches/gsoc_past_optimization/t/steps/gen/opengl-01.t	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/t/steps/gen/opengl-01.t	Wed Jun 23 00:34:17 2010	(r47770)
@@ -28,6 +28,8 @@
 my $conf = Parrot::Configure::Step::Test->new;
 $conf->include_config_results( $args );
 
+my $real_opengl_status = $conf->data->get('has_opengl');
+
 my ($pkg, $step, $result);
 my $serialized = $conf->pcfreeze();
 
@@ -42,68 +44,78 @@
 ok($result, "runstep() returned true value");
 is($step->result(), q{skipped}, "Got expected result when no 'has_opengl'" );
 
-$conf->replenish($serialized);
-
-########### verbose ###########
-
-($args, $step_list_ref) = process_options( {
-    argv => [ q{--verbose} ],
-    mode => q{configure},
-} );
-
-$conf->add_steps($pkg);
-$conf->options->set( %{$args} );
-$step = test_step_constructor_and_description($conf);
-{
-    my ($stdout, $stderr);
-    capture(
-        sub { $result = $step->runstep($conf); },
-        \$stdout,
-        \$stderr,
-    );
-    ok($result, "runstep() returned true value");
-    like( $stdout,
-        qr/Checking for OpenGL headers using the following globs/s,
-        "Got expected verbose output"
-    );
-    like( $stdout,
-        qr/Found the following OpenGL headers/s,
-        "Got expected verbose output"
-    );
-    like( $stdout,
-        qr/PASS\s+FAIL\s+IGNORE\s+HEADER/s,
-        "Got expected verbose output"
-    );
-    like( $stdout,
-        qr/unique signatures successfully translated/s,
-        "Got expected verbose output"
-    );
-}
-
-$conf->replenish($serialized);
-
-########### extra verbose ###########
-
-($args, $step_list_ref) = process_options( {
-    argv => [ q{--verbose=3} ],
-    mode => q{configure},
-} );
-
-$conf->add_steps($pkg);
-$conf->options->set( %{$args} );
-$step = test_step_constructor_and_description($conf);
-{
-    my ($stdout, $stderr);
-    capture(
-        sub { $result = $step->runstep($conf); },
-        \$stdout,
-        \$stderr,
-    );
-    ok($result, "runstep() returned true value");
-    like( $stdout,
-        qr/COUNT\s+NCI SIGNATURE/s,
-        "Got expected verbose output"
-    );
+SKIP: {
+    skip 'opengl not detected',
+    13 unless $real_opengl_status;
+
+    # The complex nature of gen::opengl::runstep() makes it difficult to write
+    # tests that will DTRT when OpenGL is not really present on this machine.
+    # In particular, tests for verbose output will fail when
+    # $real_opengl_status is false.  So we'll SKIP.
+
+    $conf->replenish($serialized);
+
+    ########### verbose ###########
+
+    ($args, $step_list_ref) = process_options( {
+        argv => [ q{--verbose} ],
+        mode => q{configure},
+    } );
+
+    $conf->add_steps($pkg);
+    $conf->options->set( %{$args} );
+    $step = test_step_constructor_and_description($conf);
+    {
+        my ($stdout, $stderr);
+        capture(
+            sub { $result = $step->runstep($conf); },
+            \$stdout,
+            \$stderr,
+        );
+        ok($result, "runstep() returned true value");
+        like( $stdout,
+            qr/Checking for OpenGL headers using the following globs/s,
+            "Got expected verbose output"
+        );
+        like( $stdout,
+            qr/Found the following OpenGL headers/s,
+            "Got expected verbose output"
+        );
+        like( $stdout,
+            qr/PASS\s+FAIL\s+IGNORE\s+HEADER/s,
+            "Got expected verbose output"
+        );
+        like( $stdout,
+            qr/unique signatures successfully translated/s,
+            "Got expected verbose output"
+        );
+    }
+
+    $conf->replenish($serialized);
+
+    ########### extra verbose ###########
+
+    ($args, $step_list_ref) = process_options( {
+        argv => [ q{--verbose=3} ],
+        mode => q{configure},
+    } );
+
+    $conf->add_steps($pkg);
+    $conf->options->set( %{$args} );
+    $step = test_step_constructor_and_description($conf);
+    {
+        my ($stdout, $stderr);
+        capture(
+            sub { $result = $step->runstep($conf); },
+            \$stdout,
+            \$stderr,
+        );
+        ok($result, "runstep() returned true value");
+        like( $stdout,
+            qr/COUNT\s+NCI SIGNATURE/s,
+            "Got expected verbose output"
+        );
+    }
 }
 
 pass("Completed all tests in $0");

Copied: branches/gsoc_past_optimization/t/tools/parrot_config.t (from r47769, trunk/t/tools/parrot_config.t)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/gsoc_past_optimization/t/tools/parrot_config.t	Wed Jun 23 00:34:17 2010	(r47770, copy of r47769, trunk/t/tools/parrot_config.t)
@@ -0,0 +1,84 @@
+#! perl
+# Copyright (C) 2010, Parrot Foundation.
+# $Id$
+
+=head1 NAME
+
+t/tools/parrot_config.t - test parrot_config
+
+=head1 SYNOPSIS
+
+    % prove t/tools/parrot_config.t - test parrot_config
+
+=head1 DESCRIPTION
+
+Tests the C<parrot_config> tool.
+
+=cut
+
+use strict;
+use warnings;
+use lib qw(lib);
+
+use Test::More;
+use IO::File ();
+use Parrot::Config;
+use Parrot::Test;
+use File::Spec;
+
+my ($path, $exefile);
+
+BEGIN {
+    $path = File::Spec->catfile( ".", "parrot_config" );
+    $exefile = $path . $PConfig{exe};
+    unless ( -f $exefile ) {
+        plan skip_all => "$exefile hasn't been built yet.";
+        exit(0);
+    }
+    plan tests => 3;
+}
+
+config_output_like(
+    'pmc_names',
+     qr/\bHash\b/,
+     'parrot_config basic sanity'
+);
+
+config_output_like(
+    'non_existant_key',
+     qr/no such key: 'non_existant_key'/,
+     'missing keys'
+);
+
+config_output_like(
+    'slash has_icu',
+    qr/slash \s+ => \s+ '.' \n has_icu \s+ => \s+ '.'/x,
+    'multiple keys'
+);
+
+=head1 HELPER SUBROUTINES
+
+=head2 dump_output_like
+
+    config_output_like($keys, /regexp/, $description);
+
+Runs parrot_config with $keys as the argument and verifies the output.
+
+=cut
+
+sub config_output_like {
+    my ($options, $snippet, $desc)  = @_;
+
+    my $out = `$exefile $options`;
+
+    like( $out, $snippet, $desc );
+
+    return;
+}
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

Modified: branches/gsoc_past_optimization/tools/dev/fetch_languages.pl
==============================================================================
--- branches/gsoc_past_optimization/tools/dev/fetch_languages.pl	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/tools/dev/fetch_languages.pl	Wed Jun 23 00:34:17 2010	(r47770)
@@ -229,8 +229,8 @@
 
     {
         name       => 'pir',
-        scm        => 'SVN',
-        repository => 'https://svn.parrot.org/languages/pir/trunk'
+        scm        => 'GIT',
+        repository => 'http://github.com/bacek/pir.git'
     },
 
     {

Modified: branches/gsoc_past_optimization/tools/dev/mk_inno.pl
==============================================================================
--- branches/gsoc_past_optimization/tools/dev/mk_inno.pl	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/tools/dev/mk_inno.pl	Wed Jun 23 00:34:17 2010	(r47770)
@@ -34,6 +34,7 @@
 } if ($PConfig{has_icu});
 
 my %dll = (
+    gccversion   => [ 'libgcc_s_sjlj-1.dll' ],
     HAS_GETTEXT  => [ 'libintl3.dll', 'libiconv2.dll' ],
     HAS_PCRE     => [ 'pcre3.dll' ],
     HAS_READLINE => [ 'readline5.dll' ],

Modified: branches/gsoc_past_optimization/tools/dev/mk_manifest_and_skip.pl
==============================================================================
--- branches/gsoc_past_optimization/tools/dev/mk_manifest_and_skip.pl	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/tools/dev/mk_manifest_and_skip.pl	Wed Jun 23 00:34:17 2010	(r47770)
@@ -12,7 +12,6 @@
 
 if (-e '.git') {
     print "Sorry, this script is not compatible with git-svn\n";
-    print "Patches Welcome!\n";
     exit 1;
 }
 

Modified: branches/gsoc_past_optimization/tools/dev/nci_thunk_gen.pir
==============================================================================
--- branches/gsoc_past_optimization/tools/dev/nci_thunk_gen.pir	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/tools/dev/nci_thunk_gen.pir	Wed Jun 23 00:34:17 2010	(r47770)
@@ -859,7 +859,7 @@
            "sig_char": "S",
            "temp_tmpl": "char *t_%i; STRING *ts_%i",
            "fill_params_tmpl": ", &ts_%i",
-           "preamble_tmpl": "t_%i = ts_%i ? Parrot_str_to_cstring(interp, ts_%i) : (char *)NULL;",
+           "preamble_tmpl": "t_%i = STRING_IS_NULL(ts_%i) ? (char *)NULL : Parrot_str_to_cstring(interp, ts_%i);",
            "postamble_tmpl": "if (t_%i) Parrot_str_free_cstring(t_%i);" },
     "v": { "as_proto": "void",
            "return_type": "void *",
@@ -887,7 +887,7 @@
            "sig_char": "S",
            "fill_params_tmpl": ", &ts_%i",
            "temp_tmpl": "char *t_%i; STRING *ts_%i",
-           "preamble_tmpl": "t_%i = ts_%i ? Parrot_str_to_cstring(interp, ts_%i) : (char *) NULL;",
+           "preamble_tmpl": "t_%i = STRING_IS_NULL(ts_%i) ? (char *) NULL : Parrot_str_to_cstring(interp, ts_%i);",
            "call_param_tmpl": "&t_%i",
            "postamble_tmpl": "if (t_%i) Parrot_str_free_cstring(t_%i);" },
     "2": { "as_proto": "short *",

Modified: branches/gsoc_past_optimization/tools/dev/pprof2cg.pl
==============================================================================
--- branches/gsoc_past_optimization/tools/dev/pprof2cg.pl	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/tools/dev/pprof2cg.pl	Wed Jun 23 00:34:17 2010	(r47770)
@@ -43,7 +43,7 @@
 
 =cut
 
-main(\@ARGV);
+main(@ARGV);
 
 =head1 INTERNAL DATA STRUCTURES
 
@@ -117,9 +117,11 @@
 =cut
 
 sub main {
-    my $argv      = shift;
+    my $filename  = shift;
     my $stats     = {};
-    my $filename  = $argv->[0];
+
+    die "Usage: $0 filename\n"
+        unless defined $filename;
 
     $stats->{global_stats}{total_time} = 0;
 
@@ -129,8 +131,6 @@
 
     close($in_fh) or die "couldn't close $filename: $!";
 
-    #print_stats($stats);
-
     unless ($filename =~ s/pprof/out/) {
         $filename = "$filename.out";
     }

Modified: branches/gsoc_past_optimization/tools/dev/vgp
==============================================================================
--- branches/gsoc_past_optimization/tools/dev/vgp	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/tools/dev/vgp	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1,2 +1,2 @@
 #! /bin/sh
-valgrind --suppressions=tools/dev/parrot.supp --num-callers=500 --leak-check=full --leak-resolution=high --show-reachable=yes ./parrot --leak-test $@
+valgrind --suppressions=tools/dev/parrot.supp --num-callers=50 --leak-check=full --leak-resolution=high --show-reachable=yes ./parrot --leak-test $@

Modified: branches/gsoc_past_optimization/tools/util/parrot-config.pir
==============================================================================
--- branches/gsoc_past_optimization/tools/util/parrot-config.pir	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/tools/util/parrot-config.pir	Wed Jun 23 00:34:17 2010	(r47770)
@@ -92,7 +92,7 @@
     .include 'stdio.pasm'
     $P1 = $P0.'stdhandle'(.PIO_STDERR_FILENO)
     $P1.'print'($S0)
-    $P1.'print'(" [ <config-key> | --dump | --help ]\n")
+    $P1.'print'(" [ <config-key> [ <config-key> ... ] | --dump | --help ]\n")
     exit 1
 .end
 

Modified: branches/gsoc_past_optimization/tools/util/release.json
==============================================================================
--- branches/gsoc_past_optimization/tools/util/release.json	Tue Jun 22 22:37:44 2010	(r47769)
+++ branches/gsoc_past_optimization/tools/util/release.json	Wed Jun 23 00:34:17 2010	(r47770)
@@ -1,9 +1,9 @@
 {
-    "release.version"  : "2.4.0",
-    "release.name"     : "Sulfur Crest",
+    "release.version"  : "2.5.0",
+    "release.name"     : "Cheops",
     "release.day"      : "Tuesday",
-    "release.date"     : "18 May 2010",
-    "release.nextdate" : "15 June 2010",
+    "release.date"     : "15 June 2010",
+    "release.nextdate" : "20 July 2010",
 
     "web.root"         : "http://parrot.org/",
     "web.source"       : "download",
@@ -11,13 +11,12 @@
     "web.repository"   : "https://svn.parrot.org/parrot/trunk/",
 
     "bugday.day"       : "Saturday",
-    "bugday.date"      : "12 June 2010",
+    "bugday.date"      : "17 July 2010",
 
     "wiki.root"        : "https://trac.parrot.org/parrot/wiki/",
-    "wiki.bugday"      : "bug_day_2010_06_12",
+    "wiki.bugday"      : "bug_day_2010_07_17",
 
-    "cpan.search"      : "http://search.cpan.org/dist/parrot",
-    "ftp.path"         : "ftp://ftp.parrot.org/pub/parrot/releases/devel/2.4.0/",
+    "ftp.path"         : "ftp://ftp.parrot.org/pub/parrot/releases/devel/2.5.0/",
     "subversion.root"  : "http://subversion.apache.org/",
     "svk.root"         : "http://svk.bestpractical.com/"
 }


More information about the parrot-commits mailing list